mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
Compare commits
72 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5835e5f72c | ||
|
|
7350e94662 | ||
|
|
d5d2d5bf82 | ||
|
|
14d1f6cde2 | ||
|
|
9f17b917f7 | ||
|
|
c046b48ee9 | ||
|
|
cb6cf7c01f | ||
|
|
cd9b07ca0a | ||
|
|
eb435bc6b0 | ||
|
|
c9ca613348 | ||
|
|
771855fd07 | ||
|
|
e6967bbc07 | ||
|
|
095d8ca719 | ||
|
|
9c089bed37 | ||
|
|
7e94c6f1c9 | ||
|
|
df44296ee0 | ||
|
|
da42b6f3b2 | ||
|
|
264756d986 | ||
|
|
49d9887d03 | ||
|
|
39f22dec4c | ||
|
|
69befbc97b | ||
|
|
820ed1c457 | ||
|
|
c0c6a6dc4b | ||
|
|
a410709f92 | ||
|
|
3b20e85ff0 | ||
|
|
5d8e7a9fa8 | ||
|
|
63ad0760cd | ||
|
|
2ea29ef8cb | ||
|
|
f34baa389c | ||
|
|
41db2f7fe7 | ||
|
|
2db04225a7 | ||
|
|
b6004117e6 | ||
|
|
fd73b28061 | ||
|
|
da39c03a6f | ||
|
|
ba721c9db6 | ||
|
|
9b707cf93d | ||
|
|
a73b42409f | ||
|
|
e743b2c699 | ||
|
|
107c44df88 | ||
|
|
5e19c420e7 | ||
|
|
2f55324708 | ||
|
|
6cc6c34c4b | ||
|
|
3d64fbef49 | ||
|
|
539a0198f3 | ||
|
|
9beebac7fc | ||
|
|
50567fd967 | ||
|
|
3ee004ce4e | ||
|
|
a58fd7559c | ||
|
|
73d738887a | ||
|
|
e96199dc37 | ||
|
|
f5cde10d62 | ||
|
|
1d5df08e78 | ||
|
|
869c2726bb | ||
|
|
2e663df42a | ||
|
|
1c33494547 | ||
|
|
4acaefe9c3 | ||
|
|
8c3f4c06df | ||
|
|
ed589f4b51 | ||
|
|
0a82828d2e | ||
|
|
13c1d049fc | ||
|
|
8c61e95a5b | ||
|
|
a6fa6e19d0 | ||
|
|
8273bdf70f | ||
|
|
5267de8b87 | ||
|
|
6036a792e5 | ||
|
|
1341db0812 | ||
|
|
c16a4134c7 | ||
|
|
771047ddd7 | ||
|
|
718d67f20c | ||
|
|
d18a510310 | ||
|
|
3a3da1c6f1 | ||
|
|
00647e4963 |
@@ -1,8 +1,50 @@
|
||||
1.71 (2013-10-16):
|
||||
1.73 Beta 2 ():
|
||||
Fixed issue MR-619 - Keyboard shortcuts stop working after locking the screen with Win+L
|
||||
Added support for importing files from PuTTY Connection Manager.
|
||||
Improved the import and export functionality.
|
||||
|
||||
1.73 Beta 1 (2013-11-19):
|
||||
Added feature MR-16 - Add keyboard shortcuts to switch between tabs
|
||||
Added feature MR-141 - Add a default protocol option
|
||||
Added feature MR-212 - Add option to connect without credentials
|
||||
Added feature MR-512 - Add support for importing files from Remote Desktop Connection Manager
|
||||
Added feature MR-547 - Add support for Xming Portable PuTTY
|
||||
Made improvement MR-250 - Show the name of the selected connection tab in the title of the window
|
||||
Made improvement MR-367 - Make the 'Connect' button on the 'Quick Connect' toolbar a forced dropdown
|
||||
Made improvement MR-419 - Password prompt dialog should have a meaningful window title
|
||||
Made improvement MR-486 - Allow escaping of variable names for external tools
|
||||
Made improvement MR-590 - Make panels docked to the edge of the window keep their size
|
||||
Fixed issue MR-187 - F7 keyboard shortcut for New Folder conflicts with remote connections
|
||||
Fixed issue MR-523 - Changes to external tools are not saved until exiting the program
|
||||
Fixed issue MR-556 - Export fails when overwriting an existing file
|
||||
Fixed issue MR-594 - Crash on startup if write access is denied to the IE browser emulation registry key
|
||||
Fixed issue MR-603 - Some configuration options are still shown even when inheritance is enabled
|
||||
Added "Reset" to config panel context menu to allow resetting some config settings to their default value.
|
||||
Added and improved menu icons.
|
||||
Removed misleading log messages about RD Gateway support.
|
||||
Removed invalid "Site" configuration option from PuTTY Saved Sessions.
|
||||
Fixed PuTTY Saved Sessions still showing if all saved sessions are removed.
|
||||
Fixed config panel showing settings from previously loaded connection file after loading a new one.
|
||||
Improved handling of variables in external tool arguments.
|
||||
|
||||
1.72 (2013-11-13):
|
||||
Fixed issue MR-592 - Unable to run VBS script as an external tool
|
||||
Fixed issue MR-596 - Incorrect escaping of quotation marks in external tool arguments
|
||||
|
||||
1.71 (2013-10-29):
|
||||
Fixed issue MR-574 - Crash when retrieving RDP session list if eolwtscom.dll is not registered
|
||||
Fixed issue MR-578 - Connections file is reset
|
||||
Fixed log file not showing operating system version on Windows XP and Windows Server 2003.
|
||||
Fixed the wrong connections file opening on startup under certain conditions.
|
||||
Fixed checking for updates even when disabled.
|
||||
Improved error reporting when loading connections files.
|
||||
Removed warning message when mRemoteNG is started for the first time about new connections file being created.
|
||||
|
||||
1.71 Release Candidate 2 (2013-10-16):
|
||||
Fixed issue MR-560 - Cannot Auto-Update With Open Connections: Unable to find an entry point named 'TaskDialogIndirect' in DLL 'ComCtl32'
|
||||
Fixed issue MR-565 - Double Folder keep heritage on the initial Folder
|
||||
Fixed issue MR-566 - Typo in German UI Automatic Update Settings
|
||||
Fixed duplicated folders possibly being named "New Connection" instead of the original folder's name
|
||||
Fixed duplicated folders possibly being named "New Connection" instead of the original folder's name.
|
||||
|
||||
1.71 Release Candidate 1 (2013-10-01):
|
||||
Fixed issue MR-495 - Having a negative range in port scan creates memory exhaustion.
|
||||
|
||||
@@ -4,6 +4,7 @@ Contributors
|
||||
Jason Barbier
|
||||
Wiktor Beryt
|
||||
Lionel Caignec
|
||||
Ruben d'Arco
|
||||
Felix Deimel
|
||||
Holger Henke
|
||||
Tom Hiller
|
||||
@@ -35,6 +36,10 @@ Copyright
|
||||
Copyright <20> 2010-2011 Brandon Hansen
|
||||
http://nsis.sourceforge.net/DotNetVer
|
||||
|
||||
Hotkey Selection Control for .NET
|
||||
Copyright <20> 2006 Thomas Backman
|
||||
http://www.codeproject.com/Articles/15085/A-simple-hotkey-selection-control-for-NET
|
||||
|
||||
|
||||
Included Components
|
||||
===================
|
||||
|
||||
10
Local.testsettings
Normal file
10
Local.testsettings
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<TestSettings name="Local" id="2a25bb82-f5ff-4a67-b5e9-c6aaa54d1e80" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
|
||||
<Description>These are default test settings for a local test run.</Description>
|
||||
<Deployment enabled="false" />
|
||||
<Execution>
|
||||
<TestTypeSpecific />
|
||||
<AgentRule name="Execution Agents">
|
||||
</AgentRule>
|
||||
</Execution>
|
||||
</TestSettings>
|
||||
331
SharedLibraryNG/HotkeyControl.cs
Normal file
331
SharedLibraryNG/HotkeyControl.cs
Normal file
@@ -0,0 +1,331 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
|
||||
//
|
||||
// Hotkey selection control, written by serenity@exscape.org, 2006-08-03
|
||||
// Please mail me if you find a bug.
|
||||
//
|
||||
|
||||
namespace SharedLibraryNG
|
||||
{
|
||||
/// <summary>
|
||||
/// A simple control that allows the user to select pretty much any valid hotkey combination
|
||||
/// </summary>
|
||||
public class HotkeyControl : TextBox
|
||||
{
|
||||
private const string KeySeparator = " + ";
|
||||
|
||||
// These variables store the current hotkey and modifier(s)
|
||||
private Keys _keyCode = Keys.None;
|
||||
private Keys _modifiers = Keys.None;
|
||||
|
||||
// ArrayLists used to enforce the use of proper modifiers.
|
||||
// Shift+A isn't a valid hotkey, for instance, as it would screw up when the user is typing.
|
||||
private readonly ArrayList _needNonShiftModifier;
|
||||
private readonly ArrayList _needNonAltGrModifier;
|
||||
|
||||
private readonly ContextMenu _emptyContextMenu = new ContextMenu();
|
||||
|
||||
/// <summary>
|
||||
/// Used to make sure that there is no right-click menu available
|
||||
/// </summary>
|
||||
public override ContextMenu ContextMenu
|
||||
{
|
||||
get
|
||||
{
|
||||
return _emptyContextMenu;
|
||||
}
|
||||
// ReSharper disable once ValueParameterNotUsed
|
||||
set
|
||||
{
|
||||
base.ContextMenu = _emptyContextMenu;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Forces the control to be non-multiline
|
||||
/// </summary>
|
||||
public override bool Multiline
|
||||
{
|
||||
get
|
||||
{
|
||||
return base.Multiline;
|
||||
}
|
||||
// ReSharper disable once ValueParameterNotUsed
|
||||
set
|
||||
{
|
||||
// Ignore what the user wants; force Multiline to false
|
||||
base.Multiline = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new HotkeyControl
|
||||
/// </summary>
|
||||
public HotkeyControl()
|
||||
{
|
||||
// Handle events that occurs when keys are pressed
|
||||
KeyUp += HotkeyControl_KeyUp;
|
||||
|
||||
// Fill the ArrayLists that contain all invalid hotkey combinations
|
||||
_needNonShiftModifier = new ArrayList();
|
||||
_needNonAltGrModifier = new ArrayList();
|
||||
PopulateModifierLists();
|
||||
}
|
||||
|
||||
protected override void OnCreateControl()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
|
||||
ContextMenu = _emptyContextMenu; // Disable right-clicking
|
||||
Multiline = false;
|
||||
Text = "None";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Populates the ArrayLists specifying disallowed hotkeys
|
||||
/// such as Shift+A, Ctrl+Alt+4 (would produce a dollar sign) etc
|
||||
/// </summary>
|
||||
private void PopulateModifierLists()
|
||||
{
|
||||
// Shift + 0 - 9, A - Z
|
||||
for (var k = Keys.D0; k <= Keys.Z; k++)
|
||||
_needNonShiftModifier.Add((int)k);
|
||||
|
||||
// Shift + Numpad keys
|
||||
for (var k = Keys.NumPad0; k <= Keys.NumPad9; k++)
|
||||
_needNonShiftModifier.Add((int)k);
|
||||
|
||||
// Shift + Misc (,;<./ etc)
|
||||
for (var k = Keys.Oem1; k <= Keys.OemBackslash; k++)
|
||||
_needNonShiftModifier.Add((int)k);
|
||||
|
||||
// Misc keys that we can't loop through
|
||||
_needNonShiftModifier.Add((int)Keys.Insert);
|
||||
_needNonShiftModifier.Add((int)Keys.Help);
|
||||
_needNonShiftModifier.Add((int)Keys.Multiply);
|
||||
_needNonShiftModifier.Add((int)Keys.Add);
|
||||
_needNonShiftModifier.Add((int)Keys.Subtract);
|
||||
_needNonShiftModifier.Add((int)Keys.Divide);
|
||||
_needNonShiftModifier.Add((int)Keys.Decimal);
|
||||
_needNonShiftModifier.Add((int)Keys.Return);
|
||||
_needNonShiftModifier.Add((int)Keys.Escape);
|
||||
_needNonShiftModifier.Add((int)Keys.NumLock);
|
||||
_needNonShiftModifier.Add((int)Keys.Scroll);
|
||||
_needNonShiftModifier.Add((int)Keys.Pause);
|
||||
|
||||
// Ctrl+Alt + 0 - 9
|
||||
for (var k = Keys.D0; k <= Keys.D9; k++)
|
||||
_needNonAltGrModifier.Add((int)k);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fires when all keys are released. If the current hotkey isn't valid, reset it.
|
||||
/// Otherwise, do nothing and keep the text and hotkey as it was.
|
||||
/// </summary>
|
||||
void HotkeyControl_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (_keyCode == Keys.None && ModifierKeys == Keys.None) ResetHotkey();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles some misc keys, such as Ctrl+Delete and Shift+Insert
|
||||
/// </summary>
|
||||
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
||||
{
|
||||
var keyCode = keyData & Keys.KeyCode;
|
||||
var modifiers = keyData & Keys.Modifiers;
|
||||
|
||||
if (keyData == Keys.Back || keyData == Keys.Delete)
|
||||
{
|
||||
ResetHotkey();
|
||||
return true;
|
||||
}
|
||||
|
||||
_keyCode = keyCode;
|
||||
_modifiers = modifiers;
|
||||
Redraw();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clears the current hotkey and resets the TextBox
|
||||
/// </summary>
|
||||
public void ResetHotkey()
|
||||
{
|
||||
_keyCode = Keys.None;
|
||||
_modifiers = Keys.None;
|
||||
Text = "None";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Used to get/set the hotkey (e.g. Keys.A)
|
||||
/// </summary>
|
||||
public Keys KeyCode
|
||||
{
|
||||
get
|
||||
{
|
||||
return _keyCode;
|
||||
}
|
||||
set
|
||||
{
|
||||
_keyCode = value;
|
||||
Redraw(false);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Used to get/set the modifier keys (e.g. Keys.Alt | Keys.Control)
|
||||
/// </summary>
|
||||
public Keys HotkeyModifiers
|
||||
{
|
||||
get
|
||||
{
|
||||
return _modifiers;
|
||||
}
|
||||
set
|
||||
{
|
||||
_modifiers = value;
|
||||
Redraw(false);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Redraws the TextBox when necessary.
|
||||
/// </summary>
|
||||
/// <param name="validate">Specifies whether this function was called by the Hotkey/HotkeyModifiers properties or by the user.</param>
|
||||
private void Redraw(bool validate = true)
|
||||
{
|
||||
// Only validate input if it comes from the user
|
||||
if (validate)
|
||||
{
|
||||
// No modifier or shift only, AND a hotkey that needs another modifier
|
||||
if ((_modifiers == Keys.Shift || _modifiers == Keys.None) &&
|
||||
_needNonShiftModifier.Contains((int) _keyCode))
|
||||
{
|
||||
if (_modifiers == Keys.None)
|
||||
{
|
||||
// Set Ctrl+Alt as the modifier unless Ctrl+Alt+<key> won't work...
|
||||
if (_needNonAltGrModifier.Contains((int) _keyCode) == false)
|
||||
_modifiers = Keys.Alt | Keys.Control;
|
||||
else // ... in that case, use Shift+Alt instead.
|
||||
_modifiers = Keys.Alt | Keys.Shift;
|
||||
}
|
||||
else
|
||||
{
|
||||
// User pressed Shift and an invalid key (e.g. a letter or a number),
|
||||
// that needs another set of modifier keys
|
||||
_keyCode = Keys.None;
|
||||
Text = _modifiers + " + Invalid Key";
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Check all Ctrl+Alt keys
|
||||
if ((_modifiers == (Keys.Alt | Keys.Control)) &&
|
||||
_needNonAltGrModifier.Contains((int) _keyCode))
|
||||
{
|
||||
// Ctrl+Alt+4 etc won't work; reset hotkey and tell the user
|
||||
_keyCode = Keys.None;
|
||||
Text = _modifiers + " + Invalid Key";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Don't allow modifiers keys for _keyCode
|
||||
if (_keyCode == Keys.ShiftKey ||
|
||||
_keyCode == Keys.LShiftKey ||
|
||||
_keyCode == Keys.RShiftKey ||
|
||||
_keyCode == Keys.ControlKey ||
|
||||
_keyCode == Keys.LControlKey ||
|
||||
_keyCode == Keys.RControlKey ||
|
||||
_keyCode == Keys.Menu ||
|
||||
_keyCode == Keys.LMenu ||
|
||||
_keyCode == Keys.RMenu ||
|
||||
_keyCode == Keys.LWin ||
|
||||
_keyCode == Keys.RWin)
|
||||
_keyCode = Keys.None;
|
||||
|
||||
if (_modifiers == Keys.None)
|
||||
{
|
||||
if (_keyCode == Keys.None)
|
||||
{
|
||||
ResetHotkey();
|
||||
return;
|
||||
}
|
||||
|
||||
// We get here if we've got a hotkey that is valid without a modifier,
|
||||
// like F1-F12, Media-keys etc.
|
||||
Text = _keyCode.ToString();
|
||||
return;
|
||||
}
|
||||
|
||||
Text = string.Join(KeySeparator, new[] { KeysToString(_modifiers), KeysToString(_keyCode) });
|
||||
}
|
||||
|
||||
public static string KeysToString(Keys keys)
|
||||
{
|
||||
if (keys == Keys.None) return "None";
|
||||
|
||||
var modifiers = (keys & Keys.Modifiers);
|
||||
var keyCode = (keys & Keys.KeyCode);
|
||||
|
||||
var strings = new List<string>();
|
||||
|
||||
if (modifiers != 0)
|
||||
{
|
||||
var modifierStrings = new List<string>(modifiers.ToString().Replace(", ", ",").Split(','));
|
||||
modifierStrings.Sort(new KeyModifierComparer());
|
||||
strings.AddRange(modifierStrings);
|
||||
}
|
||||
|
||||
if (keyCode != 0)
|
||||
{
|
||||
var keyString = keyCode.ToString();
|
||||
var keyHashtable = new Dictionary<string, string>
|
||||
{
|
||||
{"Next", "PageDown"},
|
||||
{"Oemcomma", ","},
|
||||
{"OemMinus", "-"},
|
||||
{"OemOpenBrackets", "["},
|
||||
{"OemPeriod", "."},
|
||||
{"Oemplus", "="},
|
||||
{"OemQuestion", "/"},
|
||||
{"Oemtilde", "`"},
|
||||
{"D0", "0"},
|
||||
{"D1", "1"},
|
||||
{"D2", "2"},
|
||||
{"D3", "3"},
|
||||
{"D4", "4"},
|
||||
{"D5", "5"},
|
||||
{"D6", "6"},
|
||||
{"D7", "7"},
|
||||
{"D8", "8"},
|
||||
{"D9", "9"},
|
||||
};
|
||||
if (keyHashtable.ContainsKey(keyString)) keyString = keyHashtable[keyString];
|
||||
strings.Add(keyString);
|
||||
}
|
||||
|
||||
return string.Join(KeySeparator, strings.ToArray());
|
||||
}
|
||||
|
||||
private class KeyModifierComparer : IComparer<string>
|
||||
{
|
||||
private static readonly List<string> ModifierOrder = new List<string>
|
||||
{
|
||||
"control",
|
||||
"alt",
|
||||
"shift",
|
||||
};
|
||||
|
||||
public int Compare(string x, string y)
|
||||
{
|
||||
var xIndex = ModifierOrder.IndexOf(x.ToLowerInvariant());
|
||||
var yIndex = ModifierOrder.IndexOf(y.ToLowerInvariant());
|
||||
return xIndex - yIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
258
SharedLibraryNG/KeyboardHook.cs
Normal file
258
SharedLibraryNG/KeyboardHook.cs
Normal file
@@ -0,0 +1,258 @@
|
||||
//
|
||||
// Based on code from Stephen Toub's MSDN blog at
|
||||
// http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SharedLibraryNG
|
||||
{
|
||||
public class KeyboardHook
|
||||
{
|
||||
// ReSharper disable InconsistentNaming
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool PostMessage(IntPtr hWnd, Int32 Msg, IntPtr wParam, HookKeyMsgData lParam);
|
||||
// ReSharper restore InconsistentNaming
|
||||
|
||||
[Flags]
|
||||
public enum ModifierKeys
|
||||
{
|
||||
None = 0x0000,
|
||||
Shift = 0x0001,
|
||||
LeftShift = 0x002,
|
||||
RightShift = 0x004,
|
||||
Control = 0x0008,
|
||||
LeftControl = 0x010,
|
||||
RightControl = 0x20,
|
||||
Alt = 0x0040,
|
||||
LeftAlt = 0x0080,
|
||||
RightAlt = 0x0100,
|
||||
Win = 0x0200,
|
||||
LeftWin = 0x0400,
|
||||
RightWin = 0x0800,
|
||||
}
|
||||
|
||||
protected class KeyNotificationEntry
|
||||
: IEquatable<KeyNotificationEntry>
|
||||
{
|
||||
public IntPtr WindowHandle;
|
||||
public Int32 KeyCode;
|
||||
public ModifierKeys ModifierKeys;
|
||||
public Boolean Block;
|
||||
|
||||
public bool Equals(KeyNotificationEntry obj)
|
||||
{
|
||||
return (WindowHandle == obj.WindowHandle &&
|
||||
KeyCode == obj.KeyCode &&
|
||||
ModifierKeys == obj.ModifierKeys &&
|
||||
Block == obj.Block);
|
||||
}
|
||||
}
|
||||
|
||||
public const string HookKeyMsgName = "HOOKKEYMSG-{56BE0940-34DA-11E1-B308-C6714824019B}";
|
||||
private static Int32 _hookKeyMsg;
|
||||
public static Int32 HookKeyMsg
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_hookKeyMsg == 0)
|
||||
{
|
||||
_hookKeyMsg = Win32.RegisterWindowMessage(HookKeyMsgName).ToInt32();
|
||||
if (_hookKeyMsg == 0)
|
||||
throw new Win32Exception(Marshal.GetLastWin32Error());
|
||||
}
|
||||
return _hookKeyMsg;
|
||||
}
|
||||
}
|
||||
|
||||
// this is a custom structure that will be passed to
|
||||
// the requested hWnd via a WM_APP_HOOKKEYMSG message
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public class HookKeyMsgData
|
||||
{
|
||||
public Int32 KeyCode;
|
||||
public ModifierKeys ModifierKeys;
|
||||
public Boolean WasBlocked;
|
||||
}
|
||||
|
||||
private static int _referenceCount;
|
||||
private static IntPtr _hook;
|
||||
private static readonly Win32.LowLevelKeyboardProcDelegate LowLevelKeyboardProcStaticDelegate = LowLevelKeyboardProc;
|
||||
private static readonly List<KeyNotificationEntry> NotificationEntries = new List<KeyNotificationEntry>();
|
||||
|
||||
public KeyboardHook()
|
||||
{
|
||||
_referenceCount++;
|
||||
SetHook();
|
||||
}
|
||||
|
||||
~KeyboardHook()
|
||||
{
|
||||
_referenceCount--;
|
||||
if (_referenceCount < 1) UnsetHook();
|
||||
}
|
||||
|
||||
private static void SetHook()
|
||||
{
|
||||
if (_hook != IntPtr.Zero) return;
|
||||
|
||||
var curProcess = Process.GetCurrentProcess();
|
||||
var curModule = curProcess.MainModule;
|
||||
|
||||
var hook = Win32.SetWindowsHookEx(Win32.WH_KEYBOARD_LL, LowLevelKeyboardProcStaticDelegate, Win32.GetModuleHandle(curModule.ModuleName), 0);
|
||||
if (hook == IntPtr.Zero)
|
||||
throw new Win32Exception(Marshal.GetLastWin32Error());
|
||||
|
||||
_hook = hook;
|
||||
}
|
||||
|
||||
private static void UnsetHook()
|
||||
{
|
||||
if (_hook == IntPtr.Zero) return;
|
||||
|
||||
Win32.UnhookWindowsHookEx(_hook);
|
||||
_hook = IntPtr.Zero;
|
||||
}
|
||||
|
||||
private static IntPtr LowLevelKeyboardProc(Int32 nCode, IntPtr wParam, Win32.KBDLLHOOKSTRUCT lParam)
|
||||
{
|
||||
var wParamInt = wParam.ToInt32();
|
||||
var result = 0;
|
||||
|
||||
if (nCode == Win32.HC_ACTION)
|
||||
{
|
||||
switch (wParamInt)
|
||||
{
|
||||
case Win32.WM_KEYDOWN:
|
||||
case Win32.WM_SYSKEYDOWN:
|
||||
case Win32.WM_KEYUP:
|
||||
case Win32.WM_SYSKEYUP:
|
||||
result = OnKey(wParamInt, lParam);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (result != 0) return new IntPtr(result);
|
||||
|
||||
return Win32.CallNextHookEx(_hook, nCode, wParam, lParam);
|
||||
}
|
||||
|
||||
private static int OnKey(Int32 msg, Win32.KBDLLHOOKSTRUCT key)
|
||||
{
|
||||
var result = 0;
|
||||
|
||||
foreach (var notificationEntry in NotificationEntries)
|
||||
if (GetFocusWindow() == notificationEntry.WindowHandle && notificationEntry.KeyCode == key.vkCode)
|
||||
{
|
||||
var modifierKeys = GetModifierKeyState();
|
||||
if (!ModifierKeysMatch(notificationEntry.ModifierKeys, modifierKeys)) continue;
|
||||
|
||||
var wParam = new IntPtr(msg);
|
||||
var lParam = new HookKeyMsgData
|
||||
{
|
||||
KeyCode = key.vkCode,
|
||||
ModifierKeys = modifierKeys,
|
||||
WasBlocked = notificationEntry.Block,
|
||||
};
|
||||
|
||||
if (!PostMessage(notificationEntry.WindowHandle, HookKeyMsg, wParam, lParam))
|
||||
throw new Win32Exception(Marshal.GetLastWin32Error());
|
||||
|
||||
if (notificationEntry.Block) result = 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static IntPtr GetFocusWindow()
|
||||
{
|
||||
var guiThreadInfo = new Win32.GUITHREADINFO();
|
||||
if (!Win32.GetGUIThreadInfo(0, guiThreadInfo))
|
||||
throw new Win32Exception(Marshal.GetLastWin32Error());
|
||||
return Win32.GetAncestor(guiThreadInfo.hwndFocus, Win32.GA_ROOT);
|
||||
}
|
||||
|
||||
protected static Dictionary<Int32, ModifierKeys> ModifierKeyTable = new Dictionary<Int32, ModifierKeys>
|
||||
{
|
||||
{ Win32.VK_SHIFT, ModifierKeys.Shift },
|
||||
{ Win32.VK_LSHIFT, ModifierKeys.LeftShift },
|
||||
{ Win32.VK_RSHIFT, ModifierKeys.RightShift },
|
||||
{ Win32.VK_CONTROL, ModifierKeys.Control },
|
||||
{ Win32.VK_LCONTROL, ModifierKeys.LeftControl },
|
||||
{ Win32.VK_RCONTROL, ModifierKeys.RightControl },
|
||||
{ Win32.VK_MENU, ModifierKeys.Alt },
|
||||
{ Win32.VK_LMENU, ModifierKeys.LeftAlt },
|
||||
{ Win32.VK_RMENU, ModifierKeys.RightAlt },
|
||||
{ Win32.VK_LWIN, ModifierKeys.LeftWin },
|
||||
{ Win32.VK_RWIN, ModifierKeys.RightWin },
|
||||
};
|
||||
|
||||
public static ModifierKeys GetModifierKeyState()
|
||||
{
|
||||
var modifierKeyState = ModifierKeys.None;
|
||||
|
||||
foreach (KeyValuePair<Int32, ModifierKeys> pair in ModifierKeyTable)
|
||||
{
|
||||
if ((Win32.GetAsyncKeyState(pair.Key) & Win32.KEYSTATE_PRESSED) != 0) modifierKeyState |= pair.Value;
|
||||
}
|
||||
|
||||
if ((modifierKeyState & ModifierKeys.LeftWin) != 0) modifierKeyState |= ModifierKeys.Win;
|
||||
if ((modifierKeyState & ModifierKeys.RightWin) != 0) modifierKeyState |= ModifierKeys.Win;
|
||||
|
||||
return modifierKeyState;
|
||||
}
|
||||
|
||||
public static Boolean ModifierKeysMatch(ModifierKeys requestedKeys, ModifierKeys pressedKeys)
|
||||
{
|
||||
if ((requestedKeys & ModifierKeys.Shift) != 0) pressedKeys &= ~(ModifierKeys.LeftShift | ModifierKeys.RightShift);
|
||||
if ((requestedKeys & ModifierKeys.Control) != 0) pressedKeys &= ~(ModifierKeys.LeftControl | ModifierKeys.RightControl);
|
||||
if ((requestedKeys & ModifierKeys.Alt) != 0) pressedKeys &= ~(ModifierKeys.LeftAlt | ModifierKeys.RightAlt);
|
||||
if ((requestedKeys & ModifierKeys.Win) != 0) pressedKeys &= ~(ModifierKeys.LeftWin | ModifierKeys.RightWin);
|
||||
return requestedKeys == pressedKeys;
|
||||
}
|
||||
|
||||
public static void RequestKeyNotification(IntPtr windowHandle, Int32 keyCode, Boolean block)
|
||||
{
|
||||
RequestKeyNotification(windowHandle, keyCode, ModifierKeys.None, block);
|
||||
}
|
||||
|
||||
public static void RequestKeyNotification(IntPtr windowHandle, Int32 keyCode, ModifierKeys modifierKeys = ModifierKeys.None, Boolean block = false)
|
||||
{
|
||||
var newNotificationEntry = new KeyNotificationEntry
|
||||
{
|
||||
WindowHandle = windowHandle,
|
||||
KeyCode = keyCode,
|
||||
ModifierKeys = modifierKeys,
|
||||
Block = block,
|
||||
};
|
||||
|
||||
foreach (var notificationEntry in NotificationEntries)
|
||||
if (notificationEntry == newNotificationEntry) return;
|
||||
|
||||
NotificationEntries.Add(newNotificationEntry);
|
||||
}
|
||||
|
||||
public static void CancelKeyNotification(IntPtr windowHandle, Int32 keyCode, Boolean block)
|
||||
{
|
||||
CancelKeyNotification(windowHandle, keyCode, ModifierKeys.None, block);
|
||||
}
|
||||
|
||||
public static void CancelKeyNotification(IntPtr windowHandle, Int32 keyCode, ModifierKeys modifierKeys = ModifierKeys.None, Boolean block = false)
|
||||
{
|
||||
var notificationEntry = new KeyNotificationEntry
|
||||
{
|
||||
WindowHandle = windowHandle,
|
||||
KeyCode = keyCode,
|
||||
ModifierKeys = modifierKeys,
|
||||
Block = block,
|
||||
};
|
||||
|
||||
NotificationEntries.Remove(notificationEntry);
|
||||
}
|
||||
}
|
||||
}
|
||||
36
SharedLibraryNG/Properties/AssemblyInfo.cs
Normal file
36
SharedLibraryNG/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("SharedLibraryNG")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("SharedLibraryNG")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("f4470853-f933-4203-9d2a-b3c731e225c7")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
55
SharedLibraryNG/SharedLibraryNG.csproj
Normal file
55
SharedLibraryNG/SharedLibraryNG.csproj
Normal file
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{0F615504-5F30-4CF2-8341-1DE7FEC95A23}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>SharedLibraryNG</RootNamespace>
|
||||
<AssemblyName>SharedLibraryNG</AssemblyName>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="HotkeyControl.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="KeyboardHook.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Win32.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
171
SharedLibraryNG/Win32.cs
Normal file
171
SharedLibraryNG/Win32.cs
Normal file
@@ -0,0 +1,171 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SharedLibraryNG
|
||||
{
|
||||
// ReSharper disable InconsistentNaming
|
||||
public static class Win32
|
||||
{
|
||||
#region Functions
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
public static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProcDelegate lpfn, IntPtr hMod, Int32 dwThreadId);
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool UnhookWindowsHookEx(IntPtr hhk);
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
public static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, KBDLLHOOKSTRUCT lParam);
|
||||
|
||||
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
public static extern IntPtr GetModuleHandle(string lpModuleName);
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
public static extern IntPtr RegisterWindowMessage(string lpString);
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool GetGUIThreadInfo(Int32 idThread, GUITHREADINFO lpgui);
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
public static extern IntPtr GetAncestor(IntPtr hwnd, UInt32 gaFlags);
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
public static extern Int16 GetAsyncKeyState(Int32 vKey);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Delegates
|
||||
|
||||
public delegate IntPtr LowLevelKeyboardProcDelegate(Int32 nCode, IntPtr wParam, KBDLLHOOKSTRUCT lParam);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Structures
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public class KBDLLHOOKSTRUCT
|
||||
{
|
||||
public Int32 vkCode;
|
||||
public Int32 scanCode;
|
||||
public Int32 flags;
|
||||
public Int32 time;
|
||||
public IntPtr dwExtraInfo;
|
||||
};
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct RECT
|
||||
{
|
||||
public int left;
|
||||
public int top;
|
||||
public int right;
|
||||
public int bottom;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public class GUITHREADINFO
|
||||
{
|
||||
public GUITHREADINFO()
|
||||
{
|
||||
cbSize = Convert.ToInt32(Marshal.SizeOf(this));
|
||||
}
|
||||
|
||||
public Int32 cbSize;
|
||||
public Int32 flags;
|
||||
public IntPtr hwndActive;
|
||||
public IntPtr hwndFocus;
|
||||
public IntPtr hwndCapture;
|
||||
public IntPtr hwndMenuOwner;
|
||||
public IntPtr hwndMoveSize;
|
||||
public IntPtr hwndCaret;
|
||||
public RECT rcCaret;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constants
|
||||
|
||||
// GetAncestor
|
||||
public const int GA_ROOT = 2;
|
||||
|
||||
// SetWindowsHookEx
|
||||
public const int WH_KEYBOARD_LL = 13;
|
||||
|
||||
// LowLevelKeyboardProcDelegate
|
||||
public const int HC_ACTION = 0;
|
||||
|
||||
// SendMessage
|
||||
public const int WM_KEYDOWN = 0x0100;
|
||||
public const int WM_KEYUP = 0x0101;
|
||||
public const int WM_SYSKEYDOWN = 0x0104;
|
||||
public const int WM_SYSKEYUP = 0x0105;
|
||||
|
||||
// GetAsyncKeyState
|
||||
public const int KEYSTATE_PRESSED = 0x8000;
|
||||
|
||||
#region Virtual Keys
|
||||
public const int VK_CANCEL = 0x0003;
|
||||
public const int VK_BACK = 0x0008;
|
||||
public const int VK_TAB = 0x0009;
|
||||
public const int VK_CLEAR = 0x000C;
|
||||
public const int VK_RETURN = 0x000D;
|
||||
public const int VK_PAUSE = 0x0013;
|
||||
public const int VK_ESCAPE = 0x001B;
|
||||
public const int VK_SNAPSHOT = 0x002C;
|
||||
public const int VK_INSERT = 0x002D;
|
||||
public const int VK_DELETE = 0x002E;
|
||||
public const int VK_HOME = 0x0024;
|
||||
public const int VK_END = 0x0023;
|
||||
public const int VK_PRIOR = 0x0021;
|
||||
public const int VK_NEXT = 0x0022;
|
||||
public const int VK_LEFT = 0x0025;
|
||||
public const int VK_UP = 0x0026;
|
||||
public const int VK_RIGHT = 0x0027;
|
||||
public const int VK_DOWN = 0x0028;
|
||||
public const int VK_SELECT = 0x0029;
|
||||
public const int VK_PRINT = 0x002A;
|
||||
public const int VK_EXECUTE = 0x002B;
|
||||
public const int VK_HELP = 0x002F;
|
||||
public const int VK_LWIN = 0x005B;
|
||||
public const int VK_RWIN = 0x005C;
|
||||
public const int VK_APPS = 0x005D;
|
||||
public const int VK_F1 = 0x0070;
|
||||
public const int VK_F2 = 0x0071;
|
||||
public const int VK_F3 = 0x0072;
|
||||
public const int VK_F4 = 0x0073;
|
||||
public const int VK_F5 = 0x0074;
|
||||
public const int VK_F6 = 0x0075;
|
||||
public const int VK_F7 = 0x0076;
|
||||
public const int VK_F8 = 0x0077;
|
||||
public const int VK_F9 = 0x0078;
|
||||
public const int VK_F10 = 0x0079;
|
||||
public const int VK_F11 = 0x007A;
|
||||
public const int VK_F12 = 0x007B;
|
||||
public const int VK_SHIFT = 0x0010;
|
||||
public const int VK_LSHIFT = 0x00A0;
|
||||
public const int VK_RSHIFT = 0x00A1;
|
||||
public const int VK_CONTROL = 0x0011;
|
||||
public const int VK_LCONTROL = 0x00A2;
|
||||
public const int VK_RCONTROL = 0x00A3;
|
||||
public const int VK_MENU = 0x0012;
|
||||
public const int VK_LMENU = 0x00A4;
|
||||
public const int VK_RMENU = 0x00A5;
|
||||
|
||||
public const int VK_OEM_1 = 0x00BA;
|
||||
public const int VK_OEM_2 = 0x00BF;
|
||||
public const int VK_OEM_3 = 0x00C0;
|
||||
public const int VK_OEM_4 = 0x00DB;
|
||||
public const int VK_OEM_5 = 0x00DC;
|
||||
public const int VK_OEM_6 = 0x00DD;
|
||||
public const int VK_OEM_7 = 0x00DE;
|
||||
public const int VK_OEM_8 = 0x00DF;
|
||||
public const int VK_OEM_102 = 0x00E2;
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
// ReSharper restore InconsistentNaming
|
||||
}
|
||||
}
|
||||
145
TestProject/ExternalToolTest.vb
Normal file
145
TestProject/ExternalToolTest.vb
Normal file
@@ -0,0 +1,145 @@
|
||||
Imports Microsoft.VisualStudio.TestTools.UnitTesting
|
||||
|
||||
Imports mRemoteNG.Tools
|
||||
Imports mRemoteNG.Connection.PuttySession
|
||||
|
||||
|
||||
'''<summary>
|
||||
'''This is a test class for ExternalToolTest and is intended
|
||||
'''to contain all ExternalToolTest Unit Tests
|
||||
'''</summary>
|
||||
<TestClass()> _
|
||||
Public Class ExternalToolTest
|
||||
'''<summary>
|
||||
'''Gets or sets the test context which provides
|
||||
'''information about and functionality for the current test run.
|
||||
'''</summary>
|
||||
Public Property TestContext() As TestContext
|
||||
|
||||
#Region "Additional test attributes"
|
||||
'
|
||||
'You can use the following additional attributes as you write your tests:
|
||||
'
|
||||
'Use ClassInitialize to run code before running the first test in the class
|
||||
'<ClassInitialize()> _
|
||||
'Public Shared Sub MyClassInitialize(ByVal testContext As TestContext)
|
||||
'End Sub
|
||||
'
|
||||
'Use ClassCleanup to run code after all tests in a class have run
|
||||
'<ClassCleanup()> _
|
||||
'Public Shared Sub MyClassCleanup()
|
||||
'End Sub
|
||||
'
|
||||
'Use TestInitialize to run code before running each test
|
||||
'<TestInitialize()> _
|
||||
'Public Sub MyTestInitialize()
|
||||
'End Sub
|
||||
'
|
||||
'Use TestCleanup to run code after each test has run
|
||||
'<TestCleanup()> _
|
||||
'Public Sub MyTestCleanup()
|
||||
'End Sub
|
||||
'
|
||||
#End Region
|
||||
|
||||
|
||||
'''<summary>
|
||||
'''A test for ParseArguments
|
||||
'''</summary>
|
||||
<TestMethod(), _
|
||||
DeploymentItem("mRemoteNG.exe")> _
|
||||
Public Sub ParseArgumentsTest()
|
||||
Dim externalTool As New ExternalTool
|
||||
|
||||
' ReSharper disable StringLiteralTypo
|
||||
externalTool.ConnectionInfo = New Info()
|
||||
With externalTool.ConnectionInfo
|
||||
.Name = "EMAN"
|
||||
.Hostname = "EMANTSOH"
|
||||
.Port = 9876
|
||||
.Username = "EMANRESU"
|
||||
.Password = "DROWSSAP"
|
||||
.Domain = "NIAMOD"
|
||||
.Description = "NOITPIRCSED"
|
||||
.MacAddress = "SSERDDACAM"
|
||||
.UserField = "DLEIFRESU"
|
||||
End With
|
||||
|
||||
Assert.AreEqual("EMAN, EMANTSOH, 9876, EMANRESU, DROWSSAP, NIAMOD, NOITPIRCSED, SSERDDACAM, DLEIFRESU", externalTool.ParseArguments("%NAME%, %HOSTNAME%, %PORT%, %USERNAME%, %PASSWORD%, %DOMAIN%, %DESCRIPTION%, %MACADDRESS%, %USERFIELD%"))
|
||||
' ReSharper restore StringLiteralTypo
|
||||
|
||||
Assert.AreEqual(Environment.ExpandEnvironmentVariables("%PATH%"), externalTool.ParseArguments("%!PATH%"))
|
||||
|
||||
externalTool.ConnectionInfo.Name = "()%!^""<>&|\""\\"
|
||||
|
||||
Assert.AreEqual("%%", externalTool.ParseArguments("%%"))
|
||||
Assert.AreEqual("% %", externalTool.ParseArguments("% %"))
|
||||
Assert.AreEqual("%-%", externalTool.ParseArguments("%-%"))
|
||||
Assert.AreEqual("%!%", externalTool.ParseArguments("%!%"))
|
||||
Assert.AreEqual("%^%", externalTool.ParseArguments("%^%"))
|
||||
Assert.AreEqual("%%%", externalTool.ParseArguments("%%%"))
|
||||
Assert.AreEqual("%foobar%", externalTool.ParseArguments("%foobar%"))
|
||||
Assert.AreEqual("%-foobar%", externalTool.ParseArguments("%-foobar%"))
|
||||
Assert.AreEqual("%!foobar%", externalTool.ParseArguments("%!foobar%"))
|
||||
Assert.AreEqual("%-!^\", externalTool.ParseArguments("%-!^\"))
|
||||
|
||||
Assert.AreEqual("^(^)^%^!^^\^""^<^>^&^|\\\^""\\", externalTool.ParseArguments("%NAME%"))
|
||||
Assert.AreEqual("^(^)^%^!^^^""^<^>^&^|\^""\\", externalTool.ParseArguments("%-NAME%"))
|
||||
Assert.AreEqual("()%!^""<>&|\""\\", externalTool.ParseArguments("%!NAME%"))
|
||||
|
||||
Assert.AreEqual("^(^)^%^!^^\^""^<^>^&^|\\\^""\\", externalTool.ParseArguments("%name%"))
|
||||
Assert.AreEqual("%^(^)^%^!^^\^""^<^>^&^|\\\^""\\", externalTool.ParseArguments("%%name%"))
|
||||
Assert.AreEqual("^(^)^%^!^^\^""^<^>^&^|\\\^""\\%", externalTool.ParseArguments("%name%%"))
|
||||
Assert.AreEqual("^(^)^%^!^^\^""^<^>^&^|\\\^""\\ ^(^)^%^!^^\^""^<^>^&^|\\\^""\\", externalTool.ParseArguments("%name% %name%"))
|
||||
|
||||
Assert.AreEqual("%-^(^)^%^!^^\^""^<^>^&^|\\\^""\\", externalTool.ParseArguments("%-%name%"))
|
||||
Assert.AreEqual("^(^)^%^!^^\^""^<^>^&^|\\\^""\\-%", externalTool.ParseArguments("%name%-%"))
|
||||
Assert.AreEqual("%!^(^)^%^!^^\^""^<^>^&^|\\\^""\\", externalTool.ParseArguments("%!%name%"))
|
||||
Assert.AreEqual("^(^)^%^!^^\^""^<^>^&^|\\\^""\\!%", externalTool.ParseArguments("%name%!%"))
|
||||
|
||||
Assert.AreEqual("\^(^)^%^!^^\^""^<^>^&^|\\\^""\\", externalTool.ParseArguments("\%NAME%"))
|
||||
Assert.AreEqual("\^(^)^%^!^^\^""^<^>^&^|\\\^""\\NAME%", externalTool.ParseArguments("\%NAME%NAME%"))
|
||||
Assert.AreEqual("%NAME\%", externalTool.ParseArguments("%NAME\%"))
|
||||
|
||||
Assert.AreEqual("""^(^)^%^!^^\^""^<^>^&^|\\\^""\\\\""", externalTool.ParseArguments("""%NAME%"""))
|
||||
Assert.AreEqual("""^(^)^%^!^^^""^<^>^&^|\^""\\""", externalTool.ParseArguments("""%-NAME%"""))
|
||||
Assert.AreEqual("""()%!^""<>&|\""\\""", externalTool.ParseArguments("""%!NAME%"""))
|
||||
|
||||
Assert.AreEqual("""^(^)^%^!^^\^""^<^>^&^|\\\^""\\", externalTool.ParseArguments("""%NAME%"))
|
||||
Assert.AreEqual("""^(^)^%^!^^^""^<^>^&^|\^""\\", externalTool.ParseArguments("""%-NAME%"))
|
||||
Assert.AreEqual("""()%!^""<>&|\""\\", externalTool.ParseArguments("""%!NAME%"))
|
||||
|
||||
Assert.AreEqual("^(^)^%^!^^\^""^<^>^&^|\\\^""\\\\""", externalTool.ParseArguments("%NAME%"""))
|
||||
Assert.AreEqual("^(^)^%^!^^^""^<^>^&^|\^""\\""", externalTool.ParseArguments("%-NAME%"""))
|
||||
Assert.AreEqual("()%!^""<>&|\""\\""", externalTool.ParseArguments("%!NAME%"""))
|
||||
|
||||
Assert.AreEqual(Environment.ExpandEnvironmentVariables("%USERNAME%"), externalTool.ParseArguments("\%USERNAME\%"))
|
||||
Assert.AreEqual(Environment.ExpandEnvironmentVariables("%USERNAME%"), externalTool.ParseArguments("\%-USERNAME\%"))
|
||||
Assert.AreEqual(Environment.ExpandEnvironmentVariables("%USERNAME%"), externalTool.ParseArguments("\%!USERNAME\%"))
|
||||
|
||||
Assert.AreEqual("\^(^)^%^!^^\^""^<^>^&^|\\\^""\\", externalTool.ParseArguments("\%NAME%"))
|
||||
Assert.AreEqual("%NAME\%", externalTool.ParseArguments("%NAME\%"))
|
||||
Assert.AreEqual("\\%NAME\\%", externalTool.ParseArguments("\\%NAME\\%"))
|
||||
Assert.AreEqual("\\\%NAME\\\%", externalTool.ParseArguments("\\\%NAME\\\%"))
|
||||
Assert.AreEqual("\\\\%NAME\\\\%", externalTool.ParseArguments("\\\\%NAME\\\\%"))
|
||||
Assert.AreEqual("\\\\\%NAME\\\\\%", externalTool.ParseArguments("\\\\\%NAME\\\\\%"))
|
||||
|
||||
Assert.AreEqual("%NAME%", externalTool.ParseArguments("^%NAME^%"))
|
||||
Assert.AreEqual("%-NAME%", externalTool.ParseArguments("^%-NAME^%"))
|
||||
Assert.AreEqual("\%NAME\%", externalTool.ParseArguments("\^%NAME\^%"))
|
||||
Assert.AreEqual("\%-NAME\%", externalTool.ParseArguments("\^%-NAME\^%"))
|
||||
|
||||
Assert.AreEqual("^%NAME^%", externalTool.ParseArguments("^^%NAME^^%"))
|
||||
Assert.AreEqual("^%-NAME^%", externalTool.ParseArguments("^^%-NAME^^%"))
|
||||
Assert.AreEqual("^^^^%NAME^^^^%", externalTool.ParseArguments("^^^^^%NAME^^^^^%"))
|
||||
Assert.AreEqual("^^^^%-NAME^^^^%", externalTool.ParseArguments("^^^^^%-NAME^^^^^%"))
|
||||
Assert.AreEqual("^^^^%!NAME^^^^%", externalTool.ParseArguments("^^^^^%!NAME^^^^^%"))
|
||||
|
||||
Assert.AreEqual("blah%blah", externalTool.ParseArguments("blah%blah"))
|
||||
Assert.AreEqual("blah^%blah", externalTool.ParseArguments("blah^%blah"))
|
||||
Assert.AreEqual("blah^^%blah", externalTool.ParseArguments("blah^^%blah"))
|
||||
Assert.AreEqual("blah^^^%blah", externalTool.ParseArguments("blah^^^%blah"))
|
||||
|
||||
Assert.AreEqual("^^^^%-NAME^^^^% ^(^)^%^!^^\^""^<^>^&^|\\\^""\\", externalTool.ParseArguments("^^^^^%-NAME^^^^^% %NAME%"))
|
||||
End Sub
|
||||
End Class
|
||||
37
TestProject/My Project/AssemblyInfo.vb
Normal file
37
TestProject/My Project/AssemblyInfo.vb
Normal file
@@ -0,0 +1,37 @@
|
||||
Imports System
|
||||
Imports System.Reflection
|
||||
Imports System.Runtime.InteropServices
|
||||
|
||||
' General Information about an assembly is controlled through the following
|
||||
' set of attributes. Change these attribute values to modify the information
|
||||
' associated with an assembly.
|
||||
|
||||
' Review the values of the assembly attributes
|
||||
|
||||
<Assembly: AssemblyTitle("TestProject")>
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("")>
|
||||
<Assembly: AssemblyProduct("TestProject")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2013")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: CLSCompliant(True)>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
'The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
<Assembly: Guid("8918ad54-4841-44e9-abda-e1b787b02c7c")>
|
||||
|
||||
' Version information for an assembly consists of the following four values:
|
||||
'
|
||||
' Major Version
|
||||
' Minor Version
|
||||
' Build Number
|
||||
' Revision
|
||||
'
|
||||
' You can specify all the values or you can default the Build and Revision Numbers
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.0.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.0.0.0")>
|
||||
2
TestProject/Test References/mRemoteNG.accessor
Normal file
2
TestProject/Test References/mRemoteNG.accessor
Normal file
@@ -0,0 +1,2 @@
|
||||
mRemoteNG.exe
|
||||
Desktop
|
||||
179
TestProject/TestProject.vbproj
Normal file
179
TestProject/TestProject.vbproj
Normal file
@@ -0,0 +1,179 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>
|
||||
</ProductVersion>
|
||||
<SchemaVersion>
|
||||
</SchemaVersion>
|
||||
<ProjectGuid>{24E0689D-95C0-4AAB-A93F-B8D6B7F0CB97}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>TestProject</RootNamespace>
|
||||
<AssemblyName>TestProject</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<MyType>Windows</MyType>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
|
||||
<ReferencePath>$(DevEnvDir)PublicAssemblies\</ReferencePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DocumentationFile>TestProject.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DocumentationFile>TestProject.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionExplicit>On</OptionExplicit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionCompare>Binary</OptionCompare>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionStrict>Off</OptionStrict>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ADTree">
|
||||
<HintPath>..\mRemoteV1\References\ADTree.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="AxInterop.MSTSCLib">
|
||||
<HintPath>..\mRemoteV1\obj\Debug\AxInterop.MSTSCLib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="AxInterop.WFICALib">
|
||||
<HintPath>..\mRemoteV1\obj\Debug\AxInterop.WFICALib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DiffieHellman">
|
||||
<HintPath>..\mRemoteV1\References\DiffieHellman.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="FilteredPropertyGrid">
|
||||
<HintPath>..\mRemoteV1\References\FilteredPropertyGrid.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Interop.EOLWTSCOM">
|
||||
<HintPath>..\mRemoteV1\obj\Debug\Interop.EOLWTSCOM.dll</HintPath>
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Interop.MSTSCLib">
|
||||
<HintPath>..\mRemoteV1\obj\Debug\Interop.MSTSCLib.dll</HintPath>
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Interop.SHDocVw">
|
||||
<HintPath>..\mRemoteV1\obj\Debug\Interop.SHDocVw.dll</HintPath>
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WFICALib">
|
||||
<HintPath>..\mRemoteV1\obj\Debug\Interop.WFICALib.dll</HintPath>
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="IPTextBox">
|
||||
<HintPath>..\mRemoteV1\References\IPTextBox.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net">
|
||||
<HintPath>..\mRemoteV1\References\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MagicLibrary, Version=1.7.4.0, Culture=neutral, PublicKeyToken=3a6eb82f876a49bc">
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
|
||||
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
|
||||
<Reference Include="MiniGeckoBrowser">
|
||||
<HintPath>..\mRemoteV1\References\MiniGeckoBrowser.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MiniTabControl">
|
||||
<HintPath>..\mRemoteV1\References\MiniTabControl.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Org.Mentalis.Security">
|
||||
<HintPath>..\mRemoteV1\References\Org.Mentalis.Security.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PSTaskDialog">
|
||||
<HintPath>..\mRemoteV1\References\PSTaskDialog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Skybound.Gecko">
|
||||
<HintPath>..\mRemoteV1\References\Skybound.Gecko.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.DirectoryServices" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="Tamir.SharpSSH">
|
||||
<HintPath>..\mRemoteV1\References\Tamir.SharpSSH.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="VncSharpNG">
|
||||
<HintPath>..\mRemoteV1\References\VncSharpNG.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking">
|
||||
<HintPath>..\mRemoteV1\References\WeifenLuo.WinFormsUI.Docking.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="System" />
|
||||
<Import Include="System.Collections" />
|
||||
<Import Include="System.Collections.Generic" />
|
||||
<Import Include="System.Data" />
|
||||
<Import Include="System.Diagnostics" />
|
||||
<Import Include="System.Linq" />
|
||||
<Import Include="System.Xml.Linq" />
|
||||
<Import Include="Microsoft.VisualBasic" />
|
||||
<Import Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
|
||||
<Visible>False</Visible>
|
||||
</CodeAnalysisDependentAssemblyPaths>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ExternalToolTest.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Shadow Include="Test References\mRemoteNG.accessor" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\mRemoteV1\mRemoteV1.vbproj">
|
||||
<Project>{4934A491-40BC-4E5B-9166-EA1169A220F6}</Project>
|
||||
<Name>mRemoteV1</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
19
TraceAndTestImpact.testsettings
Normal file
19
TraceAndTestImpact.testsettings
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<TestSettings name="Trace and Test Impact" id="e062ce86-3357-43c9-b5c3-6b38a0dc3776" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
|
||||
<Description>These are test settings for Trace and Test Impact.</Description>
|
||||
<Execution>
|
||||
<TestTypeSpecific />
|
||||
<AgentRule name="Execution Agents">
|
||||
<DataCollectors>
|
||||
<DataCollector uri="datacollector://microsoft/SystemInfo/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.SystemInfo.SystemInfoDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.SystemInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="System Information">
|
||||
</DataCollector>
|
||||
<DataCollector uri="datacollector://microsoft/HttpProxy/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TraceCollector.HttpProxyCollector, Microsoft.VisualStudio.TraceCollector, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="ASP.NET Client Proxy for IntelliTrace and Test Impact">
|
||||
</DataCollector>
|
||||
<DataCollector uri="datacollector://microsoft/TestImpact/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TraceCollector.TestImpactDataCollector, Microsoft.VisualStudio.TraceCollector, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Test Impact">
|
||||
</DataCollector>
|
||||
<DataCollector uri="datacollector://microsoft/TraceDebugger/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TraceCollector.TraceDebuggerDataCollector, Microsoft.VisualStudio.TraceCollector, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="IntelliTrace">
|
||||
</DataCollector>
|
||||
</DataCollectors>
|
||||
</AgentRule>
|
||||
</Execution>
|
||||
</TestSettings>
|
||||
@@ -3,7 +3,21 @@ Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "mRemoteV1", "mRemoteV1\mRemoteV1.vbproj", "{4934A491-40BC-4E5B-9166-EA1169A220F6}"
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TestProject", "TestProject\TestProject.vbproj", "{24E0689D-95C0-4AAB-A93F-B8D6B7F0CB97}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{38EB1EFD-C8C8-49A2-BCA7-63F7A02B3153}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
Local.testsettings = Local.testsettings
|
||||
mRemoteV1.vsmdi = mRemoteV1.vsmdi
|
||||
TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedLibraryNG", "SharedLibraryNG\SharedLibraryNG.csproj", "{0F615504-5F30-4CF2-8341-1DE7FEC95A23}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(TestCaseManagementSettings) = postSolution
|
||||
CategoryFile = mRemoteV1.vsmdi
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug Portable|Any CPU = Debug Portable|Any CPU
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -19,6 +33,22 @@ Global
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Portable|Any CPU.Build.0 = Release Portable|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{24E0689D-95C0-4AAB-A93F-B8D6B7F0CB97}.Debug Portable|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{24E0689D-95C0-4AAB-A93F-B8D6B7F0CB97}.Debug Portable|Any CPU.Build.0 = Debug|Any CPU
|
||||
{24E0689D-95C0-4AAB-A93F-B8D6B7F0CB97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{24E0689D-95C0-4AAB-A93F-B8D6B7F0CB97}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{24E0689D-95C0-4AAB-A93F-B8D6B7F0CB97}.Release Portable|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{24E0689D-95C0-4AAB-A93F-B8D6B7F0CB97}.Release Portable|Any CPU.Build.0 = Release|Any CPU
|
||||
{24E0689D-95C0-4AAB-A93F-B8D6B7F0CB97}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{24E0689D-95C0-4AAB-A93F-B8D6B7F0CB97}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0F615504-5F30-4CF2-8341-1DE7FEC95A23}.Debug Portable|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0F615504-5F30-4CF2-8341-1DE7FEC95A23}.Debug Portable|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0F615504-5F30-4CF2-8341-1DE7FEC95A23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0F615504-5F30-4CF2-8341-1DE7FEC95A23}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0F615504-5F30-4CF2-8341-1DE7FEC95A23}.Release Portable|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0F615504-5F30-4CF2-8341-1DE7FEC95A23}.Release Portable|Any CPU.Build.0 = Release|Any CPU
|
||||
{0F615504-5F30-4CF2-8341-1DE7FEC95A23}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0F615504-5F30-4CF2-8341-1DE7FEC95A23}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
7
mRemoteV1.sln.DotSettings
Normal file
7
mRemoteV1.sln.DotSettings
Normal file
@@ -0,0 +1,7 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/VBNaming/Abbreviations/=ICA/@EntryIndexedValue">ICA</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/VBNaming/Abbreviations/=ID/@EntryIndexedValue">ID</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/VBNaming/Abbreviations/=IP/@EntryIndexedValue">IP</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/VBNaming/Abbreviations/=RDP/@EntryIndexedValue">RDP</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/VBNaming/Abbreviations/=VNC/@EntryIndexedValue">VNC</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/VBNaming/Abbreviations/=XML/@EntryIndexedValue">XML</s:String></wpf:ResourceDictionary>
|
||||
6
mRemoteV1.vsmdi
Normal file
6
mRemoteV1.vsmdi
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<TestLists xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
|
||||
<TestList name="Lists of Tests" id="8c43106b-9dc1-4907-a29f-aa66a61bf5b6">
|
||||
<RunConfiguration id="2a25bb82-f5ff-4a67-b5e9-c6aaa54d1e80" name="Local" storage="local.testsettings" type="Microsoft.VisualStudio.TestTools.Common.TestRunConfiguration, Microsoft.VisualStudio.QualityTools.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
</TestList>
|
||||
</TestLists>
|
||||
File diff suppressed because it is too large
Load Diff
79
mRemoteV1/App/Export.vb
Normal file
79
mRemoteV1/App/Export.vb
Normal file
@@ -0,0 +1,79 @@
|
||||
Imports mRemoteNG.Forms
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
Namespace App
|
||||
Public Class Export
|
||||
Public Shared Sub ExportToFile(ByVal rootTreeNode As TreeNode, ByVal selectedTreeNode As TreeNode)
|
||||
Try
|
||||
Dim exportTreeNode As TreeNode
|
||||
Dim saveSecurity As New Security.Save()
|
||||
|
||||
Using exportForm As New ExportForm()
|
||||
With exportForm
|
||||
Select Case Tree.Node.GetNodeType(selectedTreeNode)
|
||||
Case Tree.Node.Type.Container
|
||||
.SelectedFolder = selectedTreeNode
|
||||
Case Tree.Node.Type.Connection
|
||||
If Tree.Node.GetNodeType(selectedTreeNode.Parent) = Tree.Node.Type.Container Then
|
||||
.SelectedFolder = selectedTreeNode.Parent
|
||||
End If
|
||||
.SelectedConnection = selectedTreeNode
|
||||
End Select
|
||||
|
||||
If Not exportForm.ShowDialog(frmMain) = DialogResult.OK Then Return
|
||||
|
||||
Select Case .Scope
|
||||
Case exportForm.ExportScope.SelectedFolder
|
||||
exportTreeNode = .SelectedFolder
|
||||
Case exportForm.ExportScope.SelectedConnection
|
||||
exportTreeNode = .SelectedConnection
|
||||
Case Else
|
||||
exportTreeNode = rootTreeNode
|
||||
End Select
|
||||
|
||||
saveSecurity.Username = .IncludeUsername
|
||||
saveSecurity.Password = .IncludePassword
|
||||
saveSecurity.Domain = .IncludeDomain
|
||||
saveSecurity.Inheritance = .IncludeInheritance
|
||||
End With
|
||||
|
||||
SaveExportFile(exportForm.FileName, exportForm.SaveFormat, exportTreeNode, saveSecurity)
|
||||
End Using
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage("App.Export.ExportToFile() failed.", ex, , True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Shared Sub SaveExportFile(ByVal fileName As String, ByVal saveFormat As Config.Connections.Save.Format, ByVal rootNode As TreeNode, ByVal saveSecurity As Security.Save)
|
||||
Dim previousTimerEnabled As Boolean = False
|
||||
|
||||
Try
|
||||
If TimerSqlWatcher IsNot Nothing Then
|
||||
previousTimerEnabled = TimerSqlWatcher.Enabled
|
||||
TimerSqlWatcher.Enabled = False
|
||||
End If
|
||||
|
||||
Dim connectionsSave As New Config.Connections.Save
|
||||
With connectionsSave
|
||||
.Export = True
|
||||
.ConnectionFileName = fileName
|
||||
.SaveFormat = saveFormat
|
||||
|
||||
.ConnectionList = ConnectionList
|
||||
.ContainerList = ContainerList
|
||||
.RootTreeNode = rootNode
|
||||
|
||||
.SaveSecurity = saveSecurity
|
||||
End With
|
||||
|
||||
connectionsSave.Save()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(String.Format("Export.SaveExportFile(""{0}"") failed.", fileName), ex)
|
||||
Finally
|
||||
If TimerSqlWatcher IsNot Nothing Then
|
||||
TimerSqlWatcher.Enabled = previousTimerEnabled
|
||||
End If
|
||||
End Try
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
171
mRemoteV1/App/Import.vb
Normal file
171
mRemoteV1/App/Import.vb
Normal file
@@ -0,0 +1,171 @@
|
||||
Imports System.Windows.Forms
|
||||
Imports System.IO
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports PSTaskDialog
|
||||
|
||||
Namespace App
|
||||
Public Class Import
|
||||
#Region "Public Methods"
|
||||
Public Shared Sub ImportFromFile(ByVal rootTreeNode As TreeNode, ByVal selectedTreeNode As TreeNode, Optional ByVal alwaysUseSelectedTreeNode As Boolean = False)
|
||||
Try
|
||||
Using openFileDialog As New OpenFileDialog()
|
||||
With openFileDialog
|
||||
.CheckFileExists = True
|
||||
.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
|
||||
.Multiselect = True
|
||||
|
||||
Dim fileTypes As New List(Of String)
|
||||
fileTypes.AddRange({Language.strFilterAllImportable, "*.xml;*.rdp;*.rdg;*.dat"})
|
||||
fileTypes.AddRange({Language.strFiltermRemoteXML, "*.xml"})
|
||||
fileTypes.AddRange({Language.strFilterRDP, "*.rdp"})
|
||||
fileTypes.AddRange({Language.strFilterRdgFiles, "*.rdg"})
|
||||
fileTypes.AddRange({Language.strFilterPuttyConnectionManager, "*.dat"})
|
||||
fileTypes.AddRange({Language.strFilterAll, "*.*"})
|
||||
|
||||
.Filter = String.Join("|", fileTypes.ToArray())
|
||||
End With
|
||||
|
||||
If Not openFileDialog.ShowDialog = DialogResult.OK Then Return
|
||||
|
||||
Dim parentTreeNode As TreeNode = GetParentTreeNode(rootTreeNode, selectedTreeNode, alwaysUseSelectedTreeNode)
|
||||
If parentTreeNode Is Nothing Then Return
|
||||
|
||||
For Each fileName As String In openFileDialog.FileNames
|
||||
Try
|
||||
Select Case DetermineFileType(fileName)
|
||||
Case FileType.mRemoteXml
|
||||
Config.Import.mRemoteNG.Import(fileName, parentTreeNode)
|
||||
Case FileType.RemoteDesktopConnection
|
||||
Config.Import.RemoteDesktopConnection.Import(fileName, parentTreeNode)
|
||||
Case FileType.RemoteDesktopConnectionManager
|
||||
Config.Import.RemoteDesktopConnectionManager.Import(fileName, parentTreeNode)
|
||||
Case FileType.PuttyConnectionManager
|
||||
Config.Import.PuttyConnectionManager.Import(fileName, parentTreeNode)
|
||||
Case Else
|
||||
Throw New FileFormatException("Unrecognized file format.")
|
||||
End Select
|
||||
Catch ex As Exception
|
||||
cTaskDialog.ShowTaskDialogBox(Application.ProductName, Language.strImportFileFailedMainInstruction, String.Format(Language.strImportFileFailedContent, fileName), Tools.Misc.GetExceptionMessageRecursive(ex), "", "", "", "", eTaskDialogButtons.OK, eSysIcons.Error, Nothing)
|
||||
End Try
|
||||
Next
|
||||
|
||||
parentTreeNode.Expand()
|
||||
Dim parentContainer As Container.Info = TryCast(parentTreeNode.Tag, Container.Info)
|
||||
If parentContainer IsNot Nothing Then parentContainer.IsExpanded = True
|
||||
|
||||
SaveConnectionsBG()
|
||||
End Using
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage("App.Import.ImportFromFile() failed.", ex, , True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Shared Sub ImportFromActiveDirectory(ByVal ldapPath As String)
|
||||
Try
|
||||
Dim rootTreeNode As TreeNode = Tree.Node.TreeView.Nodes(0)
|
||||
Dim selectedTreeNode As TreeNode = Tree.Node.TreeView.SelectedNode
|
||||
|
||||
Dim parentTreeNode As TreeNode = GetParentTreeNode(rootTreeNode, selectedTreeNode)
|
||||
If parentTreeNode Is Nothing Then Return
|
||||
|
||||
Config.Import.ActiveDirectory.Import(ldapPath, parentTreeNode)
|
||||
|
||||
parentTreeNode.Expand()
|
||||
Dim parentContainer As Container.Info = TryCast(parentTreeNode.Tag, Container.Info)
|
||||
If parentContainer IsNot Nothing Then parentContainer.IsExpanded = True
|
||||
|
||||
SaveConnectionsBG()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage("App.Import.ImportFromActiveDirectory() failed.", ex, , True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Shared Sub ImportFromPortScan(ByVal hosts As IEnumerable, ByVal protocol As Connection.Protocol.Protocols)
|
||||
Try
|
||||
Dim rootTreeNode As TreeNode = Tree.Node.TreeView.Nodes(0)
|
||||
Dim selectedTreeNode As TreeNode = Tree.Node.TreeView.SelectedNode
|
||||
|
||||
Dim parentTreeNode As TreeNode = GetParentTreeNode(rootTreeNode, selectedTreeNode)
|
||||
If parentTreeNode Is Nothing Then Return
|
||||
|
||||
Config.Import.PortScan.Import(hosts, protocol, parentTreeNode)
|
||||
|
||||
parentTreeNode.Expand()
|
||||
Dim parentContainer As Container.Info = TryCast(parentTreeNode.Tag, Container.Info)
|
||||
If parentContainer IsNot Nothing Then parentContainer.IsExpanded = True
|
||||
|
||||
SaveConnectionsBG()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage("App.Import.ImportFromPortScan() failed.", ex, , True)
|
||||
End Try
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Shared Function GetParentTreeNode(ByVal rootTreeNode As TreeNode, ByVal selectedTreeNode As TreeNode, Optional ByVal alwaysUseSelectedTreeNode As Boolean = False) As TreeNode
|
||||
Dim parentTreeNode As TreeNode
|
||||
|
||||
selectedTreeNode = GetContainerTreeNode(selectedTreeNode)
|
||||
If selectedTreeNode Is Nothing OrElse selectedTreeNode Is rootTreeNode Then
|
||||
parentTreeNode = rootTreeNode
|
||||
Else
|
||||
If alwaysUseSelectedTreeNode Then
|
||||
parentTreeNode = GetContainerTreeNode(selectedTreeNode)
|
||||
Else
|
||||
cTaskDialog.ShowCommandBox(Application.ProductName, Language.strImportLocationMainInstruction, Language.strImportLocationContent, "", "", "", String.Format(Language.strImportLocationCommandButtons, vbLf, rootTreeNode.Text, selectedTreeNode.Text), True, eSysIcons.Question, 0)
|
||||
Select Case cTaskDialog.CommandButtonResult
|
||||
Case 0 ' Root
|
||||
parentTreeNode = rootTreeNode
|
||||
Case 1 ' Selected Folder
|
||||
parentTreeNode = GetContainerTreeNode(selectedTreeNode)
|
||||
Case Else ' Cancel
|
||||
parentTreeNode = Nothing
|
||||
End Select
|
||||
End If
|
||||
End If
|
||||
|
||||
Return parentTreeNode
|
||||
End Function
|
||||
|
||||
Private Shared Function GetContainerTreeNode(ByVal treeNode As TreeNode) As TreeNode
|
||||
Select Case Tree.Node.GetNodeType(treeNode)
|
||||
Case Tree.Node.Type.Root, Tree.Node.Type.Container
|
||||
Return treeNode
|
||||
Case Tree.Node.Type.Connection
|
||||
Return treeNode.Parent
|
||||
Case Else
|
||||
Return Nothing
|
||||
End Select
|
||||
End Function
|
||||
|
||||
Private Shared Function DetermineFileType(ByVal fileName As String) As FileType
|
||||
' TODO: Use the file contents to determine the file type instead of trusting the extension
|
||||
Dim fileExtension As String = Path.GetExtension(fileName).ToLowerInvariant()
|
||||
Select Case fileExtension
|
||||
Case ".xml"
|
||||
Return FileType.mRemoteXml
|
||||
Case ".rdp"
|
||||
Return FileType.RemoteDesktopConnection
|
||||
Case ".rdg"
|
||||
Return FileType.RemoteDesktopConnectionManager
|
||||
Case ".dat"
|
||||
Return FileType.PuttyConnectionManager
|
||||
Case Else
|
||||
Return FileType.Unknown
|
||||
End Select
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Private Enumerations"
|
||||
Private Enum FileType As Integer
|
||||
Unknown = 0
|
||||
' ReSharper disable once InconsistentNaming
|
||||
mRemoteXml
|
||||
RemoteDesktopConnection
|
||||
RemoteDesktopConnectionManager
|
||||
PuttyConnectionManager
|
||||
End Enum
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
@@ -5,6 +5,7 @@ Imports mRemoteNG.App.Runtime
|
||||
Imports System.Data
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.IO
|
||||
Imports mRemoteNG.My
|
||||
Imports PSTaskDialog
|
||||
|
||||
Namespace Config
|
||||
@@ -19,7 +20,7 @@ Namespace Config
|
||||
Private sqlQuery As SqlCommand
|
||||
Private sqlRd As SqlDataReader
|
||||
|
||||
Private selNode As TreeNode
|
||||
Private _selectedTreeNode As TreeNode
|
||||
#End Region
|
||||
|
||||
#Region "Public Properties"
|
||||
@@ -103,25 +104,9 @@ Namespace Config
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _RootTreeNode As TreeNode
|
||||
Public Property RootTreeNode() As TreeNode
|
||||
Get
|
||||
Return Me._RootTreeNode
|
||||
End Get
|
||||
Set(ByVal value As TreeNode)
|
||||
Me._RootTreeNode = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _ConnectionList As Connection.List
|
||||
Public Property ConnectionList() As Connection.List
|
||||
Get
|
||||
Return Me._ConnectionList
|
||||
End Get
|
||||
Set(ByVal value As Connection.List)
|
||||
Me._ConnectionList = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _ContainerList As Container.List
|
||||
Public Property ContainerList() As Container.List
|
||||
@@ -156,18 +141,17 @@ Namespace Config
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Sub Load(ByVal import As Boolean)
|
||||
If _UseSQL = True Then
|
||||
If UseSQL Then
|
||||
LoadFromSQL()
|
||||
SetMainFormText("SQL Server")
|
||||
Else
|
||||
Dim strCons As String = DecryptCompleteFile()
|
||||
LoadFromXML(strCons, import)
|
||||
Dim connections As String = DecryptCompleteFile()
|
||||
LoadFromXML(connections, import)
|
||||
End If
|
||||
|
||||
If import = False Then
|
||||
SetMainFormText(ConnectionFileName)
|
||||
PuttySessions.AddSessionsToTree()
|
||||
End If
|
||||
frmMain.UsingSqlServer = UseSQL
|
||||
frmMain.ConnectionsFileName = ConnectionFileName
|
||||
|
||||
If Not import Then Putty.Sessions.AddSessionsToTree()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
@@ -181,7 +165,7 @@ Namespace Config
|
||||
End If
|
||||
|
||||
Try
|
||||
App.Runtime.IsConnectionsFileLoaded = False
|
||||
IsConnectionsFileLoaded = False
|
||||
|
||||
If _SQLUsername <> "" Then
|
||||
sqlCon = New SqlConnection("Data Source=" & _SQLHost & ";Initial Catalog=" & _SQLDatabaseName & ";User Id=" & _SQLUsername & ";Password=" & _SQLPassword)
|
||||
@@ -197,7 +181,7 @@ Namespace Config
|
||||
sqlRd.Read()
|
||||
|
||||
If sqlRd.HasRows = False Then
|
||||
App.Runtime.SaveConnections()
|
||||
SaveConnections()
|
||||
|
||||
sqlQuery = New SqlCommand("SELECT * FROM tblRoot", sqlCon)
|
||||
sqlRd = sqlQuery.ExecuteReader(CommandBehavior.CloseConnection)
|
||||
@@ -212,40 +196,33 @@ Namespace Config
|
||||
Throw New Exception(String.Format("Incompatible database schema (schema version {0}).", confVersion))
|
||||
End If
|
||||
|
||||
Dim rootNode As TreeNode
|
||||
rootNode = New TreeNode(sqlRd.Item("Name"))
|
||||
RootTreeNode.Name = sqlRd.Item("Name")
|
||||
|
||||
Dim rInfo As New Root.Info(Root.Info.RootType.Connection)
|
||||
rInfo.Name = rootNode.Text
|
||||
rInfo.TreeNode = rootNode
|
||||
Dim rootInfo As New Root.Info(Root.Info.RootType.Connection)
|
||||
rootInfo.Name = RootTreeNode.Name
|
||||
rootInfo.TreeNode = RootTreeNode
|
||||
|
||||
rootNode.Tag = rInfo
|
||||
rootNode.ImageIndex = Images.Enums.TreeImage.Root
|
||||
rootNode.SelectedImageIndex = Images.Enums.TreeImage.Root
|
||||
RootTreeNode.Tag = rootInfo
|
||||
RootTreeNode.ImageIndex = Images.Enums.TreeImage.Root
|
||||
RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root
|
||||
|
||||
If Security.Crypt.Decrypt(sqlRd.Item("Protected"), pW) <> "ThisIsNotProtected" Then
|
||||
If Authenticate(sqlRd.Item("Protected"), False, rInfo) = False Then
|
||||
If Authenticate(sqlRd.Item("Protected"), False, rootInfo) = False Then
|
||||
My.Settings.LoadConsFromCustomLocation = False
|
||||
My.Settings.CustomConsPath = ""
|
||||
rootNode.Remove()
|
||||
RootTreeNode.Remove()
|
||||
Exit Sub
|
||||
End If
|
||||
End If
|
||||
|
||||
'Me._RootTreeNode.Text = rootNode.Text
|
||||
'Me._RootTreeNode.Tag = rootNode.Tag
|
||||
'Me._RootTreeNode.ImageIndex = Images.Enums.TreeImage.Root
|
||||
'Me._RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root
|
||||
|
||||
sqlRd.Close()
|
||||
|
||||
Windows.treeForm.tvConnections.BeginUpdate()
|
||||
|
||||
' SECTION 3. Populate the TreeView with the DOM nodes.
|
||||
AddNodesFromSQL(rootNode)
|
||||
'AddNodeFromXml(xDom.DocumentElement, Me._RootTreeNode)
|
||||
AddNodesFromSQL(RootTreeNode)
|
||||
|
||||
rootNode.Expand()
|
||||
RootTreeNode.Expand()
|
||||
|
||||
'expand containers
|
||||
For Each contI As Container.Info In Me._ContainerList
|
||||
@@ -258,21 +235,16 @@ Namespace Config
|
||||
|
||||
'open connections from last mremote session
|
||||
If My.Settings.OpenConsFromLastSession = True And My.Settings.NoReconnect = False Then
|
||||
For Each conI As Connection.Info In Me._ConnectionList
|
||||
For Each conI As Connection.Info In ConnectionList
|
||||
If conI.PleaseConnect = True Then
|
||||
App.Runtime.OpenConnection(conI)
|
||||
OpenConnection(conI)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
'Tree.Node.TreeView.Nodes.Clear()
|
||||
'Tree.Node.TreeView.Nodes.Add(rootNode)
|
||||
|
||||
AddNodeToTree(rootNode)
|
||||
SetSelectedNode(selNode)
|
||||
|
||||
App.Runtime.IsConnectionsFileLoaded = True
|
||||
'App.Runtime.Windows.treeForm.InitialRefresh()
|
||||
IsConnectionsFileLoaded = True
|
||||
Windows.treeForm.InitialRefresh()
|
||||
SetSelectedNode(_selectedTreeNode)
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
Finally
|
||||
@@ -282,29 +254,15 @@ Namespace Config
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Delegate Sub AddNodeToTreeCB(ByVal TreeNode As TreeNode)
|
||||
Private Sub AddNodeToTree(ByVal TreeNode As TreeNode)
|
||||
If Tree.Node.TreeView.InvokeRequired Then
|
||||
Dim d As New AddNodeToTreeCB(AddressOf AddNodeToTree)
|
||||
App.Runtime.Windows.treeForm.Invoke(d, New Object() {TreeNode})
|
||||
Else
|
||||
App.Runtime.Windows.treeForm.tvConnections.Nodes.Clear()
|
||||
App.Runtime.Windows.treeForm.tvConnections.Nodes.Add(TreeNode)
|
||||
App.Runtime.Windows.treeForm.InitialRefresh()
|
||||
Private Delegate Sub SetSelectedNodeDelegate(ByVal treeNode As TreeNode)
|
||||
Private Shared Sub SetSelectedNode(ByVal treeNode As TreeNode)
|
||||
If Tree.Node.TreeView IsNot Nothing AndAlso Tree.Node.TreeView.InvokeRequired Then
|
||||
Windows.treeForm.Invoke(New SetSelectedNodeDelegate(AddressOf SetSelectedNode), New Object() {treeNode})
|
||||
Return
|
||||
End If
|
||||
Windows.treeForm.tvConnections.SelectedNode = treeNode
|
||||
End Sub
|
||||
|
||||
Private Delegate Sub SetSelectedNodeCB(ByVal TreeNode As TreeNode)
|
||||
Private Sub SetSelectedNode(ByVal TreeNode As TreeNode)
|
||||
If Tree.Node.TreeView.InvokeRequired Then
|
||||
Dim d As New SetSelectedNodeCB(AddressOf SetSelectedNode)
|
||||
App.Runtime.Windows.treeForm.Invoke(d, New Object() {TreeNode})
|
||||
Else
|
||||
App.Runtime.Windows.treeForm.tvConnections.SelectedNode = TreeNode
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub AddNodesFromSQL(ByVal baseNode As TreeNode)
|
||||
Try
|
||||
sqlCon.Open()
|
||||
@@ -352,7 +310,7 @@ Namespace Config
|
||||
End If
|
||||
|
||||
If conI.ConstantID = _PreviousSelected Then
|
||||
selNode = tNode
|
||||
_selectedTreeNode = tNode
|
||||
End If
|
||||
Else
|
||||
tNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
@@ -385,7 +343,7 @@ Namespace Config
|
||||
End If
|
||||
|
||||
If conI.ConstantID = _PreviousSelected Then
|
||||
selNode = tNode
|
||||
_selectedTreeNode = tNode
|
||||
End If
|
||||
Else
|
||||
If sqlRd.Item("Expanded") = True Then
|
||||
@@ -646,7 +604,7 @@ Namespace Config
|
||||
|
||||
Private Sub LoadFromXML(ByVal cons As String, ByVal import As Boolean)
|
||||
Try
|
||||
App.Runtime.IsConnectionsFileLoaded = False
|
||||
If Not import Then IsConnectionsFileLoaded = False
|
||||
|
||||
' SECTION 1. Create a DOM Document and load the XML data into it.
|
||||
Me.xDom = New XmlDocument()
|
||||
@@ -669,28 +627,32 @@ Namespace Config
|
||||
End If
|
||||
|
||||
' SECTION 2. Initialize the treeview control.
|
||||
Dim rootNode As TreeNode
|
||||
|
||||
Dim rootNodeName As String = ""
|
||||
If xDom.DocumentElement.HasAttribute("Name") Then rootNodeName = xDom.DocumentElement.Attributes("Name").Value.Trim()
|
||||
If Not String.IsNullOrEmpty(rootNodeName) Then
|
||||
rootNode = New TreeNode(rootNodeName)
|
||||
Dim rootInfo As Root.Info
|
||||
If import Then
|
||||
rootInfo = Nothing
|
||||
Else
|
||||
rootNode = New TreeNode(xDom.DocumentElement.Name)
|
||||
Dim rootNodeName As String = ""
|
||||
If xDom.DocumentElement.HasAttribute("Name") Then rootNodeName = xDom.DocumentElement.Attributes("Name").Value.Trim()
|
||||
If Not String.IsNullOrEmpty(rootNodeName) Then
|
||||
RootTreeNode.Name = rootNodeName
|
||||
Else
|
||||
RootTreeNode.Name = xDom.DocumentElement.Name
|
||||
End If
|
||||
RootTreeNode.Text = RootTreeNode.Name
|
||||
|
||||
rootInfo = New Root.Info(Root.Info.RootType.Connection)
|
||||
rootInfo.Name = RootTreeNode.Name
|
||||
rootInfo.TreeNode = RootTreeNode
|
||||
|
||||
RootTreeNode.Tag = rootInfo
|
||||
End If
|
||||
|
||||
Dim rInfo As New Root.Info(Root.Info.RootType.Connection)
|
||||
rInfo.Name = rootNode.Text
|
||||
rInfo.TreeNode = rootNode
|
||||
|
||||
rootNode.Tag = rInfo
|
||||
|
||||
If Me.confVersion > 1.3 Then '1.4
|
||||
If Security.Crypt.Decrypt(xDom.DocumentElement.Attributes("Protected").Value, pW) <> "ThisIsNotProtected" Then
|
||||
If Authenticate(xDom.DocumentElement.Attributes("Protected").Value, False, rInfo) = False Then
|
||||
If Authenticate(xDom.DocumentElement.Attributes("Protected").Value, False, rootInfo) = False Then
|
||||
My.Settings.LoadConsFromCustomLocation = False
|
||||
My.Settings.CustomConsPath = ""
|
||||
_RootTreeNode.Remove()
|
||||
RootTreeNode.Remove()
|
||||
Exit Sub
|
||||
End If
|
||||
End If
|
||||
@@ -709,18 +671,16 @@ Namespace Config
|
||||
End If
|
||||
|
||||
If Not isExportFile Then
|
||||
_RootTreeNode.Text = rootNode.Text
|
||||
_RootTreeNode.Tag = rootNode.Tag
|
||||
_RootTreeNode.ImageIndex = Images.Enums.TreeImage.Root
|
||||
_RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root
|
||||
RootTreeNode.ImageIndex = Images.Enums.TreeImage.Root
|
||||
RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root
|
||||
End If
|
||||
|
||||
Windows.treeForm.tvConnections.BeginUpdate()
|
||||
|
||||
' SECTION 3. Populate the TreeView with the DOM nodes.
|
||||
AddNodeFromXml(xDom.DocumentElement, _RootTreeNode)
|
||||
AddNodeFromXml(xDom.DocumentElement, RootTreeNode)
|
||||
|
||||
Me._RootTreeNode.Expand()
|
||||
RootTreeNode.Expand()
|
||||
|
||||
'expand containers
|
||||
For Each contI As Container.Info In Me._ContainerList
|
||||
@@ -733,18 +693,18 @@ Namespace Config
|
||||
|
||||
'open connections from last mremote session
|
||||
If My.Settings.OpenConsFromLastSession = True And My.Settings.NoReconnect = False Then
|
||||
For Each conI As Connection.Info In Me._ConnectionList
|
||||
For Each conI As Connection.Info In _ConnectionList
|
||||
If conI.PleaseConnect = True Then
|
||||
App.Runtime.OpenConnection(conI)
|
||||
OpenConnection(conI)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
Me._RootTreeNode.EnsureVisible()
|
||||
RootTreeNode.EnsureVisible()
|
||||
|
||||
|
||||
App.Runtime.IsConnectionsFileLoaded = True
|
||||
App.Runtime.Windows.treeForm.InitialRefresh()
|
||||
If Not import Then IsConnectionsFileLoaded = True
|
||||
Windows.treeForm.InitialRefresh()
|
||||
SetSelectedNode(RootTreeNode)
|
||||
Catch ex As Exception
|
||||
App.Runtime.IsConnectionsFileLoaded = False
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strLoadFromXmlFailed & vbNewLine & ex.Message & vbNewLine & ex.StackTrace, True)
|
||||
@@ -760,7 +720,7 @@ Namespace Config
|
||||
If parentXmlNode.HasChildNodes() Then
|
||||
For Each xmlNode As XmlNode In parentXmlNode.ChildNodes
|
||||
Dim treeNode As TreeNode = New TreeNode(xmlNode.Attributes("Name").Value)
|
||||
parentTreeNode.Nodes.Add(TreeNode)
|
||||
parentTreeNode.Nodes.Add(treeNode)
|
||||
|
||||
If Tree.Node.GetNodeTypeFromString(xmlNode.Attributes("Type").Value) = Tree.Node.Type.Connection Then 'connection info
|
||||
Dim connectionInfo As Connection.Info = GetConnectionInfoFromXml(xmlNode)
|
||||
@@ -1077,10 +1037,17 @@ Namespace Config
|
||||
Return conI
|
||||
End Function
|
||||
|
||||
Private Function Authenticate(ByVal Value As String, ByVal CompareToOriginalValue As Boolean, Optional ByVal RootInfo As mRemoteNG.Root.Info = Nothing) As Boolean
|
||||
Private Function Authenticate(ByVal Value As String, ByVal CompareToOriginalValue As Boolean, Optional ByVal rootInfo As Root.Info = Nothing) As Boolean
|
||||
Dim passwordName As String
|
||||
If UseSQL Then
|
||||
passwordName = Language.strSQLServer.TrimEnd(":")
|
||||
Else
|
||||
passwordName = Path.GetFileName(ConnectionFileName)
|
||||
End If
|
||||
|
||||
If CompareToOriginalValue Then
|
||||
Do Until Security.Crypt.Decrypt(Value, pW) <> Value
|
||||
pW = Tools.Misc.PasswordDialog(False)
|
||||
pW = Tools.Misc.PasswordDialog(passwordName, False)
|
||||
|
||||
If pW = "" Then
|
||||
Return False
|
||||
@@ -1088,15 +1055,17 @@ Namespace Config
|
||||
Loop
|
||||
Else
|
||||
Do Until Security.Crypt.Decrypt(Value, pW) = "ThisIsProtected"
|
||||
pW = Tools.Misc.PasswordDialog(False)
|
||||
pW = Tools.Misc.PasswordDialog(passwordName, False)
|
||||
|
||||
If pW = "" Then
|
||||
Return False
|
||||
End If
|
||||
Loop
|
||||
|
||||
RootInfo.Password = True
|
||||
RootInfo.PasswordString = pW
|
||||
If rootInfo IsNot Nothing Then
|
||||
rootInfo.Password = True
|
||||
rootInfo.PasswordString = pW
|
||||
End If
|
||||
End If
|
||||
|
||||
Return True
|
||||
|
||||
@@ -51,7 +51,6 @@ Namespace Config
|
||||
Select Case SaveFormat
|
||||
Case Format.SQL
|
||||
SaveToSQL()
|
||||
SetMainFormText("SQL Server")
|
||||
Case Format.mRCSV
|
||||
SaveTomRCSV()
|
||||
Case Format.vRDvRE
|
||||
@@ -63,8 +62,9 @@ Namespace Config
|
||||
If My.Settings.EncryptCompleteConnectionsFile Then
|
||||
EncryptCompleteFile()
|
||||
End If
|
||||
If Not _Export Then SetMainFormText(ConnectionFileName)
|
||||
If Not Export Then frmMain.ConnectionsFileName = ConnectionFileName
|
||||
End Select
|
||||
frmMain.UsingSqlServer = (SaveFormat = Format.SQL)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
@@ -526,10 +526,14 @@ Namespace Config
|
||||
_xmlTextWriter.WriteEndElement()
|
||||
_xmlTextWriter.Close()
|
||||
|
||||
If Not Export And File.Exists(ConnectionFileName) Then
|
||||
Dim backupFileName As String = ConnectionFileName & ".backup"
|
||||
File.Delete(backupFileName)
|
||||
File.Move(ConnectionFileName, backupFileName)
|
||||
If File.Exists(ConnectionFileName) Then
|
||||
If Export Then
|
||||
File.Delete(ConnectionFileName)
|
||||
Else
|
||||
Dim backupFileName As String = ConnectionFileName & ".backup"
|
||||
File.Delete(backupFileName)
|
||||
File.Move(ConnectionFileName, backupFileName)
|
||||
End If
|
||||
End If
|
||||
File.Move(tempFileName, ConnectionFileName)
|
||||
Catch ex As Exception
|
||||
|
||||
@@ -6,7 +6,7 @@ Namespace Config
|
||||
Namespace Settings
|
||||
Public Class Save
|
||||
#Region "Public Methods"
|
||||
Public Sub Save()
|
||||
Public Shared Sub Save()
|
||||
Try
|
||||
With frmMain
|
||||
Dim windowPlacement As New Tools.WindowPlacement(frmMain)
|
||||
@@ -50,14 +50,14 @@ Namespace Config
|
||||
My.Settings.Save()
|
||||
End With
|
||||
|
||||
Me.SavePanelsToXML()
|
||||
Me.SaveExternalAppsToXML()
|
||||
SavePanelsToXML()
|
||||
SaveExternalAppsToXML()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Saving settings failed" & vbNewLine & vbNewLine & ex.Message, False)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Sub SavePanelsToXML()
|
||||
Public Shared Sub SavePanelsToXML()
|
||||
Try
|
||||
If Directory.Exists(App.Info.Settings.SettingsPath) = False Then
|
||||
Directory.CreateDirectory(App.Info.Settings.SettingsPath)
|
||||
@@ -69,7 +69,7 @@ Namespace Config
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Sub SaveExternalAppsToXML()
|
||||
Public Shared Sub SaveExternalAppsToXML()
|
||||
Try
|
||||
If Directory.Exists(App.Info.Settings.SettingsPath) = False Then
|
||||
Directory.CreateDirectory(App.Info.Settings.SettingsPath)
|
||||
|
||||
97
mRemoteV1/Config/Import/ActiveDirectory.vb
Normal file
97
mRemoteV1/Config/Import/ActiveDirectory.vb
Normal file
@@ -0,0 +1,97 @@
|
||||
Imports System.DirectoryServices
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Config.Import
|
||||
Public Class ActiveDirectory
|
||||
Public Shared Sub Import(ByVal ldapPath As String, ByVal parentTreeNode As TreeNode)
|
||||
Try
|
||||
Dim treeNode As TreeNode = Tree.Node.AddNode(Tree.Node.Type.Container)
|
||||
|
||||
Dim containerInfo As New Container.Info()
|
||||
containerInfo.TreeNode = treeNode
|
||||
containerInfo.ConnectionInfo = New Connection.Info(containerInfo)
|
||||
|
||||
Dim name As String
|
||||
Dim match As Match = Regex.Match(ldapPath, "ou=([^,]*)", RegexOptions.IgnoreCase)
|
||||
If match.Success Then
|
||||
name = match.Groups(1).Captures(0).Value
|
||||
Else
|
||||
name = Language.strActiveDirectory
|
||||
End If
|
||||
|
||||
containerInfo.Name = name
|
||||
|
||||
' We can only inherit from a container node, not the root node or connection nodes
|
||||
If Tree.Node.GetNodeType(parentTreeNode) = Tree.Node.Type.Container Then
|
||||
containerInfo.Parent = parentTreeNode.Tag
|
||||
Else
|
||||
containerInfo.ConnectionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||
End If
|
||||
|
||||
treeNode.Text = name
|
||||
treeNode.Name = name
|
||||
treeNode.Tag = containerInfo
|
||||
ContainerList.Add(containerInfo)
|
||||
|
||||
ImportComputers(ldapPath, treeNode)
|
||||
|
||||
parentTreeNode.Nodes.Add(treeNode)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage("Config.Import.ActiveDirectory.Import() failed.", ex, , True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Shared Sub ImportComputers(ByVal ldapPath As String, ByVal parentTreeNode As TreeNode)
|
||||
Try
|
||||
Dim strDisplayName, strDescription, strHostName As String
|
||||
|
||||
Const ldapFilter As String = "(objectClass=computer)"
|
||||
|
||||
Dim ldapSearcher As New DirectorySearcher
|
||||
Dim ldapResults As SearchResultCollection
|
||||
Dim ldapResult As SearchResult
|
||||
|
||||
With ldapSearcher
|
||||
.SearchRoot = New DirectoryEntry(ldapPath)
|
||||
.PropertiesToLoad.AddRange({"securityEquals", "cn"})
|
||||
.Filter = ldapFilter
|
||||
.SearchScope = SearchScope.OneLevel
|
||||
End With
|
||||
|
||||
ldapResults = ldapSearcher.FindAll()
|
||||
|
||||
For Each ldapResult In ldapResults
|
||||
With ldapResult.GetDirectoryEntry()
|
||||
strDisplayName = .Properties("cn").Value
|
||||
strDescription = .Properties("Description").Value
|
||||
strHostName = .Properties("dNSHostName").Value
|
||||
End With
|
||||
|
||||
Dim treeNode As TreeNode = Tree.Node.AddNode(Tree.Node.Type.Connection, strDisplayName)
|
||||
|
||||
Dim connectionInfo As New Connection.Info()
|
||||
Dim inheritanceInfo As New Connection.Info.Inheritance(connectionInfo, True)
|
||||
inheritanceInfo.Description = False
|
||||
If TypeOf parentTreeNode.Tag Is Container.Info Then
|
||||
connectionInfo.Parent = parentTreeNode.Tag
|
||||
End If
|
||||
connectionInfo.Inherit = inheritanceInfo
|
||||
connectionInfo.Name = strDisplayName
|
||||
connectionInfo.Hostname = strHostName
|
||||
connectionInfo.Description = strDescription
|
||||
connectionInfo.TreeNode = treeNode
|
||||
treeNode.Name = strDisplayName
|
||||
treeNode.Tag = connectionInfo 'set the nodes tag to the conI
|
||||
'add connection to connections
|
||||
ConnectionList.Add(connectionInfo)
|
||||
|
||||
parentTreeNode.Nodes.Add(treeNode)
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage("Config.Import.ActiveDirectory.ImportComputers() failed.", ex, , True)
|
||||
End Try
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
72
mRemoteV1/Config/Import/PortScan.vb
Normal file
72
mRemoteV1/Config/Import/PortScan.vb
Normal file
@@ -0,0 +1,72 @@
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
Namespace Config.Import
|
||||
Public Class PortScan
|
||||
Public Shared Sub Import(ByVal hosts As IEnumerable, ByVal protocol As Connection.Protocol.Protocols, ByVal parentTreeNode As TreeNode)
|
||||
For Each host As Tools.PortScan.ScanHost In hosts
|
||||
Dim finalProtocol As Connection.Protocol.Protocols
|
||||
Dim protocolValid As Boolean = False
|
||||
|
||||
Dim treeNode As TreeNode = Tree.Node.AddNode(Tree.Node.Type.Connection, host.HostNameWithoutDomain)
|
||||
|
||||
Dim connectionInfo As New Connection.Info()
|
||||
connectionInfo.Inherit = New Connection.Info.Inheritance(connectionInfo)
|
||||
|
||||
connectionInfo.Name = host.HostNameWithoutDomain
|
||||
connectionInfo.Hostname = host.HostName
|
||||
|
||||
Select Case protocol
|
||||
Case Connection.Protocol.Protocols.SSH2
|
||||
If host.SSH Then
|
||||
finalProtocol = Connection.Protocol.Protocols.SSH2
|
||||
protocolValid = True
|
||||
End If
|
||||
Case Connection.Protocol.Protocols.Telnet
|
||||
If host.Telnet Then
|
||||
finalProtocol = Connection.Protocol.Protocols.Telnet
|
||||
protocolValid = True
|
||||
End If
|
||||
Case Connection.Protocol.Protocols.HTTP
|
||||
If host.HTTP Then
|
||||
finalProtocol = Connection.Protocol.Protocols.HTTP
|
||||
protocolValid = True
|
||||
End If
|
||||
Case Connection.Protocol.Protocols.HTTPS
|
||||
If host.HTTPS Then
|
||||
finalProtocol = Connection.Protocol.Protocols.HTTPS
|
||||
protocolValid = True
|
||||
End If
|
||||
Case Connection.Protocol.Protocols.Rlogin
|
||||
If host.Rlogin Then
|
||||
finalProtocol = Connection.Protocol.Protocols.Rlogin
|
||||
protocolValid = True
|
||||
End If
|
||||
Case Connection.Protocol.Protocols.RDP
|
||||
If host.RDP Then
|
||||
finalProtocol = Connection.Protocol.Protocols.RDP
|
||||
protocolValid = True
|
||||
End If
|
||||
Case Connection.Protocol.Protocols.VNC
|
||||
If host.VNC Then
|
||||
finalProtocol = Connection.Protocol.Protocols.VNC
|
||||
protocolValid = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
If protocolValid Then
|
||||
connectionInfo.Protocol = finalProtocol
|
||||
connectionInfo.SetDefaultPort()
|
||||
|
||||
treeNode.Tag = connectionInfo
|
||||
parentTreeNode.Nodes.Add(treeNode)
|
||||
|
||||
If TypeOf parentTreeNode.Tag Is Container.Info Then
|
||||
connectionInfo.Parent = parentTreeNode.Tag
|
||||
End If
|
||||
|
||||
ConnectionList.Add(connectionInfo)
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
160
mRemoteV1/Config/Import/PuttyConnectionManager.vb
Normal file
160
mRemoteV1/Config/Import/PuttyConnectionManager.vb
Normal file
@@ -0,0 +1,160 @@
|
||||
Imports System.Xml
|
||||
Imports System.IO
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports mRemoteNG.Connection.Protocol
|
||||
|
||||
Namespace Config.Import
|
||||
Public Class PuttyConnectionManager
|
||||
Public Shared Sub Import(ByVal fileName As String, ByVal parentTreeNode As TreeNode)
|
||||
Dim xmlDocument As New XmlDocument()
|
||||
xmlDocument.Load(fileName)
|
||||
|
||||
Dim configurationNode As XmlNode = xmlDocument.SelectSingleNode("/configuration")
|
||||
'Dim version As New Version(configurationNode.Attributes("version").Value)
|
||||
'If Not version = New Version(0, 7, 1, 136) Then
|
||||
' Throw New FileFormatException(String.Format("Unsupported file version ({0}).", version))
|
||||
'End If
|
||||
|
||||
For Each rootNode As XmlNode In configurationNode.SelectNodes("./root")
|
||||
ImportRootOrContainer(rootNode, parentTreeNode)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Shared Sub ImportRootOrContainer(ByVal xmlNode As XmlNode, ByVal parentTreeNode As TreeNode)
|
||||
Dim xmlNodeType As String = xmlNode.Attributes("type").Value
|
||||
Select Case xmlNode.Name
|
||||
Case "root"
|
||||
If Not String.Compare(xmlNodeType, "database", ignoreCase:=True) = 0 Then
|
||||
Throw New FileFormatException(String.Format("Unrecognized root node type ({0}).", xmlNodeType))
|
||||
End If
|
||||
Case "container"
|
||||
If Not String.Compare(xmlNodeType, "folder", ignoreCase:=True) = 0 Then
|
||||
Throw New FileFormatException(String.Format("Unrecognized root node type ({0}).", xmlNodeType))
|
||||
End If
|
||||
Case Else
|
||||
' ReSharper disable once LocalizableElement
|
||||
Throw New ArgumentException("Argument must be either a root or a container node.", "xmlNode")
|
||||
End Select
|
||||
|
||||
If parentTreeNode Is Nothing Then
|
||||
Throw New InvalidOperationException("parentInfo.TreeNode must not be null.")
|
||||
End If
|
||||
|
||||
Dim name As String = xmlNode.Attributes("name").Value
|
||||
|
||||
Dim treeNode As New TreeNode(name)
|
||||
parentTreeNode.Nodes.Add(treeNode)
|
||||
|
||||
Dim containerInfo As New Container.Info
|
||||
containerInfo.TreeNode = treeNode
|
||||
containerInfo.Name = name
|
||||
|
||||
Dim connectionInfo As Connection.Info = CreateConnectionInfo(name)
|
||||
connectionInfo.Parent = containerInfo
|
||||
connectionInfo.IsContainer = True
|
||||
containerInfo.ConnectionInfo = connectionInfo
|
||||
|
||||
' We can only inherit from a container node, not the root node or connection nodes
|
||||
If Tree.Node.GetNodeType(parentTreeNode) = Tree.Node.Type.Container Then
|
||||
containerInfo.Parent = parentTreeNode.Tag
|
||||
Else
|
||||
connectionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||
End If
|
||||
|
||||
treeNode.Name = name
|
||||
treeNode.Tag = containerInfo
|
||||
treeNode.ImageIndex = Images.Enums.TreeImage.Container
|
||||
treeNode.SelectedImageIndex = Images.Enums.TreeImage.Container
|
||||
|
||||
For Each childNode As XmlNode In xmlNode.SelectNodes("./*")
|
||||
Select Case childNode.Name
|
||||
Case "container"
|
||||
ImportRootOrContainer(childNode, treeNode)
|
||||
Case "connection"
|
||||
ImportConnection(childNode, treeNode)
|
||||
Case Else
|
||||
Throw New FileFormatException(String.Format("Unrecognized child node ({0}).", childNode.Name))
|
||||
End Select
|
||||
Next
|
||||
|
||||
containerInfo.IsExpanded = xmlNode.Attributes("expanded").InnerText
|
||||
If containerInfo.IsExpanded Then treeNode.Expand()
|
||||
|
||||
ContainerList.Add(containerInfo)
|
||||
End Sub
|
||||
|
||||
Private Shared Sub ImportConnection(ByVal connectionNode As XmlNode, ByVal parentTreeNode As TreeNode)
|
||||
Dim connectionNodeType As String = connectionNode.Attributes("type").Value
|
||||
If Not String.Compare(connectionNodeType, "PuTTY", ignoreCase:=True) = 0 Then
|
||||
Throw New FileFormatException(String.Format("Unrecognized connection node type ({0}).", connectionNodeType))
|
||||
End If
|
||||
|
||||
Dim name As String = connectionNode.Attributes("name").Value
|
||||
Dim treeNode As New TreeNode(name)
|
||||
parentTreeNode.Nodes.Add(treeNode)
|
||||
|
||||
Dim connectionInfo As Connection.Info = ConnectionInfoFromXml(connectionNode)
|
||||
connectionInfo.TreeNode = treeNode
|
||||
connectionInfo.Parent = parentTreeNode.Tag
|
||||
|
||||
treeNode.Name = name
|
||||
treeNode.Tag = connectionInfo
|
||||
treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
|
||||
ConnectionList.Add(connectionInfo)
|
||||
End Sub
|
||||
|
||||
Private Shared Function CreateConnectionInfo(ByVal name As String) As Connection.Info
|
||||
Dim connectionInfo As New Connection.Info
|
||||
connectionInfo.Inherit = New Connection.Info.Inheritance(connectionInfo)
|
||||
connectionInfo.Name = name
|
||||
Return connectionInfo
|
||||
End Function
|
||||
|
||||
Private Shared Function ConnectionInfoFromXml(ByVal xmlNode As XmlNode) As Connection.Info
|
||||
Dim connectionInfoNode As XmlNode = xmlNode.SelectSingleNode("./connection_info")
|
||||
|
||||
Dim name As String = connectionInfoNode.SelectSingleNode("./name").InnerText
|
||||
Dim connectionInfo As Connection.Info = CreateConnectionInfo(name)
|
||||
|
||||
Dim protocol As String = connectionInfoNode.SelectSingleNode("./protocol").InnerText
|
||||
Select Case protocol.ToLowerInvariant()
|
||||
Case "telnet"
|
||||
connectionInfo.Protocol = Protocols.Telnet
|
||||
Case "ssh"
|
||||
connectionInfo.Protocol = Protocols.SSH2
|
||||
Case Else
|
||||
Throw New FileFormatException(String.Format("Unrecognized protocol ({0}).", protocol))
|
||||
End Select
|
||||
|
||||
connectionInfo.Hostname = connectionInfoNode.SelectSingleNode("./host").InnerText
|
||||
connectionInfo.Port = connectionInfoNode.SelectSingleNode("./port").InnerText
|
||||
connectionInfo.PuttySession = connectionInfoNode.SelectSingleNode("./session").InnerText
|
||||
' ./commandline
|
||||
connectionInfo.Description = connectionInfoNode.SelectSingleNode("./description").InnerText
|
||||
|
||||
Dim loginNode As XmlNode = xmlNode.SelectSingleNode("./login")
|
||||
connectionInfo.Username = loginNode.SelectSingleNode("login").InnerText
|
||||
connectionInfo.Password = loginNode.SelectSingleNode("password").InnerText
|
||||
' ./prompt
|
||||
|
||||
' ./timeout/connectiontimeout
|
||||
' ./timeout/logintimeout
|
||||
' ./timeout/passwordtimeout
|
||||
' ./timeout/commandtimeout
|
||||
|
||||
' ./command/command1
|
||||
' ./command/command2
|
||||
' ./command/command3
|
||||
' ./command/command4
|
||||
' ./command/command5
|
||||
|
||||
' ./options/loginmacro
|
||||
' ./options/postcommands
|
||||
' ./options/endlinechar
|
||||
|
||||
Return connectionInfo
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
141
mRemoteV1/Config/Import/RemoteDesktopConnection.vb
Normal file
141
mRemoteV1/Config/Import/RemoteDesktopConnection.vb
Normal file
@@ -0,0 +1,141 @@
|
||||
Imports System.IO
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
Namespace Config.Import
|
||||
Public Class RemoteDesktopConnection
|
||||
Public Shared Sub Import(ByVal fileName As String, ByVal parentTreeNode As TreeNode)
|
||||
Dim lines As String() = File.ReadAllLines(fileName)
|
||||
|
||||
Dim name As String = Path.GetFileNameWithoutExtension(fileName)
|
||||
Dim treeNode As TreeNode = New TreeNode(name)
|
||||
parentTreeNode.Nodes.Add(treeNode)
|
||||
|
||||
Dim connectionInfo As New Connection.Info
|
||||
connectionInfo.Inherit = New Connection.Info.Inheritance(connectionInfo)
|
||||
connectionInfo.Name = name
|
||||
connectionInfo.TreeNode = treeNode
|
||||
|
||||
If TypeOf treeNode.Parent.Tag Is Container.Info Then
|
||||
connectionInfo.Parent = treeNode.Parent.Tag
|
||||
End If
|
||||
|
||||
treeNode.Name = name
|
||||
treeNode.Tag = connectionInfo
|
||||
treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
|
||||
For Each line As String In lines
|
||||
Dim parts() As String = line.Split(New Char() {":"}, 3)
|
||||
If parts.Length < 3 Then Continue For
|
||||
|
||||
Dim key As String = parts(0)
|
||||
Dim value As String = parts(2)
|
||||
|
||||
SetConnectionInfoParameter(connectionInfo, key, value)
|
||||
Next
|
||||
|
||||
ConnectionList.Add(connectionInfo)
|
||||
End Sub
|
||||
|
||||
Private Shared Sub SetConnectionInfoParameter(ByRef connectionInfo As Connection.Info, ByVal key As String, ByVal value As String)
|
||||
Select Case LCase(key)
|
||||
Case "full address"
|
||||
Dim uri As New Uri("dummyscheme" + uri.SchemeDelimiter + value)
|
||||
If Not String.IsNullOrEmpty(uri.Host) Then connectionInfo.Hostname = uri.Host
|
||||
If Not uri.Port = -1 Then connectionInfo.Port = uri.Port
|
||||
Case "server port"
|
||||
connectionInfo.Port = value
|
||||
Case "username"
|
||||
connectionInfo.Username = value
|
||||
Case "domain"
|
||||
connectionInfo.Domain = value
|
||||
Case "session bpp"
|
||||
Select Case value
|
||||
Case 8
|
||||
connectionInfo.Colors = Connection.Protocol.RDP.RDPColors.Colors256
|
||||
Case 15
|
||||
connectionInfo.Colors = Connection.Protocol.RDP.RDPColors.Colors15Bit
|
||||
Case 16
|
||||
connectionInfo.Colors = Connection.Protocol.RDP.RDPColors.Colors16Bit
|
||||
Case 24
|
||||
connectionInfo.Colors = Connection.Protocol.RDP.RDPColors.Colors24Bit
|
||||
Case 32
|
||||
connectionInfo.Colors = Connection.Protocol.RDP.RDPColors.Colors32Bit
|
||||
End Select
|
||||
Case "bitmapcachepersistenable"
|
||||
If value = 1 Then
|
||||
connectionInfo.CacheBitmaps = True
|
||||
Else
|
||||
connectionInfo.CacheBitmaps = False
|
||||
End If
|
||||
Case "screen mode id"
|
||||
If value = 2 Then
|
||||
connectionInfo.Resolution = Connection.Protocol.RDP.RDPResolutions.Fullscreen
|
||||
Else
|
||||
connectionInfo.Resolution = Connection.Protocol.RDP.RDPResolutions.FitToWindow
|
||||
End If
|
||||
Case "connect to console"
|
||||
If value = 1 Then
|
||||
connectionInfo.UseConsoleSession = True
|
||||
End If
|
||||
Case "disable wallpaper"
|
||||
If value = 1 Then
|
||||
connectionInfo.DisplayWallpaper = True
|
||||
Else
|
||||
connectionInfo.DisplayWallpaper = False
|
||||
End If
|
||||
Case "disable themes"
|
||||
If value = 1 Then
|
||||
connectionInfo.DisplayThemes = True
|
||||
Else
|
||||
connectionInfo.DisplayThemes = False
|
||||
End If
|
||||
Case "allow font smoothing"
|
||||
If value = 1 Then
|
||||
connectionInfo.EnableFontSmoothing = True
|
||||
Else
|
||||
connectionInfo.EnableFontSmoothing = False
|
||||
End If
|
||||
Case "allow desktop composition"
|
||||
If value = 1 Then
|
||||
connectionInfo.EnableDesktopComposition = True
|
||||
Else
|
||||
connectionInfo.EnableDesktopComposition = False
|
||||
End If
|
||||
Case "redirectsmartcards"
|
||||
If value = 1 Then
|
||||
connectionInfo.RedirectSmartCards = True
|
||||
Else
|
||||
connectionInfo.RedirectSmartCards = False
|
||||
End If
|
||||
Case "redirectdrives"
|
||||
If value = 1 Then
|
||||
connectionInfo.RedirectDiskDrives = True
|
||||
Else
|
||||
connectionInfo.RedirectDiskDrives = False
|
||||
End If
|
||||
Case "redirectcomports"
|
||||
If value = 1 Then
|
||||
connectionInfo.RedirectPorts = True
|
||||
Else
|
||||
connectionInfo.RedirectPorts = False
|
||||
End If
|
||||
Case "redirectprinters"
|
||||
If value = 1 Then
|
||||
connectionInfo.RedirectPrinters = True
|
||||
Else
|
||||
connectionInfo.RedirectPrinters = False
|
||||
End If
|
||||
Case "audiomode"
|
||||
Select Case value
|
||||
Case 0
|
||||
connectionInfo.RedirectSound = Connection.Protocol.RDP.RDPSounds.BringToThisComputer
|
||||
Case 1
|
||||
connectionInfo.RedirectSound = Connection.Protocol.RDP.RDPSounds.LeaveAtRemoteComputer
|
||||
Case 2
|
||||
connectionInfo.RedirectSound = Connection.Protocol.RDP.RDPSounds.DoNotPlay
|
||||
End Select
|
||||
End Select
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
298
mRemoteV1/Config/Import/RemoteDesktopConnectionManager.vb
Normal file
298
mRemoteV1/Config/Import/RemoteDesktopConnectionManager.vb
Normal file
@@ -0,0 +1,298 @@
|
||||
Imports System.Xml
|
||||
Imports System.IO
|
||||
Imports System.Runtime.InteropServices
|
||||
Imports mRemoteNG.Connection.Protocol
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
Namespace Config.Import
|
||||
Public Class RemoteDesktopConnectionManager
|
||||
Public Shared Sub Import(ByVal fileName As String, ByVal parentTreeNode As TreeNode)
|
||||
Dim xmlDocument As New XmlDocument()
|
||||
xmlDocument.Load(fileName)
|
||||
|
||||
Dim rdcManNode As XmlNode = xmlDocument.SelectSingleNode("/RDCMan")
|
||||
Dim schemaVersion As Integer = rdcManNode.Attributes("schemaVersion").Value
|
||||
If Not schemaVersion = 1 Then
|
||||
Throw New FileFormatException(String.Format("Unsupported schema version ({0}).", schemaVersion))
|
||||
End If
|
||||
|
||||
Dim versionNode As XmlNode = rdcManNode.SelectSingleNode("./version")
|
||||
Dim version As New Version(versionNode.InnerText)
|
||||
If Not version = New Version(2, 2) Then
|
||||
Throw New FileFormatException(String.Format("Unsupported file version ({0}).", version))
|
||||
End If
|
||||
|
||||
Dim fileNode As XmlNode = rdcManNode.SelectSingleNode("./file")
|
||||
ImportFileOrGroup(fileNode, parentTreeNode)
|
||||
End Sub
|
||||
|
||||
Private Shared Sub ImportFileOrGroup(ByVal xmlNode As XmlNode, ByVal parentTreeNode As TreeNode)
|
||||
Dim propertiesNode As XmlNode = xmlNode.SelectSingleNode("./properties")
|
||||
Dim name As String = propertiesNode.SelectSingleNode("./name").InnerText
|
||||
|
||||
Dim treeNode As New TreeNode(name)
|
||||
parentTreeNode.Nodes.Add(treeNode)
|
||||
|
||||
Dim containerInfo As New Container.Info
|
||||
containerInfo.TreeNode = treeNode
|
||||
containerInfo.Name = name
|
||||
|
||||
Dim connectionInfo As Connection.Info = ConnectionInfoFromXml(propertiesNode)
|
||||
connectionInfo.Parent = containerInfo
|
||||
connectionInfo.IsContainer = True
|
||||
containerInfo.ConnectionInfo = connectionInfo
|
||||
|
||||
' We can only inherit from a container node, not the root node or connection nodes
|
||||
If Tree.Node.GetNodeType(parentTreeNode) = Tree.Node.Type.Container Then
|
||||
containerInfo.Parent = parentTreeNode.Tag
|
||||
Else
|
||||
connectionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||
End If
|
||||
|
||||
treeNode.Name = name
|
||||
treeNode.Tag = containerInfo
|
||||
treeNode.ImageIndex = Images.Enums.TreeImage.Container
|
||||
treeNode.SelectedImageIndex = Images.Enums.TreeImage.Container
|
||||
|
||||
For Each childNode As XmlNode In xmlNode.SelectNodes("./group|./server")
|
||||
Select Case childNode.Name
|
||||
Case "group"
|
||||
ImportFileOrGroup(childNode, treeNode)
|
||||
Case "server"
|
||||
ImportServer(childNode, treeNode)
|
||||
End Select
|
||||
Next
|
||||
|
||||
containerInfo.IsExpanded = propertiesNode.SelectSingleNode("./expanded").InnerText
|
||||
If containerInfo.IsExpanded Then treeNode.Expand()
|
||||
|
||||
ContainerList.Add(containerInfo)
|
||||
End Sub
|
||||
|
||||
Private Shared Sub ImportServer(ByVal serverNode As XmlNode, ByVal parentTreeNode As TreeNode)
|
||||
Dim name As String = serverNode.SelectSingleNode("./displayName").InnerText
|
||||
Dim treeNode As New TreeNode(name)
|
||||
parentTreeNode.Nodes.Add(treeNode)
|
||||
|
||||
Dim connectionInfo As Connection.Info = ConnectionInfoFromXml(serverNode)
|
||||
connectionInfo.TreeNode = treeNode
|
||||
connectionInfo.Parent = parentTreeNode.Tag
|
||||
|
||||
treeNode.Name = name
|
||||
treeNode.Tag = connectionInfo
|
||||
treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
|
||||
ConnectionList.Add(connectionInfo)
|
||||
End Sub
|
||||
|
||||
Private Shared Function ConnectionInfoFromXml(ByVal xmlNode As XmlNode) As Connection.Info
|
||||
Dim connectionInfo As New Connection.Info
|
||||
connectionInfo.Inherit = New Connection.Info.Inheritance(connectionInfo)
|
||||
|
||||
Dim name As String = xmlNode.SelectSingleNode("./name").InnerText
|
||||
|
||||
Dim displayName As String
|
||||
Dim displayNameNode As XmlNode = xmlNode.SelectSingleNode("./displayName")
|
||||
If displayNameNode Is Nothing Then
|
||||
displayName = name
|
||||
Else
|
||||
displayName = displayNameNode.InnerText
|
||||
End If
|
||||
|
||||
connectionInfo.Name = displayName
|
||||
connectionInfo.Description = xmlNode.SelectSingleNode("./comment").InnerText
|
||||
connectionInfo.Hostname = name
|
||||
|
||||
Dim logonCredentialsNode As XmlNode = xmlNode.SelectSingleNode("./logonCredentials")
|
||||
If logonCredentialsNode.Attributes("inherit").Value = "None" Then
|
||||
connectionInfo.Username = logonCredentialsNode.SelectSingleNode("userName").InnerText
|
||||
|
||||
Dim passwordNode As XmlNode = logonCredentialsNode.SelectSingleNode("./password")
|
||||
If passwordNode.Attributes("storeAsClearText").Value = "True" Then
|
||||
connectionInfo.Password = passwordNode.InnerText
|
||||
Else
|
||||
connectionInfo.Password = DecryptPassword(passwordNode.InnerText)
|
||||
End If
|
||||
|
||||
connectionInfo.Domain = logonCredentialsNode.SelectSingleNode("./domain").InnerText
|
||||
Else
|
||||
connectionInfo.Inherit.Username = True
|
||||
connectionInfo.Inherit.Password = True
|
||||
connectionInfo.Inherit.Domain = True
|
||||
End If
|
||||
|
||||
Dim connectionSettingsNode As XmlNode = xmlNode.SelectSingleNode("./connectionSettings")
|
||||
If connectionSettingsNode.Attributes("inherit").Value = "None" Then
|
||||
connectionInfo.UseConsoleSession = connectionSettingsNode.SelectSingleNode("./connectToConsole").InnerText
|
||||
' ./startProgram
|
||||
' ./workingDir
|
||||
connectionInfo.Port = connectionSettingsNode.SelectSingleNode("./port").InnerText
|
||||
Else
|
||||
connectionInfo.Inherit.UseConsoleSession = True
|
||||
connectionInfo.Inherit.Port = True
|
||||
End If
|
||||
|
||||
Dim gatewaySettingsNode As XmlNode = xmlNode.SelectSingleNode("./gatewaySettings")
|
||||
If gatewaySettingsNode.Attributes("inherit").Value = "None" Then
|
||||
If gatewaySettingsNode.SelectSingleNode("./enabled").InnerText = "True" Then
|
||||
connectionInfo.RDGatewayUsageMethod = RDP.RDGatewayUsageMethod.Always
|
||||
Else
|
||||
connectionInfo.RDGatewayUsageMethod = RDP.RDGatewayUsageMethod.Never
|
||||
End If
|
||||
|
||||
connectionInfo.RDGatewayHostname = gatewaySettingsNode.SelectSingleNode("./hostName").InnerText
|
||||
connectionInfo.RDGatewayUsername = gatewaySettingsNode.SelectSingleNode("./userName").InnerText
|
||||
|
||||
Dim passwordNode As XmlNode = logonCredentialsNode.SelectSingleNode("./password")
|
||||
If passwordNode.Attributes("storeAsClearText").Value = "True" Then
|
||||
connectionInfo.RDGatewayPassword = passwordNode.InnerText
|
||||
Else
|
||||
connectionInfo.Password = DecryptPassword(passwordNode.InnerText)
|
||||
End If
|
||||
|
||||
connectionInfo.RDGatewayDomain = gatewaySettingsNode.SelectSingleNode("./domain").InnerText
|
||||
' ./logonMethod
|
||||
' ./localBypass
|
||||
' ./credSharing
|
||||
Else
|
||||
connectionInfo.Inherit.RDGatewayUsageMethod = True
|
||||
connectionInfo.Inherit.RDGatewayHostname = True
|
||||
connectionInfo.Inherit.RDGatewayUsername = True
|
||||
connectionInfo.Inherit.RDGatewayPassword = True
|
||||
connectionInfo.Inherit.RDGatewayDomain = True
|
||||
End If
|
||||
|
||||
Dim remoteDesktopNode As XmlNode = xmlNode.SelectSingleNode("./remoteDesktop")
|
||||
If remoteDesktopNode.Attributes("inherit").Value = "None" Then
|
||||
Dim resolutionString As String = remoteDesktopNode.SelectSingleNode("./size").InnerText.Replace(" ", "")
|
||||
Try
|
||||
connectionInfo.Resolution = "Res" & Tools.Misc.StringToEnum(GetType(Connection.Protocol.RDP.RDPResolutions), resolutionString)
|
||||
Catch ex As ArgumentException
|
||||
connectionInfo.Resolution = RDP.RDPResolutions.FitToWindow
|
||||
End Try
|
||||
|
||||
If remoteDesktopNode.SelectSingleNode("./sameSizeAsClientArea").InnerText = "True" Then
|
||||
connectionInfo.Resolution = RDP.RDPResolutions.FitToWindow
|
||||
End If
|
||||
|
||||
If remoteDesktopNode.SelectSingleNode("./fullScreen").InnerText = "True" Then
|
||||
connectionInfo.Resolution = RDP.RDPResolutions.Fullscreen
|
||||
End If
|
||||
|
||||
connectionInfo.Colors = remoteDesktopNode.SelectSingleNode("./colorDepth").InnerText
|
||||
Else
|
||||
connectionInfo.Inherit.Resolution = True
|
||||
connectionInfo.Inherit.Colors = True
|
||||
End If
|
||||
|
||||
Dim localResourcesNode As XmlNode = xmlNode.SelectSingleNode("./localResources")
|
||||
If localResourcesNode.Attributes("inherit").Value = "None" Then
|
||||
Select Case localResourcesNode.SelectSingleNode("./audioRedirection").InnerText
|
||||
Case 0 ' Bring to this computer
|
||||
connectionInfo.RedirectSound = RDP.RDPSounds.BringToThisComputer
|
||||
Case 1 ' Leave at remote computer
|
||||
connectionInfo.RedirectSound = RDP.RDPSounds.LeaveAtRemoteComputer
|
||||
Case 2 ' Do not play
|
||||
connectionInfo.RedirectSound = RDP.RDPSounds.DoNotPlay
|
||||
End Select
|
||||
|
||||
' ./audioRedirectionQuality
|
||||
' ./audioCaptureRedirection
|
||||
|
||||
Select Case localResourcesNode.SelectSingleNode("./keyboardHook").InnerText
|
||||
Case 0 ' On the local computer
|
||||
connectionInfo.RedirectKeys = False
|
||||
Case 1 ' On the remote computer
|
||||
connectionInfo.RedirectKeys = True
|
||||
Case 2 ' In full screen mode only
|
||||
connectionInfo.RedirectKeys = False
|
||||
End Select
|
||||
|
||||
' ./redirectClipboard
|
||||
connectionInfo.RedirectDiskDrives = localResourcesNode.SelectSingleNode("./redirectDrives").InnerText
|
||||
connectionInfo.RedirectPorts = localResourcesNode.SelectSingleNode("./redirectPorts").InnerText
|
||||
connectionInfo.RedirectPrinters = localResourcesNode.SelectSingleNode("./redirectPrinters").InnerText
|
||||
connectionInfo.RedirectSmartCards = localResourcesNode.SelectSingleNode("./redirectSmartCards").InnerText
|
||||
Else
|
||||
connectionInfo.Inherit.RedirectSound = True
|
||||
connectionInfo.Inherit.RedirectKeys = True
|
||||
connectionInfo.Inherit.RedirectDiskDrives = True
|
||||
connectionInfo.Inherit.RedirectPorts = True
|
||||
connectionInfo.Inherit.RedirectPrinters = True
|
||||
connectionInfo.Inherit.RedirectSmartCards = True
|
||||
End If
|
||||
|
||||
Dim securitySettingsNode As XmlNode = xmlNode.SelectSingleNode("./securitySettings")
|
||||
If securitySettingsNode.Attributes("inherit").Value = "None" Then
|
||||
Select Case securitySettingsNode.SelectSingleNode("./authentication").InnerText
|
||||
Case 0 ' No authentication
|
||||
connectionInfo.RDPAuthenticationLevel = RDP.AuthenticationLevel.NoAuth
|
||||
Case 1 ' Do not connect if authentication fails
|
||||
connectionInfo.RDPAuthenticationLevel = RDP.AuthenticationLevel.AuthRequired
|
||||
Case 2 ' Warn if authentication fails
|
||||
connectionInfo.RDPAuthenticationLevel = RDP.AuthenticationLevel.WarnOnFailedAuth
|
||||
End Select
|
||||
Else
|
||||
connectionInfo.Inherit.RDPAuthenticationLevel = True
|
||||
End If
|
||||
|
||||
' ./displaySettings/thumbnailScale
|
||||
' ./displaySettings/liveThumbnailUpdates
|
||||
' ./displaySettings/showDisconnectedThumbnails
|
||||
|
||||
Return connectionInfo
|
||||
End Function
|
||||
|
||||
Private Shared Function DecryptPassword(ByVal ciphertext As String) As String
|
||||
If String.IsNullOrEmpty(ciphertext) Then Return Nothing
|
||||
|
||||
Dim gcHandle As GCHandle
|
||||
Dim plaintextData As Win32.DATA_BLOB
|
||||
Try
|
||||
Dim ciphertextArray As Byte() = Convert.FromBase64String(ciphertext)
|
||||
gcHandle = Runtime.InteropServices.GCHandle.Alloc(ciphertextArray, GCHandleType.Pinned)
|
||||
|
||||
Dim ciphertextData As Win32.DATA_BLOB
|
||||
ciphertextData.cbData = ciphertextArray.Length
|
||||
ciphertextData.pbData = gcHandle.AddrOfPinnedObject()
|
||||
|
||||
If Not Win32.CryptUnprotectData(ciphertextData, Nothing, Nothing, Nothing, Nothing, 0, plaintextData) Then Return Nothing
|
||||
|
||||
Dim plaintextLength As Integer = plaintextData.cbData / 2 ' Char = 2 bytes
|
||||
Dim plaintextArray(plaintextLength - 1) As Char
|
||||
Marshal.Copy(plaintextData.pbData, plaintextArray, 0, plaintextLength)
|
||||
|
||||
Return New String(plaintextArray)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage("RemoteDesktopConnectionManager.DecryptPassword() failed.", ex, , True)
|
||||
Return Nothing
|
||||
Finally
|
||||
If gcHandle.IsAllocated Then gcHandle.Free()
|
||||
If Not plaintextData.pbData = IntPtr.Zero Then Win32.LocalFree(plaintextData.pbData)
|
||||
End Try
|
||||
End Function
|
||||
|
||||
' ReSharper disable once ClassNeverInstantiated.Local
|
||||
Private Class Win32
|
||||
' ReSharper disable InconsistentNaming
|
||||
' ReSharper disable IdentifierTypo
|
||||
' ReSharper disable StringLiteralTypo
|
||||
<DllImport("crypt32.dll", CharSet:=CharSet.Unicode)> _
|
||||
Public Shared Function CryptUnprotectData(ByRef dataIn As DATA_BLOB, ByVal description As String, ByRef optionalEntropy As DATA_BLOB, ByVal reserved As IntPtr, ByRef promptStruct As IntPtr, ByVal flags As Integer, ByRef dataOut As DATA_BLOB) As Boolean
|
||||
End Function
|
||||
|
||||
<DllImport("kernel32.dll", CharSet:=CharSet.Unicode)> _
|
||||
Public Shared Sub LocalFree(ByVal ptr As IntPtr)
|
||||
End Sub
|
||||
|
||||
Public Structure DATA_BLOB
|
||||
Public cbData As Integer
|
||||
Public pbData As IntPtr
|
||||
End Structure
|
||||
' ReSharper restore StringLiteralTypo
|
||||
' ReSharper restore IdentifierTypo
|
||||
' ReSharper restore InconsistentNaming
|
||||
End Class
|
||||
End Class
|
||||
End Namespace
|
||||
49
mRemoteV1/Config/Import/mRemoteNG.vb
Normal file
49
mRemoteV1/Config/Import/mRemoteNG.vb
Normal file
@@ -0,0 +1,49 @@
|
||||
Imports System.IO
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
Namespace Config.Import
|
||||
' ReSharper disable once InconsistentNaming
|
||||
Public Class mRemoteNG
|
||||
Public Shared Sub Import(ByVal fileName As String, ByVal parentTreeNode As TreeNode)
|
||||
Dim name As String = Path.GetFileNameWithoutExtension(fileName)
|
||||
Dim treeNode As New TreeNode(name)
|
||||
parentTreeNode.Nodes.Add(treeNode)
|
||||
|
||||
Dim containerInfo As New Container.Info
|
||||
containerInfo.TreeNode = treeNode
|
||||
containerInfo.Name = name
|
||||
|
||||
Dim connectionInfo As New Connection.Info
|
||||
connectionInfo.Inherit = New Connection.Info.Inheritance(connectionInfo)
|
||||
connectionInfo.Name = name
|
||||
connectionInfo.TreeNode = treeNode
|
||||
connectionInfo.Parent = containerInfo
|
||||
connectionInfo.IsContainer = True
|
||||
containerInfo.ConnectionInfo = connectionInfo
|
||||
|
||||
' We can only inherit from a container node, not the root node or connection nodes
|
||||
If Tree.Node.GetNodeType(parentTreeNode) = Tree.Node.Type.Container Then
|
||||
containerInfo.Parent = parentTreeNode.Tag
|
||||
Else
|
||||
connectionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||
End If
|
||||
|
||||
treeNode.Name = name
|
||||
treeNode.Tag = containerInfo
|
||||
treeNode.ImageIndex = Images.Enums.TreeImage.Container
|
||||
treeNode.SelectedImageIndex = Images.Enums.TreeImage.Container
|
||||
|
||||
Dim connectionsLoad As New Connections.Load
|
||||
With connectionsLoad
|
||||
.ConnectionFileName = fileName
|
||||
.RootTreeNode = treeNode
|
||||
.ConnectionList = ConnectionList
|
||||
.ContainerList = ContainerList
|
||||
End With
|
||||
|
||||
connectionsLoad.Load(True)
|
||||
|
||||
ContainerList.Add(containerInfo)
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
324
mRemoteV1/Config/KeyboardShortcuts.vb
Normal file
324
mRemoteV1/Config/KeyboardShortcuts.vb
Normal file
@@ -0,0 +1,324 @@
|
||||
Imports System.Runtime.InteropServices
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports SharedLibraryNG
|
||||
|
||||
Namespace Config
|
||||
Public Class KeyboardShortcuts
|
||||
#Region "Public Properties"
|
||||
Private Shared _defaultMap As KeyboardShortcutMap = Nothing
|
||||
Public Shared ReadOnly Property DefaultMap() As KeyboardShortcutMap
|
||||
Get
|
||||
LoadDefaultMap()
|
||||
Return _defaultMap
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private Shared _map As KeyboardShortcutMap
|
||||
Public Shared Property Map() As KeyboardShortcutMap
|
||||
Get
|
||||
Load()
|
||||
Return _map
|
||||
End Get
|
||||
Set(value As KeyboardShortcutMap)
|
||||
CancelKeyNotifications()
|
||||
_map = value
|
||||
Save()
|
||||
RequestKeyNotifications(_handle)
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Shared Sub RequestKeyNotifications(ByVal handle As IntPtr)
|
||||
' ReSharper disable LocalizableElement
|
||||
If handle = IntPtr.Zero Then Throw New ArgumentException("The handle cannot be null.", "handle")
|
||||
If Not _handle = IntPtr.Zero And Not _handle = handle Then Throw New ArgumentException("The handle must match the handle that was specified the first time this function was called.", "handle")
|
||||
' ReSharper restore LocalizableElement
|
||||
_handle = handle
|
||||
For Each shortcutMapping As ShortcutMapping In Map.Mappings
|
||||
KeyboardHook.RequestKeyNotification(handle, shortcutMapping.Key.KeyCode, shortcutMapping.Key.ModifierKeys, False)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Shared Function CommandFromHookKeyMessage(ByVal m As Message) As ShortcutCommand
|
||||
Dim msgData As KeyboardHook.HookKeyMsgData = Marshal.PtrToStructure(m.LParam, GetType(KeyboardHook.HookKeyMsgData))
|
||||
Return Map.GetCommand(msgData.KeyCode, msgData.ModifierKeys)
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Private Fields"
|
||||
' ReSharper disable once UnusedMember.Local
|
||||
Private Shared _keyboardHook As New KeyboardHook
|
||||
Private Shared _mapLoaded As Boolean = False
|
||||
Private Shared _handle As IntPtr = IntPtr.Zero
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Shared Sub LoadDefaultMap()
|
||||
If _defaultMap IsNot Nothing Then Return
|
||||
_defaultMap = New KeyboardShortcutMap()
|
||||
_defaultMap.AddFromConfigString(ShortcutCommand.PreviousTab, My.Settings.Properties("KeysPreviousTab").DefaultValue)
|
||||
_defaultMap.AddFromConfigString(ShortcutCommand.NextTab, My.Settings.Properties("KeysNextTab").DefaultValue)
|
||||
End Sub
|
||||
|
||||
Private Shared Sub Load()
|
||||
If _mapLoaded Then Return
|
||||
_map = New KeyboardShortcutMap()
|
||||
_map.AddFromConfigString(ShortcutCommand.PreviousTab, My.Settings.KeysPreviousTab)
|
||||
_map.AddFromConfigString(ShortcutCommand.NextTab, My.Settings.KeysNextTab)
|
||||
_mapLoaded = True
|
||||
End Sub
|
||||
|
||||
Private Shared Sub Save()
|
||||
If _map Is Nothing Then Return
|
||||
My.Settings.KeysPreviousTab = _map.GetConfigString(ShortcutCommand.PreviousTab)
|
||||
My.Settings.KeysNextTab = _map.GetConfigString(ShortcutCommand.NextTab)
|
||||
End Sub
|
||||
|
||||
Private Shared Sub CancelKeyNotifications()
|
||||
If _handle = IntPtr.Zero Then Return
|
||||
For Each shortcutMapping As ShortcutMapping In Map.Mappings
|
||||
KeyboardHook.CancelKeyNotification(_handle, shortcutMapping.Key.KeyCode, shortcutMapping.Key.ModifierKeys, False)
|
||||
Next
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
Public Class KeyboardShortcutMap
|
||||
Implements ICloneable
|
||||
|
||||
#Region "Public Properties"
|
||||
Private ReadOnly _mappings As List(Of ShortcutMapping)
|
||||
Public ReadOnly Property Mappings As List(Of ShortcutMapping)
|
||||
Get
|
||||
Return _mappings
|
||||
End Get
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Constructors"
|
||||
Public Sub New()
|
||||
_mappings = New List(Of ShortcutMapping)()
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal mappings As List(Of ShortcutMapping))
|
||||
_mappings = mappings
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Sub Add(ByVal command As ShortcutCommand, ByVal shortcutKey As ShortcutKey)
|
||||
If Mappings.Contains(New ShortcutMapping(command, shortcutKey)) Then Return
|
||||
Mappings.Add(New ShortcutMapping(command, shortcutKey))
|
||||
End Sub
|
||||
|
||||
Public Sub AddRange(ByVal command As ShortcutCommand, ByVal shortcutKeys As IEnumerable(Of ShortcutKey))
|
||||
For Each shortcutKey As ShortcutKey In shortcutKeys
|
||||
Add(command, shortcutKey)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Sub Remove(ByVal command As ShortcutCommand, ByVal shortcutKey As ShortcutKey)
|
||||
Mappings.Remove(New ShortcutMapping(command, shortcutKey))
|
||||
End Sub
|
||||
|
||||
Public Sub AddFromConfigString(ByVal command As ShortcutCommand, ByVal configString As String)
|
||||
For Each shortcutKey As ShortcutKey In ParseConfigString(configString)
|
||||
Add(command, shortcutKey)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Function GetConfigString(ByVal command As ShortcutCommand) As String
|
||||
Dim parts As New List(Of String)
|
||||
For Each shortcutKey As ShortcutKey In GetShortcutKeys(command)
|
||||
parts.Add(shortcutKey.ToConfigString())
|
||||
Next
|
||||
Return String.Join(", ", parts.ToArray())
|
||||
End Function
|
||||
|
||||
Public Function GetShortcutKeys(ByVal command As ShortcutCommand) As ShortcutKey()
|
||||
Dim shortcutKeys As New List(Of ShortcutKey)
|
||||
For Each shortcutMapping As ShortcutMapping In Mappings
|
||||
If shortcutMapping.Command = command Then shortcutKeys.Add(shortcutMapping.Key)
|
||||
Next
|
||||
Return shortcutKeys.ToArray()
|
||||
End Function
|
||||
|
||||
Public Sub SetShortcutKeys(ByVal command As ShortcutCommand, ByVal shortcutKeys As IEnumerable(Of ShortcutKey))
|
||||
ClearShortcutKeys(command)
|
||||
AddRange(command, shortcutKeys)
|
||||
End Sub
|
||||
|
||||
Public Function GetCommand(ByVal keyCode As Int32, ByVal modifierKeys As KeyboardHook.ModifierKeys) As ShortcutCommand
|
||||
Return GetCommand(New ShortcutKey(keyCode, modifierKeys))
|
||||
End Function
|
||||
|
||||
Public Function Clone() As Object Implements ICloneable.Clone
|
||||
Dim newMappings As New List(Of ShortcutMapping)()
|
||||
newMappings.AddRange(Mappings)
|
||||
Return New KeyboardShortcutMap(newMappings)
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Shared Function ParseConfigString(ByVal shortcutKeysString As String) As ShortcutKey()
|
||||
Dim shortcutKeys As New List(Of ShortcutKey)
|
||||
For Each shortcutKeyString As String In shortcutKeysString.Split(New Char() {","}, StringSplitOptions.RemoveEmptyEntries)
|
||||
Try
|
||||
shortcutKeys.Add(ShortcutKey.FromConfigString(shortcutKeyString.Trim))
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(String.Format("KeyboardShortcuts.ParseShortcutKeysString({0}) failed at {1}.", shortcutKeysString, shortcutKeyString), ex, , True)
|
||||
Continue For
|
||||
End Try
|
||||
Next
|
||||
Return shortcutKeys.ToArray()
|
||||
End Function
|
||||
|
||||
Private Function GetCommand(ByVal shortcutKey As ShortcutKey) As ShortcutCommand
|
||||
For Each shortcutMapping As ShortcutMapping In Mappings
|
||||
If ShortcutKeysMatch(shortcutMapping.Key, shortcutKey) Then Return shortcutMapping.Command
|
||||
Next
|
||||
Return ShortcutCommand.None
|
||||
End Function
|
||||
|
||||
Private Shared Function ShortcutKeysMatch(ByVal wanted As ShortcutKey, ByVal pressed As ShortcutKey) As Boolean
|
||||
If Not wanted.KeyCode = pressed.KeyCode Then Return False
|
||||
Return KeyboardHook.ModifierKeysMatch(wanted.ModifierKeys, pressed.ModifierKeys)
|
||||
End Function
|
||||
|
||||
Private Sub ClearShortcutKeys(ByVal command As ShortcutCommand)
|
||||
Dim mappingsToRemove As New List(Of ShortcutMapping)
|
||||
For Each mapping As ShortcutMapping In Mappings
|
||||
If mapping.Command = command Then mappingsToRemove.Add(mapping)
|
||||
Next
|
||||
|
||||
For Each mapping As ShortcutMapping In mappingsToRemove
|
||||
Mappings.Remove(mapping)
|
||||
Next
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
<ImmutableObject(True)> _
|
||||
Public Class ShortcutMapping
|
||||
Implements IEquatable(Of ShortcutMapping)
|
||||
|
||||
#Region "Public Properties"
|
||||
Private ReadOnly _command As ShortcutCommand
|
||||
Public ReadOnly Property Command As ShortcutCommand
|
||||
Get
|
||||
Return _command
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private ReadOnly _key As ShortcutKey
|
||||
Public ReadOnly Property Key As ShortcutKey
|
||||
Get
|
||||
Return _key
|
||||
End Get
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Constructors"
|
||||
Public Sub New(ByVal command As ShortcutCommand, ByVal key As ShortcutKey)
|
||||
_command = command
|
||||
_key = Key
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Overloads Function Equals(other As ShortcutMapping) As Boolean Implements IEquatable(Of ShortcutMapping).Equals
|
||||
If Not Command = other.Command Then Return False
|
||||
If Not Key = other.Key Then Return False
|
||||
Return True
|
||||
End Function
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
<ImmutableObject(True)> _
|
||||
Public Class ShortcutKey
|
||||
Implements IEquatable(Of ShortcutKey)
|
||||
|
||||
#Region "Public Properties"
|
||||
Private ReadOnly _keyCode As Int32
|
||||
Public ReadOnly Property KeyCode As Int32
|
||||
Get
|
||||
Return _keyCode
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private ReadOnly _modifierKeys As KeyboardHook.ModifierKeys
|
||||
Public ReadOnly Property ModifierKeys As KeyboardHook.ModifierKeys
|
||||
Get
|
||||
Return _modifierKeys
|
||||
End Get
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Constructors"
|
||||
Public Sub New(ByVal keyCode As Int32, ByVal modifierKeys As KeyboardHook.ModifierKeys)
|
||||
_keyCode = keyCode
|
||||
_modifierKeys = modifierKeys
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal keysValue As Keys)
|
||||
_keyCode = keysValue And Keys.KeyCode
|
||||
If Not (keysValue And Keys.Shift) = 0 Then _modifierKeys = _modifierKeys Or KeyboardHook.ModifierKeys.Shift
|
||||
If Not (keysValue And Keys.Control) = 0 Then _modifierKeys = _modifierKeys Or KeyboardHook.ModifierKeys.Control
|
||||
If Not (keysValue And Keys.Alt) = 0 Then _modifierKeys = _modifierKeys Or KeyboardHook.ModifierKeys.Alt
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Function ToConfigString() As String
|
||||
Return String.Join("/", New String() {KeyCode, Convert.ToInt32(ModifierKeys)})
|
||||
End Function
|
||||
|
||||
Public Shared Function FromConfigString(ByVal shortcutKeyString As String) As ShortcutKey
|
||||
Dim parts As String() = shortcutKeyString.Split(New Char() {"/"}, 2)
|
||||
If Not parts.Length = 2 Then Throw New ArgumentException(String.Format("ShortcutKey.FromString({0}) failed. parts.Length != 2", shortcutKeyString), shortcutKeyString)
|
||||
Return New ShortcutKey(Convert.ToInt32(parts(0)), Convert.ToInt32(parts(1)))
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return HotkeyControl.KeysToString(Me)
|
||||
End Function
|
||||
|
||||
Public Overloads Function Equals(other As ShortcutKey) As Boolean Implements IEquatable(Of ShortcutKey).Equals
|
||||
If Not KeyCode = other.KeyCode Then Return False
|
||||
If Not ModifierKeys = other.ModifierKeys Then Return False
|
||||
Return True
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Operators"
|
||||
Public Shared Operator =(ByVal shortcutKey1 As ShortcutKey, ByVal shortcutKey2 As ShortcutKey) As Boolean
|
||||
Return shortcutKey1.Equals(shortcutKey2)
|
||||
End Operator
|
||||
|
||||
Public Shared Operator <>(ByVal shortcutKey1 As ShortcutKey, ByVal shortcutKey2 As ShortcutKey) As Boolean
|
||||
Return Not shortcutKey1.Equals(shortcutKey2)
|
||||
End Operator
|
||||
|
||||
' This is a narrowing conversion because (Keys Or Keys.Modifiers) cannot hold all possible values of KeyboardHook.ModifierKeys
|
||||
Public Shared Narrowing Operator CType(ByVal shortcutKey As ShortcutKey) As Keys
|
||||
Dim keysValue As Keys = shortcutKey.KeyCode And Keys.KeyCode
|
||||
If Not (shortcutKey.ModifierKeys And KeyboardHook.ModifierKeys.Shift) = 0 Then keysValue = keysValue Or Keys.Shift
|
||||
If Not (shortcutKey.ModifierKeys And KeyboardHook.ModifierKeys.Control) = 0 Then keysValue = keysValue Or Keys.Control
|
||||
If Not (shortcutKey.ModifierKeys And KeyboardHook.ModifierKeys.Alt) = 0 Then keysValue = keysValue Or Keys.Alt
|
||||
Return keysValue
|
||||
End Operator
|
||||
|
||||
Public Shared Widening Operator CType(ByVal keys As Keys) As ShortcutKey
|
||||
Return New ShortcutKey(keys)
|
||||
End Operator
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
Public Enum ShortcutCommand As Integer
|
||||
None = 0
|
||||
PreviousTab
|
||||
NextTab
|
||||
End Enum
|
||||
End Namespace
|
||||
99
mRemoteV1/Config/Putty/Provider.vb
Normal file
99
mRemoteV1/Config/Putty/Provider.vb
Normal file
@@ -0,0 +1,99 @@
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Config.Putty
|
||||
Public MustInherit Class Provider
|
||||
#Region "Public Methods"
|
||||
Private _rootTreeNode As TreeNode
|
||||
Public ReadOnly Property RootTreeNode As TreeNode
|
||||
Get
|
||||
If _rootTreeNode Is Nothing Then _rootTreeNode = CreateRootTreeNode()
|
||||
Return _rootTreeNode
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private _rootInfo As Root.PuttySessions.Info
|
||||
Public ReadOnly Property RootInfo() As Root.PuttySessions.Info
|
||||
Get
|
||||
If _rootInfo Is Nothing Then _rootInfo = CreateRootInfo()
|
||||
Return _rootInfo
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public MustOverride Function GetSessionNames(Optional ByVal raw As Boolean = False) As String()
|
||||
Public MustOverride Function GetSession(ByVal sessionName As String) As Connection.PuttySession.Info
|
||||
|
||||
Public Overridable Function GetSessions() As Connection.PuttySession.Info()
|
||||
Dim sessionList As New List(Of Connection.PuttySession.Info)
|
||||
Dim sessionInfo As Connection.Info
|
||||
For Each sessionName As String In GetSessionNames(True)
|
||||
sessionInfo = GetSession(sessionName)
|
||||
If sessionInfo Is Nothing OrElse String.IsNullOrEmpty(sessionInfo.Hostname) Then Continue For
|
||||
sessionList.Add(sessionInfo)
|
||||
Next
|
||||
Return sessionList.ToArray()
|
||||
End Function
|
||||
|
||||
Public Overridable Sub StartWatcher()
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub StopWatcher()
|
||||
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Events"
|
||||
Public Event SessionChanged(ByVal sender As Object, ByVal e As SessionChangedEventArgs)
|
||||
#End Region
|
||||
|
||||
#Region "Public Classes"
|
||||
Public Class SessionChangedEventArgs
|
||||
Inherits EventArgs
|
||||
End Class
|
||||
#End Region
|
||||
|
||||
#Region "Protected Methods"
|
||||
Private Delegate Function CreateRootTreeNodeDelegate() As TreeNode
|
||||
Protected Overridable Function CreateRootTreeNode() As TreeNode
|
||||
Dim treeView As TreeView = Tree.Node.TreeView
|
||||
If treeView Is Nothing Then Return Nothing
|
||||
If treeView.InvokeRequired Then
|
||||
Return treeView.Invoke(New CreateRootTreeNodeDelegate(AddressOf CreateRootTreeNode))
|
||||
End If
|
||||
|
||||
Dim newTreeNode As New TreeNode
|
||||
RootInfo.TreeNode = newTreeNode
|
||||
|
||||
newTreeNode.Name = _rootInfo.Name
|
||||
newTreeNode.Text = _rootInfo.Name
|
||||
newTreeNode.Tag = _rootInfo
|
||||
newTreeNode.ImageIndex = Images.Enums.TreeImage.PuttySessions
|
||||
newTreeNode.SelectedImageIndex = Images.Enums.TreeImage.PuttySessions
|
||||
|
||||
Return newTreeNode
|
||||
End Function
|
||||
|
||||
Protected Overridable Function CreateRootInfo() As Root.PuttySessions.Info
|
||||
Dim newRootInfo As New Root.PuttySessions.Info
|
||||
|
||||
If String.IsNullOrEmpty(My.Settings.PuttySavedSessionsName) Then
|
||||
newRootInfo.Name = Language.strPuttySavedSessionsRootName
|
||||
Else
|
||||
newRootInfo.Name = My.Settings.PuttySavedSessionsName
|
||||
End If
|
||||
|
||||
If String.IsNullOrEmpty(My.Settings.PuttySavedSessionsPanel) Then
|
||||
newRootInfo.Panel = Language.strGeneral
|
||||
Else
|
||||
newRootInfo.Panel = My.Settings.PuttySavedSessionsPanel
|
||||
End If
|
||||
|
||||
Return newRootInfo
|
||||
End Function
|
||||
|
||||
Protected Overridable Sub OnSessionChanged(ByVal e As SessionChangedEventArgs)
|
||||
RaiseEvent SessionChanged(Me, New SessionChangedEventArgs())
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
121
mRemoteV1/Config/Putty/RegistryProvider.vb
Normal file
121
mRemoteV1/Config/Putty/RegistryProvider.vb
Normal file
@@ -0,0 +1,121 @@
|
||||
Imports System.Management
|
||||
Imports mRemoteNG.App
|
||||
Imports mRemoteNG.Messages
|
||||
Imports Microsoft.Win32
|
||||
Imports mRemoteNG.Connection.Protocol
|
||||
Imports System.Security.Principal
|
||||
|
||||
Namespace Config.Putty
|
||||
Public Class RegistryProvider
|
||||
Inherits Provider
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Overrides Function GetSessionNames(Optional ByVal raw As Boolean = False) As String()
|
||||
Dim sessionsKey As RegistryKey = Registry.CurrentUser.OpenSubKey(PuttySessionsKey)
|
||||
If sessionsKey Is Nothing Then Return New String() {}
|
||||
|
||||
Dim sessionNames As New List(Of String)
|
||||
For Each sessionName As String In sessionsKey.GetSubKeyNames()
|
||||
If raw Then
|
||||
sessionNames.Add(sessionName)
|
||||
Else
|
||||
sessionNames.Add(Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B")))
|
||||
End If
|
||||
Next
|
||||
|
||||
If raw Then
|
||||
If Not sessionNames.Contains("Default%20Settings") Then ' Do not localize
|
||||
sessionNames.Insert(0, "Default%20Settings")
|
||||
End If
|
||||
Else
|
||||
If Not sessionNames.Contains("Default Settings") Then
|
||||
sessionNames.Insert(0, "Default Settings")
|
||||
End If
|
||||
End If
|
||||
|
||||
Return sessionNames.ToArray()
|
||||
End Function
|
||||
|
||||
Public Overrides Function GetSession(ByVal sessionName As String) As Connection.PuttySession.Info
|
||||
Dim sessionsKey As RegistryKey = Registry.CurrentUser.OpenSubKey(PuttySessionsKey)
|
||||
If sessionsKey Is Nothing Then Return Nothing
|
||||
|
||||
Dim sessionKey As RegistryKey = sessionsKey.OpenSubKey(sessionName)
|
||||
If sessionKey Is Nothing Then Return Nothing
|
||||
|
||||
sessionName = Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B"))
|
||||
|
||||
Dim sessionInfo As New Connection.PuttySession.Info
|
||||
With sessionInfo
|
||||
.PuttySession = sessionName
|
||||
.Name = sessionName
|
||||
.Hostname = sessionKey.GetValue("HostName")
|
||||
.Username = sessionKey.GetValue("UserName")
|
||||
Dim protocol As String = sessionKey.GetValue("Protocol")
|
||||
If protocol Is Nothing Then protocol = "ssh"
|
||||
Select Case protocol.ToLowerInvariant()
|
||||
Case "raw"
|
||||
.Protocol = Protocols.RAW
|
||||
Case "rlogin"
|
||||
.Protocol = Protocols.Rlogin
|
||||
Case "serial"
|
||||
Return Nothing
|
||||
Case "ssh"
|
||||
Dim sshVersionObject As Object = sessionKey.GetValue("SshProt")
|
||||
If sshVersionObject IsNot Nothing Then
|
||||
Dim sshVersion As Integer = CType(sshVersionObject, Integer)
|
||||
If sshVersion >= 2 Then
|
||||
.Protocol = Protocols.SSH2
|
||||
Else
|
||||
.Protocol = Protocols.SSH1
|
||||
End If
|
||||
Else
|
||||
.Protocol = Protocols.SSH2
|
||||
End If
|
||||
Case "telnet"
|
||||
.Protocol = Protocols.Telnet
|
||||
Case Else
|
||||
Return Nothing
|
||||
End Select
|
||||
.Port = sessionKey.GetValue("PortNumber")
|
||||
End With
|
||||
|
||||
Return sessionInfo
|
||||
End Function
|
||||
|
||||
Public Overrides Sub StartWatcher()
|
||||
If _eventWatcher IsNot Nothing Then Return
|
||||
|
||||
Try
|
||||
Dim currentUserSid As String = WindowsIdentity.GetCurrent().User.Value
|
||||
Dim key As String = String.Join("\", {currentUserSid, PuttySessionsKey}).Replace("\", "\\")
|
||||
Dim query As New WqlEventQuery(String.Format("SELECT * FROM RegistryTreeChangeEvent WHERE Hive = 'HKEY_USERS' AND RootPath = '{0}'", key))
|
||||
_eventWatcher = New ManagementEventWatcher(query)
|
||||
AddHandler _eventWatcher.EventArrived, AddressOf OnManagementEventArrived
|
||||
_eventWatcher.Start()
|
||||
Catch ex As Exception
|
||||
Runtime.MessageCollector.AddExceptionMessage("PuttySessions.Watcher.StartWatching() failed.", ex, MessageClass.WarningMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub StopWatcher()
|
||||
If _eventWatcher Is Nothing Then Return
|
||||
_eventWatcher.Stop()
|
||||
_eventWatcher.Dispose()
|
||||
_eventWatcher = Nothing
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Fields"
|
||||
Private Const PuttySessionsKey As String = "Software\SimonTatham\PuTTY\Sessions"
|
||||
Private Shared _eventWatcher As ManagementEventWatcher
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Sub OnManagementEventArrived(ByVal sender As Object, ByVal e As EventArrivedEventArgs)
|
||||
OnSessionChanged(New SessionChangedEventArgs())
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
168
mRemoteV1/Config/Putty/Sessions.vb
Normal file
168
mRemoteV1/Config/Putty/Sessions.vb
Normal file
@@ -0,0 +1,168 @@
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.Tools
|
||||
|
||||
Namespace Config.Putty
|
||||
Public Class Sessions
|
||||
#Region "Public Methods"
|
||||
Private Delegate Sub AddSessionsToTreeDelegate()
|
||||
Public Shared Sub AddSessionsToTree()
|
||||
Dim treeView As TreeView = Tree.Node.TreeView
|
||||
If treeView Is Nothing Then Return
|
||||
If treeView.InvokeRequired Then
|
||||
treeView.Invoke(New AddSessionsToTreeDelegate(AddressOf AddSessionsToTree))
|
||||
Return
|
||||
End If
|
||||
|
||||
For Each provider As Provider In Providers
|
||||
Dim rootTreeNode As TreeNode = provider.RootTreeNode
|
||||
Dim inUpdate As Boolean = False
|
||||
|
||||
Dim savedSessions As New List(Of Connection.Info)(provider.GetSessions())
|
||||
If Not IsProviderEnabled(provider) Or savedSessions Is Nothing OrElse savedSessions.Count = 0 Then
|
||||
If rootTreeNode IsNot Nothing AndAlso treeView.Nodes.Contains(rootTreeNode) Then
|
||||
treeView.BeginUpdate()
|
||||
treeView.Nodes.Remove(rootTreeNode)
|
||||
treeView.EndUpdate()
|
||||
End If
|
||||
Continue For
|
||||
End If
|
||||
|
||||
If Not treeView.Nodes.Contains(rootTreeNode) Then
|
||||
If Not inUpdate Then
|
||||
treeView.BeginUpdate()
|
||||
inUpdate = True
|
||||
End If
|
||||
treeView.Nodes.Add(rootTreeNode)
|
||||
End If
|
||||
|
||||
Dim newTreeNodes As New List(Of TreeNode)
|
||||
For Each sessionInfo As Connection.PuttySession.Info In savedSessions
|
||||
Dim treeNode As TreeNode
|
||||
Dim isNewNode As Boolean
|
||||
If rootTreeNode.Nodes.ContainsKey(sessionInfo.Name) Then
|
||||
treeNode = rootTreeNode.Nodes.Item(sessionInfo.Name)
|
||||
isNewNode = False
|
||||
Else
|
||||
treeNode = Tree.Node.AddNode(Tree.Node.Type.PuttySession, sessionInfo.Name)
|
||||
If treeNode Is Nothing Then Continue For
|
||||
treeNode.Name = treeNode.Text
|
||||
treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
isNewNode = True
|
||||
End If
|
||||
|
||||
sessionInfo.RootPuttySessionsInfo = provider.RootInfo
|
||||
sessionInfo.TreeNode = treeNode
|
||||
sessionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||
|
||||
treeNode.Tag = sessionInfo
|
||||
|
||||
If isNewNode Then newTreeNodes.Add(treeNode)
|
||||
Next
|
||||
|
||||
For Each treeNode As TreeNode In rootTreeNode.Nodes
|
||||
If Not savedSessions.Contains(treeNode.Tag) Then
|
||||
If Not inUpdate Then
|
||||
treeView.BeginUpdate()
|
||||
inUpdate = True
|
||||
End If
|
||||
rootTreeNode.Nodes.Remove(treeNode)
|
||||
End If
|
||||
Next
|
||||
|
||||
If Not newTreeNodes.Count = 0 Then
|
||||
If Not inUpdate Then
|
||||
treeView.BeginUpdate()
|
||||
inUpdate = True
|
||||
End If
|
||||
rootTreeNode.Nodes.AddRange(newTreeNodes.ToArray())
|
||||
End If
|
||||
|
||||
If inUpdate Then
|
||||
Tree.Node.Sort(rootTreeNode, SortOrder.Ascending)
|
||||
rootTreeNode.Expand()
|
||||
treeView.EndUpdate()
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Shared Sub StartWatcher()
|
||||
For Each provider As Provider In Providers
|
||||
provider.StartWatcher()
|
||||
AddHandler provider.SessionChanged, AddressOf SessionChanged
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Shared Sub StopWatcher()
|
||||
For Each provider As Provider In Providers
|
||||
provider.StopWatcher()
|
||||
RemoveHandler provider.SessionChanged, AddressOf SessionChanged
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Shared Sub SessionChanged(ByVal sender As Object, ByVal e As Provider.SessionChangedEventArgs)
|
||||
AddSessionsToTree()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Shared _providers As List(Of Provider)
|
||||
Private Shared ReadOnly Property Providers() As List(Of Provider)
|
||||
Get
|
||||
If _providers Is Nothing OrElse _providers.Count = 0 Then AddProviders()
|
||||
Return _providers
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private Shared Sub AddProviders()
|
||||
_providers = New List(Of Provider)()
|
||||
_providers.Add(New RegistryProvider())
|
||||
_providers.Add(New XmingProvider())
|
||||
End Sub
|
||||
|
||||
Private Shared Function GetSessionNames(Optional ByVal raw As Boolean = False) As String()
|
||||
Dim sessionNames As New List(Of String)
|
||||
For Each provider As Provider In Providers
|
||||
If Not IsProviderEnabled(provider) Then Continue For
|
||||
sessionNames.AddRange(provider.GetSessionNames(raw))
|
||||
Next
|
||||
Return sessionNames.ToArray()
|
||||
End Function
|
||||
|
||||
Private Shared Function IsProviderEnabled(ByVal provider As Provider) As Boolean
|
||||
Dim enabled As Boolean = True
|
||||
Select Case PuttyTypeDetector.GetPuttyType()
|
||||
Case PuttyTypeDetector.PuttyType.Xming
|
||||
If TypeOf (provider) Is RegistryProvider Then enabled = False
|
||||
Case Else
|
||||
If TypeOf (provider) Is XmingProvider Then enabled = False
|
||||
End Select
|
||||
Return enabled
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Public Classes"
|
||||
Public Class SessionList
|
||||
Inherits StringConverter
|
||||
|
||||
Public Shared ReadOnly Property Names() As String()
|
||||
Get
|
||||
Return GetSessionNames()
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Overloads Overrides Function GetStandardValues(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
|
||||
Return New StandardValuesCollection(Names)
|
||||
End Function
|
||||
|
||||
Public Overloads Overrides Function GetStandardValuesExclusive(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Overloads Overrides Function GetStandardValuesSupported(ByVal context As ITypeDescriptorContext) As Boolean
|
||||
Return True
|
||||
End Function
|
||||
End Class
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
259
mRemoteV1/Config/Putty/XmingProvider.vb
Normal file
259
mRemoteV1/Config/Putty/XmingProvider.vb
Normal file
@@ -0,0 +1,259 @@
|
||||
Imports System.IO
|
||||
Imports mRemoteNG.App
|
||||
Imports mRemoteNG.Messages
|
||||
Imports mRemoteNG.Connection.Protocol
|
||||
Imports System.Text.RegularExpressions
|
||||
|
||||
Namespace Config.Putty
|
||||
Public Class XmingProvider
|
||||
Inherits Provider
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Overrides Function GetSessionNames(Optional ByVal raw As Boolean = False) As String()
|
||||
Dim sessionsFolderPath As String = GetSessionsFolderPath()
|
||||
If Not Directory.Exists(sessionsFolderPath) Then Return New String() {}
|
||||
|
||||
Dim sessionNames As New List(Of String)
|
||||
For Each sessionName As String In Directory.GetFiles(sessionsFolderPath)
|
||||
sessionName = Path.GetFileName(sessionName)
|
||||
If raw Then
|
||||
sessionNames.Add(sessionName)
|
||||
Else
|
||||
sessionNames.Add(Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B")))
|
||||
End If
|
||||
Next
|
||||
|
||||
If raw Then
|
||||
If Not sessionNames.Contains("Default%20Settings") Then ' Do not localize
|
||||
sessionNames.Insert(0, "Default%20Settings")
|
||||
End If
|
||||
Else
|
||||
If Not sessionNames.Contains("Default Settings") Then
|
||||
sessionNames.Insert(0, "Default Settings")
|
||||
End If
|
||||
End If
|
||||
|
||||
Dim registrySessionNames As New List(Of String)
|
||||
For Each sessionName As String In RegistryProvider.GetSessionNames(raw)
|
||||
registrySessionNames.Add(String.Format(RegistrySessionNameFormat, sessionName))
|
||||
Next
|
||||
|
||||
sessionNames.AddRange(registrySessionNames)
|
||||
sessionNames.Sort()
|
||||
|
||||
Return sessionNames.ToArray()
|
||||
End Function
|
||||
|
||||
Public Overrides Function GetSession(ByVal sessionName As String) As Connection.PuttySession.Info
|
||||
Dim registrySessionName As String = GetRegistrySessionName(sessionName)
|
||||
If Not String.IsNullOrEmpty(registrySessionName) Then
|
||||
Return ModifyRegistrySessionInfo(RegistryProvider.GetSession(registrySessionName))
|
||||
End If
|
||||
|
||||
Dim sessionsFolderPath As String = GetSessionsFolderPath()
|
||||
If Not Directory.Exists(sessionsFolderPath) Then Return Nothing
|
||||
|
||||
Dim sessionFile As String = Path.Combine(sessionsFolderPath, sessionName)
|
||||
If Not File.Exists(sessionFile) Then Return Nothing
|
||||
|
||||
sessionName = Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B"))
|
||||
|
||||
Dim sessionFileReader As New SessionFileReader(sessionFile)
|
||||
Dim sessionInfo As New Connection.PuttySession.Info
|
||||
With sessionInfo
|
||||
.PuttySession = sessionName
|
||||
.Name = sessionName
|
||||
.Hostname = sessionFileReader.GetValue("HostName")
|
||||
.Username = sessionFileReader.GetValue("UserName")
|
||||
Dim protocol As String = sessionFileReader.GetValue("Protocol")
|
||||
If protocol Is Nothing Then protocol = "ssh"
|
||||
Select Case protocol.ToLowerInvariant()
|
||||
Case "raw"
|
||||
.Protocol = Protocols.RAW
|
||||
Case "rlogin"
|
||||
.Protocol = Protocols.Rlogin
|
||||
Case "serial"
|
||||
Return Nothing
|
||||
Case "ssh"
|
||||
Dim sshVersionObject As Object = sessionFileReader.GetValue("SshProt")
|
||||
If sshVersionObject IsNot Nothing Then
|
||||
Dim sshVersion As Integer = CType(sshVersionObject, Integer)
|
||||
If sshVersion >= 2 Then
|
||||
.Protocol = Protocols.SSH2
|
||||
Else
|
||||
.Protocol = Protocols.SSH1
|
||||
End If
|
||||
Else
|
||||
.Protocol = Protocols.SSH2
|
||||
End If
|
||||
Case "telnet"
|
||||
.Protocol = Protocols.Telnet
|
||||
Case Else
|
||||
Return Nothing
|
||||
End Select
|
||||
.Port = sessionFileReader.GetValue("PortNumber")
|
||||
End With
|
||||
|
||||
Return sessionInfo
|
||||
End Function
|
||||
|
||||
Public Overrides Sub StartWatcher()
|
||||
RegistryProvider.StartWatcher()
|
||||
AddHandler RegistryProvider.SessionChanged, AddressOf OnRegistrySessionChanged
|
||||
|
||||
If _eventWatcher IsNot Nothing Then Return
|
||||
|
||||
Try
|
||||
_eventWatcher = New FileSystemWatcher(GetSessionsFolderPath())
|
||||
_eventWatcher.NotifyFilter = (NotifyFilters.FileName Or NotifyFilters.LastWrite)
|
||||
AddHandler _eventWatcher.Changed, AddressOf OnFileSystemEventArrived
|
||||
AddHandler _eventWatcher.Created, AddressOf OnFileSystemEventArrived
|
||||
AddHandler _eventWatcher.Deleted, AddressOf OnFileSystemEventArrived
|
||||
AddHandler _eventWatcher.Renamed, AddressOf OnFileSystemEventArrived
|
||||
_eventWatcher.EnableRaisingEvents = True
|
||||
Catch ex As Exception
|
||||
Runtime.MessageCollector.AddExceptionMessage("XmingPortablePuttySessions.Watcher.StartWatching() failed.", ex, MessageClass.WarningMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub StopWatcher()
|
||||
RegistryProvider.StopWatcher()
|
||||
RemoveHandler RegistryProvider.SessionChanged, AddressOf OnRegistrySessionChanged
|
||||
|
||||
If _eventWatcher Is Nothing Then Return
|
||||
_eventWatcher.EnableRaisingEvents = False
|
||||
_eventWatcher.Dispose()
|
||||
_eventWatcher = Nothing
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Fields"
|
||||
Private Const RegistrySessionNameFormat As String = "{0} [registry]"
|
||||
Private Const RegistrySessionNamePattern As String = "(.*)\ \[registry\]"
|
||||
|
||||
Private Shared ReadOnly RegistryProvider As New RegistryProvider
|
||||
Private Shared _eventWatcher As FileSystemWatcher
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Shared Function GetPuttyConfPath() As String
|
||||
Dim puttyPath As String
|
||||
If My.Settings.UseCustomPuttyPath Then
|
||||
puttyPath = My.Settings.CustomPuttyPath
|
||||
Else
|
||||
puttyPath = Info.General.PuttyPath
|
||||
End If
|
||||
Return Path.Combine(Path.GetDirectoryName(puttyPath), "putty.conf")
|
||||
End Function
|
||||
|
||||
Private Shared Function GetSessionsFolderPath() As String
|
||||
Dim puttyConfPath As String = GetPuttyConfPath()
|
||||
Dim sessionFileReader As New PuttyConfFileReader(puttyConfPath)
|
||||
Dim basePath As String = Environment.ExpandEnvironmentVariables(sessionFileReader.GetValue("sshk&sess"))
|
||||
Return Path.Combine(basePath, "sessions")
|
||||
End Function
|
||||
|
||||
Private Shared Function GetRegistrySessionName(ByVal sessionName As String) As String
|
||||
Dim regex As New Regex(RegistrySessionNamePattern)
|
||||
|
||||
Dim matches As MatchCollection = regex.Matches(sessionName)
|
||||
If matches.Count < 1 Then Return String.Empty
|
||||
|
||||
Dim groups As GroupCollection = matches(0).Groups
|
||||
If groups.Count < 1 Then Return String.Empty ' This should always include at least one item, but check anyway
|
||||
|
||||
Return groups(1).Value
|
||||
End Function
|
||||
|
||||
Private Shared Function ModifyRegistrySessionInfo(ByVal sessionInfo As Connection.PuttySession.Info) As Connection.PuttySession.Info
|
||||
sessionInfo.Name = String.Format(RegistrySessionNameFormat, sessionInfo.Name)
|
||||
sessionInfo.PuttySession = String.Format(RegistrySessionNameFormat, sessionInfo.PuttySession)
|
||||
Return sessionInfo
|
||||
End Function
|
||||
|
||||
Private Sub OnFileSystemEventArrived(ByVal sender As Object, ByVal e As FileSystemEventArgs)
|
||||
OnSessionChanged(New SessionChangedEventArgs())
|
||||
End Sub
|
||||
|
||||
Private Sub OnRegistrySessionChanged(ByVal sender As Object, ByVal e As SessionChangedEventArgs)
|
||||
OnSessionChanged(New SessionChangedEventArgs())
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Classes"
|
||||
Private Class PuttyConfFileReader
|
||||
Public Sub New(ByVal puttyConfFile As String)
|
||||
_puttyConfFile = puttyConfFile
|
||||
End Sub
|
||||
|
||||
Private ReadOnly _puttyConfFile As String
|
||||
Private _configurationLoaded As Boolean = False
|
||||
Private ReadOnly _configuration As New Dictionary(Of String, String)
|
||||
|
||||
Private Sub LoadConfiguration()
|
||||
_configurationLoaded = True
|
||||
Try
|
||||
If Not File.Exists(_puttyConfFile) Then Return
|
||||
Using streamReader As New StreamReader(_puttyConfFile)
|
||||
Dim line As String
|
||||
Do
|
||||
line = streamReader.ReadLine()
|
||||
If line Is Nothing Then Exit Do
|
||||
line = line.Trim()
|
||||
If line = String.Empty Then Continue Do ' Blank line
|
||||
If line.Substring(0, 1) = ";" Then Continue Do ' Comment
|
||||
Dim parts() As String = line.Split(New Char() {"="}, 2)
|
||||
If parts.Length < 2 Then Continue Do
|
||||
If _configuration.ContainsKey(parts(0)) Then Continue Do ' As per http://www.straightrunning.com/XmingNotes/portableputty.php only first entry is used
|
||||
_configuration.Add(parts(0), parts(1))
|
||||
Loop
|
||||
End Using
|
||||
Catch ex As Exception
|
||||
Runtime.MessageCollector.AddExceptionMessage("PuttyConfFileReader.LoadConfiguration() failed.", ex, MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Function GetValue(ByVal setting As String) As String
|
||||
If Not _configurationLoaded Then LoadConfiguration()
|
||||
If Not _configuration.ContainsKey(setting) Then Return String.Empty
|
||||
Return _configuration(setting)
|
||||
End Function
|
||||
End Class
|
||||
|
||||
Private Class SessionFileReader
|
||||
Public Sub New(ByVal sessionFile As String)
|
||||
_sessionFile = sessionFile
|
||||
End Sub
|
||||
|
||||
Private ReadOnly _sessionFile As String
|
||||
Private _sessionInfoLoaded As Boolean = False
|
||||
Private ReadOnly _sessionInfo As New Dictionary(Of String, String)
|
||||
|
||||
Private Sub LoadSessionInfo()
|
||||
_sessionInfoLoaded = True
|
||||
Try
|
||||
If Not File.Exists(_sessionFile) Then Return
|
||||
Using streamReader As New StreamReader(_sessionFile)
|
||||
Dim line As String
|
||||
Do
|
||||
line = streamReader.ReadLine()
|
||||
If line Is Nothing Then Exit Do
|
||||
Dim parts() As String = line.Split(New Char() {"\"})
|
||||
If parts.Length < 2 Then Continue Do
|
||||
_sessionInfo.Add(parts(0), parts(1))
|
||||
Loop
|
||||
End Using
|
||||
Catch ex As Exception
|
||||
Runtime.MessageCollector.AddExceptionMessage("SessionFileReader.LoadSessionInfo() failed.", ex, MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Function GetValue(ByVal setting As String) As String
|
||||
If Not _sessionInfoLoaded Then LoadSessionInfo()
|
||||
If Not _sessionInfo.ContainsKey(setting) Then Return String.Empty
|
||||
Return _sessionInfo(setting)
|
||||
End Function
|
||||
End Class
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
@@ -1,243 +0,0 @@
|
||||
Imports System.ComponentModel
|
||||
Imports System.Management
|
||||
Imports mRemoteNG.Messages
|
||||
Imports Microsoft.Win32
|
||||
Imports mRemoteNG.Connection.Protocol
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports System.Security.Principal
|
||||
|
||||
Namespace Config
|
||||
Public Class PuttySessions
|
||||
Private Const PuttySessionsKey As String = "Software\SimonTatham\PuTTY\Sessions"
|
||||
Private Shared _rootTreeNode As TreeNode
|
||||
Private Shared _eventWatcher As ManagementEventWatcher
|
||||
|
||||
Private Delegate Sub AddSessionsToTreeDelegate()
|
||||
Public Shared Sub AddSessionsToTree()
|
||||
Dim treeView As TreeView = Tree.Node.TreeView
|
||||
If treeView Is Nothing Then Return
|
||||
If treeView.InvokeRequired Then
|
||||
treeView.Invoke(New AddSessionsToTreeDelegate(AddressOf AddSessionsToTree))
|
||||
Return
|
||||
End If
|
||||
|
||||
Dim savedSessions As New List(Of Connection.Info)(LoadSessions())
|
||||
If savedSessions Is Nothing OrElse savedSessions.Count = 0 Then Return
|
||||
|
||||
Dim puttyRootInfo As New Root.PuttySessions.Info()
|
||||
If String.IsNullOrEmpty(My.Settings.PuttySavedSessionsName) Then
|
||||
puttyRootInfo.Name = Language.strPuttySavedSessionsRootName
|
||||
Else
|
||||
puttyRootInfo.Name = My.Settings.PuttySavedSessionsName
|
||||
End If
|
||||
If String.IsNullOrEmpty(My.Settings.PuttySavedSessionsPanel) Then
|
||||
puttyRootInfo.Panel = Language.strGeneral
|
||||
Else
|
||||
puttyRootInfo.Panel = My.Settings.PuttySavedSessionsPanel
|
||||
End If
|
||||
|
||||
Dim inUpdate As Boolean = False
|
||||
|
||||
If _rootTreeNode Is Nothing Then
|
||||
_rootTreeNode = New TreeNode
|
||||
_rootTreeNode.Name = puttyRootInfo.Name
|
||||
_rootTreeNode.Text = puttyRootInfo.Name
|
||||
_rootTreeNode.Tag = puttyRootInfo
|
||||
_rootTreeNode.ImageIndex = Images.Enums.TreeImage.PuttySessions
|
||||
_rootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.PuttySessions
|
||||
End If
|
||||
|
||||
If Not treeView.Nodes.Contains(_rootTreeNode) Then
|
||||
If Not inUpdate Then
|
||||
treeView.BeginUpdate()
|
||||
inUpdate = True
|
||||
End If
|
||||
treeView.Nodes.Add(_rootTreeNode)
|
||||
End If
|
||||
|
||||
puttyRootInfo.TreeNode = _rootTreeNode
|
||||
|
||||
Dim newTreeNodes As New List(Of TreeNode)
|
||||
For Each sessionInfo As Connection.PuttySession.Info In savedSessions
|
||||
Dim treeNode As TreeNode
|
||||
Dim isNewNode As Boolean
|
||||
If _rootTreeNode.Nodes.ContainsKey(sessionInfo.Name) Then
|
||||
treeNode = _rootTreeNode.Nodes.Item(sessionInfo.Name)
|
||||
isNewNode = False
|
||||
Else
|
||||
treeNode = Tree.Node.AddNode(Tree.Node.Type.PuttySession, sessionInfo.Name)
|
||||
If treeNode Is Nothing Then Continue For
|
||||
treeNode.Name = treeNode.Text
|
||||
treeNode.ImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
treeNode.SelectedImageIndex = Images.Enums.TreeImage.ConnectionClosed
|
||||
isNewNode = True
|
||||
End If
|
||||
|
||||
sessionInfo.RootPuttySessionsInfo = puttyRootInfo
|
||||
sessionInfo.TreeNode = treeNode
|
||||
sessionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||
|
||||
treeNode.Tag = sessionInfo
|
||||
|
||||
If isNewNode Then newTreeNodes.Add(treeNode)
|
||||
Next
|
||||
|
||||
For Each treeNode As TreeNode In _rootTreeNode.Nodes
|
||||
If Not savedSessions.Contains(treeNode.Tag) Then
|
||||
If Not inUpdate Then
|
||||
treeView.BeginUpdate()
|
||||
inUpdate = True
|
||||
End If
|
||||
_rootTreeNode.Nodes.Remove(treeNode)
|
||||
End If
|
||||
Next
|
||||
|
||||
If Not newTreeNodes.Count = 0 Then
|
||||
If Not inUpdate Then
|
||||
treeView.BeginUpdate()
|
||||
inUpdate = True
|
||||
End If
|
||||
_rootTreeNode.Nodes.AddRange(newTreeNodes.ToArray())
|
||||
End If
|
||||
|
||||
If inUpdate Then
|
||||
Tree.Node.Sort(_rootTreeNode, SortOrder.Ascending)
|
||||
_rootTreeNode.Expand()
|
||||
treeView.EndUpdate()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Shared Function GetSessionNames(Optional ByVal raw As Boolean = False) As String()
|
||||
Dim sessionsKey As RegistryKey = Registry.CurrentUser.OpenSubKey(PuttySessionsKey)
|
||||
If sessionsKey Is Nothing Then Return New String() {}
|
||||
|
||||
Dim sessionNames As New List(Of String)
|
||||
For Each sessionName As String In sessionsKey.GetSubKeyNames()
|
||||
If raw Then
|
||||
sessionNames.Add(sessionName)
|
||||
Else
|
||||
sessionNames.Add(Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B")))
|
||||
End If
|
||||
Next
|
||||
|
||||
If raw Then
|
||||
If Not sessionNames.Contains("Default%20Settings") Then ' Do not localize
|
||||
sessionNames.Insert(0, "Default%20Settings")
|
||||
End If
|
||||
Else
|
||||
If Not sessionNames.Contains("Default Settings") Then
|
||||
sessionNames.Insert(0, "Default Settings")
|
||||
End If
|
||||
End If
|
||||
|
||||
Return sessionNames.ToArray()
|
||||
End Function
|
||||
|
||||
Protected Shared Function LoadSessions() As Connection.PuttySession.Info()
|
||||
Dim sessionList As New List(Of Connection.PuttySession.Info)
|
||||
Dim sessionInfo As Connection.Info
|
||||
For Each sessionName As String In GetSessionNames(True)
|
||||
sessionInfo = SessionToConnectionInfo(sessionName)
|
||||
If sessionInfo Is Nothing OrElse String.IsNullOrEmpty(sessionInfo.Hostname) Then Continue For
|
||||
sessionList.Add(sessionInfo)
|
||||
Next
|
||||
Return sessionList.ToArray()
|
||||
End Function
|
||||
|
||||
Protected Shared Function SessionToConnectionInfo(ByVal sessionName As String) As Connection.PuttySession.Info
|
||||
Dim sessionsKey As RegistryKey = Registry.CurrentUser.OpenSubKey(PuttySessionsKey)
|
||||
If sessionsKey Is Nothing Then Return Nothing
|
||||
|
||||
Dim sessionKey As RegistryKey = sessionsKey.OpenSubKey(sessionName)
|
||||
If sessionKey Is Nothing Then Return Nothing
|
||||
|
||||
sessionName = Web.HttpUtility.UrlDecode(sessionName.Replace("+", "%2B"))
|
||||
|
||||
Dim sessionInfo As New Connection.PuttySession.Info
|
||||
With sessionInfo
|
||||
.PuttySession = sessionName
|
||||
.Name = sessionName
|
||||
.Hostname = sessionKey.GetValue("HostName")
|
||||
.Username = sessionKey.GetValue("UserName")
|
||||
Dim protocol As String = sessionKey.GetValue("Protocol")
|
||||
If protocol Is Nothing Then protocol = "ssh"
|
||||
Select Case protocol.ToLowerInvariant()
|
||||
Case "raw"
|
||||
.Protocol = Protocols.RAW
|
||||
Case "rlogin"
|
||||
.Protocol = Protocols.Rlogin
|
||||
Case "serial"
|
||||
Return Nothing
|
||||
Case "ssh"
|
||||
Dim sshVersionObject As Object = sessionKey.GetValue("SshProt")
|
||||
If sshVersionObject IsNot Nothing Then
|
||||
Dim sshVersion As Integer = CType(sshVersionObject, Integer)
|
||||
If sshVersion >= 2 Then
|
||||
.Protocol = Protocols.SSH2
|
||||
Else
|
||||
.Protocol = Protocols.SSH1
|
||||
End If
|
||||
Else
|
||||
.Protocol = Protocols.SSH2
|
||||
End If
|
||||
Case "telnet"
|
||||
.Protocol = Protocols.Telnet
|
||||
Case Else
|
||||
Return Nothing
|
||||
End Select
|
||||
.Port = sessionKey.GetValue("PortNumber")
|
||||
End With
|
||||
|
||||
Return sessionInfo
|
||||
End Function
|
||||
|
||||
Public Shared Sub StartWatcher()
|
||||
If _eventWatcher IsNot Nothing Then Return
|
||||
|
||||
Try
|
||||
Dim currentUserSid As String = WindowsIdentity.GetCurrent().User.Value
|
||||
Dim key As String = String.Join("\", {currentUserSid, PuttySessionsKey}).Replace("\", "\\")
|
||||
Dim query As New WqlEventQuery(String.Format("SELECT * FROM RegistryTreeChangeEvent WHERE Hive = 'HKEY_USERS' AND RootPath = '{0}'", key))
|
||||
_eventWatcher = New ManagementEventWatcher(query)
|
||||
AddHandler _eventWatcher.EventArrived, AddressOf OnManagementEventArrived
|
||||
_eventWatcher.Start()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage("PuttySessions.Watcher.StartWatching() failed.", ex, MessageClass.WarningMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Shared Sub StopWatcher()
|
||||
If _eventWatcher Is Nothing Then Return
|
||||
_eventWatcher.Stop()
|
||||
_eventWatcher.Dispose()
|
||||
_eventWatcher = Nothing
|
||||
End Sub
|
||||
|
||||
Private Shared Sub OnManagementEventArrived(ByVal sender As Object, ByVal e As EventArrivedEventArgs)
|
||||
AddSessionsToTree()
|
||||
End Sub
|
||||
|
||||
Public Class SessionList
|
||||
Inherits StringConverter
|
||||
|
||||
Public Shared ReadOnly Property Names() As String()
|
||||
Get
|
||||
Return GetSessionNames()
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Overloads Overrides Function GetStandardValues(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
|
||||
Return New StandardValuesCollection(Names)
|
||||
End Function
|
||||
|
||||
Public Overloads Overrides Function GetStandardValuesExclusive(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Overloads Overrides Function GetStandardValuesSupported(ByVal context As ITypeDescriptorContext) As Boolean
|
||||
Return True
|
||||
End Function
|
||||
End Class
|
||||
End Class
|
||||
End Namespace
|
||||
449
mRemoteV1/Connection/Connection.Info.Inheritance.vb
Normal file
449
mRemoteV1/Connection/Connection.Info.Inheritance.vb
Normal file
@@ -0,0 +1,449 @@
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.Tools.LocalizedAttributes
|
||||
|
||||
Namespace Connection
|
||||
Partial Public Class Info
|
||||
Public Class Inheritance
|
||||
#Region "Public Properties"
|
||||
#Region "General"
|
||||
<LocalizedCategory("strCategoryGeneral", 1), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameAll"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionAll"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property EverythingInherited() As Boolean
|
||||
Get
|
||||
If CacheBitmaps And Colors And Description And DisplayThemes And DisplayWallpaper _
|
||||
And EnableFontSmoothing And EnableDesktopComposition And Domain And Icon And Password _
|
||||
And Port And Protocol And PuttySession And RedirectDiskDrives And RedirectKeys _
|
||||
And RedirectPorts And RedirectPrinters And RedirectSmartCards And RedirectSound And Resolution _
|
||||
And AutomaticResize And UseConsoleSession And UseCredSsp And RenderingEngine And UserField _
|
||||
And ExtApp And Username And Panel And ICAEncryption And RDPAuthenticationLevel _
|
||||
And LoadBalanceInfo And PreExtApp And PostExtApp And MacAddress And VNCAuthMode _
|
||||
And VNCColors And VNCCompression And VNCEncoding And VNCProxyIP And VNCProxyPassword _
|
||||
And VNCProxyPort And VNCProxyType And VNCProxyUsername Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Get
|
||||
Set(ByVal value As Boolean)
|
||||
SetAllValues(value)
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
#Region "Display"
|
||||
<LocalizedCategory("strCategoryDisplay", 2), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameDescription"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionDescription"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property Description() As Boolean = My.Settings.InhDefaultDescription
|
||||
|
||||
<LocalizedCategory("strCategoryDisplay", 2), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameIcon"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionIcon"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property Icon() As Boolean = My.Settings.InhDefaultIcon
|
||||
|
||||
<LocalizedCategory("strCategoryDisplay", 2), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNamePanel"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionPanel"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property Panel() As Boolean = My.Settings.InhDefaultPanel
|
||||
#End Region
|
||||
#Region "Connection"
|
||||
<LocalizedCategory("strCategoryConnection", 3), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameUsername"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionUsername"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property Username() As Boolean = My.Settings.InhDefaultUsername
|
||||
|
||||
<LocalizedCategory("strCategoryConnection", 3), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNamePassword"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionPassword"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property Password() As Boolean = My.Settings.InhDefaultPassword
|
||||
|
||||
<LocalizedCategory("strCategoryConnection", 3), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameDomain"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionDomain"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property Domain() As Boolean = My.Settings.InhDefaultDomain
|
||||
#End Region
|
||||
#Region "Protocol"
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameProtocol"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionProtocol"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property Protocol() As Boolean = My.Settings.InhDefaultProtocol
|
||||
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameExternalTool"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionExternalTool"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property ExtApp() As Boolean = My.Settings.InhDefaultExtApp
|
||||
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNamePort"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionPort"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property Port() As Boolean = My.Settings.InhDefaultPort
|
||||
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNamePuttySession"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionPuttySession"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property PuttySession() As Boolean = My.Settings.InhDefaultPuttySession
|
||||
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameEncryptionStrength"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionEncryptionStrength"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property ICAEncryption() As Boolean = My.Settings.InhDefaultICAEncryptionStrength
|
||||
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameAuthenticationLevel"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionAuthenticationLevel"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RDPAuthenticationLevel() As Boolean = My.Settings.InhDefaultRDPAuthenticationLevel
|
||||
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameLoadBalanceInfo"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionLoadBalanceInfo"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property LoadBalanceInfo() As Boolean = My.Settings.InhDefaultLoadBalanceInfo
|
||||
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRenderingEngine"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRenderingEngine"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RenderingEngine() As Boolean = My.Settings.InhDefaultRenderingEngine
|
||||
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameUseConsoleSession"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionUseConsoleSession"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property UseConsoleSession() As Boolean = My.Settings.InhDefaultUseConsoleSession
|
||||
|
||||
<LocalizedCategory("strCategoryProtocol", 4), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameUseCredSsp"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionUseCredSsp"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property UseCredSsp() As Boolean = My.Settings.InhDefaultUseCredSsp
|
||||
#End Region
|
||||
#Region "RD Gateway"
|
||||
<LocalizedCategory("strCategoryGateway", 5), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayUsageMethod"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayUsageMethod"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RDGatewayUsageMethod() As Boolean = My.Settings.InhDefaultRDGatewayUsageMethod
|
||||
|
||||
<LocalizedCategory("strCategoryGateway", 5), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayHostname"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayHostname"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RDGatewayHostname() As Boolean = My.Settings.InhDefaultRDGatewayHostname
|
||||
|
||||
<LocalizedCategory("strCategoryGateway", 5), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayUseConnectionCredentials"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayUseConnectionCredentials"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RDGatewayUseConnectionCredentials() As Boolean = My.Settings.InhDefaultRDGatewayUseConnectionCredentials
|
||||
|
||||
<LocalizedCategory("strCategoryGateway", 5), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayUsername"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayUsername"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RDGatewayUsername() As Boolean = My.Settings.InhDefaultRDGatewayUsername
|
||||
|
||||
<LocalizedCategory("strCategoryGateway", 5), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayPassword"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayPassword"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RDGatewayPassword() As Boolean = My.Settings.InhDefaultRDGatewayPassword
|
||||
|
||||
<LocalizedCategory("strCategoryGateway", 5), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayDomain"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayDomain"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RDGatewayDomain() As Boolean = My.Settings.InhDefaultRDGatewayDomain
|
||||
#End Region
|
||||
#Region "Appearance"
|
||||
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameResolution"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionResolution"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property Resolution() As Boolean = My.Settings.InhDefaultResolution
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameAutomaticResize"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionAutomaticResize"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property AutomaticResize() As Boolean = My.Settings.InhDefaultAutomaticResize
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameColors"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionColors"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property Colors() As Boolean = My.Settings.InhDefaultColors
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameCacheBitmaps"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionCacheBitmaps"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property CacheBitmaps() As Boolean = My.Settings.InhDefaultCacheBitmaps
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameDisplayWallpaper"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionDisplayWallpaper"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property DisplayWallpaper() As Boolean = My.Settings.InhDefaultDisplayWallpaper
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameDisplayThemes"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionDisplayThemes"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property DisplayThemes() As Boolean = My.Settings.InhDefaultDisplayThemes
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameEnableFontSmoothing"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionEnableFontSmoothing"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property EnableFontSmoothing() As Boolean = My.Settings.InhDefaultEnableFontSmoothing
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 6), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameEnableDesktopComposition"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionEnableEnableDesktopComposition"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property EnableDesktopComposition() As Boolean = My.Settings.InhDefaultEnableDesktopComposition
|
||||
#End Region
|
||||
#Region "Redirect"
|
||||
<LocalizedCategory("strCategoryRedirect", 7), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectKeys"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectKeys"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RedirectKeys() As Boolean = My.Settings.InhDefaultRedirectKeys
|
||||
|
||||
<LocalizedCategory("strCategoryRedirect", 7), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectDrives"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectDrives"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RedirectDiskDrives() As Boolean = My.Settings.InhDefaultRedirectDiskDrives
|
||||
|
||||
<LocalizedCategory("strCategoryRedirect", 7), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectPrinters"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectPrinters"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RedirectPrinters() As Boolean = My.Settings.InhDefaultRedirectPrinters
|
||||
|
||||
<LocalizedCategory("strCategoryRedirect", 7), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectPorts"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectPorts"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RedirectPorts() As Boolean = My.Settings.InhDefaultRedirectPorts
|
||||
|
||||
<LocalizedCategory("strCategoryRedirect", 7), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectSmartCards"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectSmartCards"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RedirectSmartCards() As Boolean = My.Settings.InhDefaultRedirectSmartCards
|
||||
|
||||
<LocalizedCategory("strCategoryRedirect", 7), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectSounds"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectSounds"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property RedirectSound() As Boolean = My.Settings.InhDefaultRedirectSound
|
||||
#End Region
|
||||
#Region "Misc"
|
||||
<LocalizedCategory("strCategoryMiscellaneous", 8), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameExternalToolBefore"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionExternalToolBefore"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property PreExtApp() As Boolean = My.Settings.InhDefaultPreExtApp
|
||||
|
||||
<LocalizedCategory("strCategoryMiscellaneous", 8), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameExternalToolAfter"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionExternalToolAfter"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property PostExtApp() As Boolean = My.Settings.InhDefaultPostExtApp
|
||||
|
||||
<LocalizedCategory("strCategoryMiscellaneous", 8), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameMACAddress"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionMACAddress"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property MacAddress() As Boolean = My.Settings.InhDefaultMacAddress
|
||||
|
||||
<LocalizedCategory("strCategoryMiscellaneous", 8), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameUser1"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionUser1"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property UserField() As Boolean = My.Settings.InhDefaultUserField
|
||||
#End Region
|
||||
#Region "VNC"
|
||||
<LocalizedCategory("strCategoryAppearance", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameCompression"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionCompression"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCCompression() As Boolean = My.Settings.InhDefaultVNCCompression
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameEncoding"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionEncoding"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCEncoding() As Boolean = My.Settings.InhDefaultVNCEncoding
|
||||
|
||||
<LocalizedCategory("strCategoryConnection", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameAuthenticationMode"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionAuthenticationMode"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCAuthMode() As Boolean = My.Settings.InhDefaultVNCAuthMode
|
||||
|
||||
<LocalizedCategory("strCategoryMiscellaneous", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyType"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyType"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCProxyType() As Boolean = My.Settings.InhDefaultVNCProxyType
|
||||
|
||||
<LocalizedCategory("strCategoryMiscellaneous", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyAddress"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyAddress"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCProxyIP() As Boolean = My.Settings.InhDefaultVNCProxyIP
|
||||
|
||||
<LocalizedCategory("strCategoryMiscellaneous", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyPort"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyPort"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCProxyPort() As Boolean = My.Settings.InhDefaultVNCProxyPort
|
||||
|
||||
<LocalizedCategory("strCategoryMiscellaneous", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyUsername"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyUsername"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCProxyUsername() As Boolean = My.Settings.InhDefaultVNCProxyUsername
|
||||
|
||||
<LocalizedCategory("strCategoryMiscellaneous", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyPassword"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyPassword"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCProxyPassword() As Boolean = My.Settings.InhDefaultVNCProxyPassword
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameColors"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionColors"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCColors() As Boolean = My.Settings.InhDefaultVNCColors
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameSmartSizeMode"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionSmartSizeMode"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCSmartSizeMode() As Boolean = My.Settings.InhDefaultVNCSmartSizeMode
|
||||
|
||||
<LocalizedCategory("strCategoryAppearance", 9), _
|
||||
LocalizedDisplayNameInheritAttribute("strPropertyNameViewOnly"), _
|
||||
LocalizedDescriptionInheritAttribute("strPropertyDescriptionViewOnly"), _
|
||||
TypeConverter(GetType(Tools.Misc.YesNoTypeConverter))> _
|
||||
Public Property VNCViewOnly() As Boolean = My.Settings.InhDefaultVNCViewOnly
|
||||
#End Region
|
||||
|
||||
<Browsable(False)> _
|
||||
Public Property Parent() As Object
|
||||
|
||||
<Browsable(False)> _
|
||||
Public Property IsDefault() As Boolean
|
||||
#End Region
|
||||
|
||||
#Region "Constructors"
|
||||
Public Sub New(ByVal parent As Object, Optional ByVal inheritEverything As Boolean = False)
|
||||
Me.Parent = parent
|
||||
If inheritEverything Then TurnOnInheritanceCompletely()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Function Copy() As Inheritance
|
||||
Return MemberwiseClone()
|
||||
End Function
|
||||
|
||||
Public Sub TurnOnInheritanceCompletely()
|
||||
SetAllValues(True)
|
||||
End Sub
|
||||
|
||||
Public Sub TurnOffInheritanceCompletely()
|
||||
SetAllValues(False)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Sub SetAllValues(ByVal value As Boolean)
|
||||
' Display
|
||||
Description = value
|
||||
Icon = value
|
||||
Panel = value
|
||||
|
||||
' Connection
|
||||
Username = value
|
||||
Password = value
|
||||
Domain = value
|
||||
|
||||
' Protocol
|
||||
Protocol = value
|
||||
ExtApp = value
|
||||
Port = value
|
||||
PuttySession = value
|
||||
ICAEncryption = value
|
||||
RDPAuthenticationLevel = value
|
||||
LoadBalanceInfo = value
|
||||
RenderingEngine = value
|
||||
UseConsoleSession = value
|
||||
UseCredSsp = value
|
||||
|
||||
' RD Gateway
|
||||
RDGatewayUsageMethod = value
|
||||
RDGatewayHostname = value
|
||||
RDGatewayUseConnectionCredentials = value
|
||||
RDGatewayUsername = value
|
||||
RDGatewayPassword = value
|
||||
RDGatewayDomain = value
|
||||
|
||||
' Appearance
|
||||
Resolution = value
|
||||
AutomaticResize = value
|
||||
Colors = value
|
||||
CacheBitmaps = value
|
||||
DisplayWallpaper = value
|
||||
DisplayThemes = value
|
||||
EnableFontSmoothing = value
|
||||
EnableDesktopComposition = value
|
||||
|
||||
' Redirect
|
||||
RedirectKeys = value
|
||||
RedirectDiskDrives = value
|
||||
RedirectPrinters = value
|
||||
RedirectPorts = value
|
||||
RedirectSmartCards = value
|
||||
RedirectSound = value
|
||||
|
||||
' Misc
|
||||
PreExtApp = value
|
||||
PostExtApp = value
|
||||
MacAddress = value
|
||||
UserField = value
|
||||
|
||||
' VNC
|
||||
VNCCompression = value
|
||||
VNCEncoding = value
|
||||
VNCAuthMode = value
|
||||
VNCProxyType = value
|
||||
VNCProxyIP = value
|
||||
VNCProxyPort = value
|
||||
VNCProxyUsername = value
|
||||
VNCProxyPassword = value
|
||||
VNCColors = value
|
||||
VNCSmartSizeMode = value
|
||||
VNCViewOnly = value
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Class
|
||||
End Namespace
|
||||
File diff suppressed because it is too large
Load Diff
@@ -74,7 +74,7 @@ Namespace Connection
|
||||
Dim strHost As String = Me.InterfaceControl.Info.Hostname
|
||||
Dim strAuth As String = ""
|
||||
|
||||
If Me.InterfaceControl.Info.Username <> "" And Me.InterfaceControl.Info.Password <> "" Then
|
||||
If Not ((Force And Info.Force.NoCredentials) = Info.Force.NoCredentials) And Not String.IsNullOrEmpty(InterfaceControl.Info.Username) And Not String.IsNullOrEmpty(InterfaceControl.Info.Password) Then
|
||||
strAuth = "Authorization: Basic " + Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(Me.InterfaceControl.Info.Username & ":" & Me.InterfaceControl.Info.Password)) & vbNewLine
|
||||
End If
|
||||
|
||||
|
||||
@@ -97,6 +97,8 @@ Namespace Connection
|
||||
#Region "Private Methods"
|
||||
Private Sub SetCredentials()
|
||||
Try
|
||||
If (Force And Info.Force.NoCredentials) = Info.Force.NoCredentials Then Return
|
||||
|
||||
Dim _user As String = Me.Info.Username
|
||||
Dim _pass As String = Me.Info.Password
|
||||
Dim _dom As String = Me.Info.Domain
|
||||
|
||||
@@ -1,186 +0,0 @@
|
||||
Imports mRemoteNG.App.Native
|
||||
Imports System.Threading
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports mRemoteNG.Tools
|
||||
|
||||
Namespace Connection
|
||||
Namespace Protocol
|
||||
Public Class IntApp
|
||||
Inherits Connection.Protocol.Base
|
||||
|
||||
#Region "Private Properties"
|
||||
Private IntAppProcessStartInfo As New ProcessStartInfo()
|
||||
Private Arguments As String
|
||||
Private ExtApp As Tools.ExternalTool
|
||||
#End Region
|
||||
|
||||
#Region "Public Properties"
|
||||
Private _IntAppHandle As IntPtr
|
||||
Public Property IntAppHandle() As IntPtr
|
||||
Get
|
||||
Return Me._IntAppHandle
|
||||
End Get
|
||||
Set(ByVal value As IntPtr)
|
||||
Me._IntAppHandle = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _IntAppProcess As Process
|
||||
Public Property IntAppProcess() As Process
|
||||
Get
|
||||
Return Me._IntAppProcess
|
||||
End Get
|
||||
Set(ByVal value As Process)
|
||||
Me._IntAppProcess = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _IntAppPath As String
|
||||
Public Property IntAppPath() As String
|
||||
Get
|
||||
Return _IntAppPath
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_IntAppPath = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property Focused() As Boolean
|
||||
Get
|
||||
If GetForegroundWindow() = IntAppHandle Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Get
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Private Events & Handlers"
|
||||
Private Sub ProcessExited(ByVal sender As Object, ByVal e As System.EventArgs)
|
||||
MyBase.Event_Closed(Me)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Sub New()
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overrides Function SetProps() As Boolean
|
||||
ExtApp = App.Runtime.GetExtAppByName(InterfaceControl.Info.ExtApp)
|
||||
If InterfaceControl.Info IsNot Nothing Then
|
||||
ExtApp.ConnectionInfo = InterfaceControl.Info
|
||||
End If
|
||||
|
||||
_IntAppPath = ExtApp.ParseText(ExtApp.FileName)
|
||||
Arguments = ExtApp.ParseText(ExtApp.Arguments)
|
||||
|
||||
Return MyBase.SetProps()
|
||||
End Function
|
||||
|
||||
Public Overrides Function Connect() As Boolean
|
||||
Try
|
||||
If ExtApp.TryIntegrate = False Then
|
||||
ExtApp.Start(Me.InterfaceControl.Info)
|
||||
Me.Close()
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
IntAppProcessStartInfo.UseShellExecute = False
|
||||
IntAppProcessStartInfo.FileName = _IntAppPath
|
||||
IntAppProcessStartInfo.Arguments = CommandLineArguments.EscapeBackslashes(Arguments)
|
||||
|
||||
IntAppProcess = Process.Start(IntAppProcessStartInfo)
|
||||
IntAppProcess.EnableRaisingEvents = True
|
||||
IntAppProcess.WaitForInputIdle()
|
||||
|
||||
AddHandler IntAppProcess.Exited, AddressOf ProcessExited
|
||||
|
||||
Dim TryCount As Integer = 0
|
||||
Do Until IntAppProcess.MainWindowHandle <> IntPtr.Zero And Me.InterfaceControl.Handle <> IntPtr.Zero And Me.IntAppProcess.MainWindowTitle <> "Default IME"
|
||||
If TryCount >= My.Settings.MaxPuttyWaitTime * 2 Then
|
||||
Exit Do
|
||||
End If
|
||||
|
||||
IntAppProcess.Refresh()
|
||||
|
||||
Thread.Sleep(500)
|
||||
|
||||
TryCount += 1
|
||||
Loop
|
||||
|
||||
IntAppHandle = IntAppProcess.MainWindowHandle
|
||||
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strIntAppStuff, True)
|
||||
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strIntAppHandle, IntAppHandle.ToString), True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strIntAppTitle, IntAppProcess.MainWindowTitle), True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strIntAppParentHandle, Me.InterfaceControl.Parent.Handle.ToString), True)
|
||||
|
||||
SetParent(Me.IntAppHandle, Me.InterfaceControl.Parent.Handle)
|
||||
SetWindowLong(Me.IntAppHandle, 0, WS_VISIBLE)
|
||||
ShowWindow(Me.IntAppHandle, SW_SHOWMAXIMIZED)
|
||||
|
||||
Resize(Me, New EventArgs)
|
||||
|
||||
MyBase.Connect()
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIntAppConnectionFailed & vbNewLine & ex.Message)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
|
||||
Public Overrides Sub Focus()
|
||||
Try
|
||||
SetForegroundWindow(IntAppHandle)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIntAppFocusFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Resize(ByVal sender As Object, ByVal e As EventArgs)
|
||||
Try
|
||||
If InterfaceControl.Size = Size.Empty Then Return
|
||||
MoveWindow(IntAppHandle, -SystemInformation.FrameBorderSize.Width, -(SystemInformation.CaptionHeight + SystemInformation.FrameBorderSize.Height), Me.InterfaceControl.Width + (SystemInformation.FrameBorderSize.Width * 2), Me.InterfaceControl.Height + SystemInformation.CaptionHeight + (SystemInformation.FrameBorderSize.Height * 2), True)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIntAppResizeFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Close()
|
||||
Try
|
||||
If IntAppProcess.HasExited = False Then
|
||||
IntAppProcess.Kill()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIntAppKillFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
|
||||
Try
|
||||
If IntAppProcess.HasExited = False Then
|
||||
IntAppProcess.Dispose()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIntAppDisposeFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
|
||||
MyBase.Close()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Shared Methods"
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "Enums"
|
||||
Public Enum Defaults
|
||||
Port = 0
|
||||
End Enum
|
||||
#End Region
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
End Namespace
|
||||
121
mRemoteV1/Connection/Connection.Protocol.IntegratedProgram.vb
Normal file
121
mRemoteV1/Connection/Connection.Protocol.IntegratedProgram.vb
Normal file
@@ -0,0 +1,121 @@
|
||||
Imports mRemoteNG.App.Native
|
||||
Imports System.Threading
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports mRemoteNG.Tools
|
||||
|
||||
Namespace Connection
|
||||
Namespace Protocol
|
||||
Public Class IntegratedProgram
|
||||
Inherits Base
|
||||
#Region "Public Methods"
|
||||
Public Overrides Function SetProps() As Boolean
|
||||
If InterfaceControl.Info IsNot Nothing Then
|
||||
_externalTool = GetExtAppByName(InterfaceControl.Info.ExtApp)
|
||||
_externalTool.ConnectionInfo = InterfaceControl.Info
|
||||
End If
|
||||
|
||||
Return MyBase.SetProps()
|
||||
End Function
|
||||
|
||||
Public Overrides Function Connect() As Boolean
|
||||
Try
|
||||
If _externalTool.TryIntegrate = False Then
|
||||
_externalTool.Start(InterfaceControl.Info)
|
||||
Close()
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
_process = New Process()
|
||||
|
||||
With _process.StartInfo
|
||||
.UseShellExecute = True
|
||||
.FileName = _externalTool.ParseArguments(_externalTool.FileName)
|
||||
.Arguments = _externalTool.ParseArguments(_externalTool.Arguments)
|
||||
End With
|
||||
|
||||
_process.EnableRaisingEvents = True
|
||||
AddHandler _process.Exited, AddressOf ProcessExited
|
||||
|
||||
_process.Start()
|
||||
_process.WaitForInputIdle(My.Settings.MaxPuttyWaitTime * 1000)
|
||||
|
||||
Dim startTicks As Integer = Environment.TickCount
|
||||
While _handle.ToInt32 = 0 And Environment.TickCount < startTicks + (My.Settings.MaxPuttyWaitTime * 1000)
|
||||
_process.Refresh()
|
||||
If Not _process.MainWindowTitle = "Default IME" Then _handle = _process.MainWindowHandle
|
||||
If _handle.ToInt32 = 0 Then Thread.Sleep(0)
|
||||
End While
|
||||
|
||||
SetParent(_handle, InterfaceControl.Handle)
|
||||
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, My.Language.strIntAppStuff, True)
|
||||
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strIntAppHandle, _handle.ToString), True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strIntAppTitle, _process.MainWindowTitle), True)
|
||||
MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, String.Format(My.Language.strIntAppParentHandle, InterfaceControl.Parent.Handle.ToString), True)
|
||||
|
||||
Resize(Me, New EventArgs)
|
||||
|
||||
MyBase.Connect()
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(My.Language.strIntAppConnectionFailed, ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Overrides Sub Focus()
|
||||
Try
|
||||
If ConnectionWindow.InTabDrag Then Return
|
||||
SetForegroundWindow(_handle)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(My.Language.strIntAppFocusFailed, ex, , True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Resize(ByVal sender As Object, ByVal e As EventArgs)
|
||||
Try
|
||||
If InterfaceControl.Size = Size.Empty Then Return
|
||||
MoveWindow(_handle, -SystemInformation.FrameBorderSize.Width, -(SystemInformation.CaptionHeight + SystemInformation.FrameBorderSize.Height), InterfaceControl.Width + (SystemInformation.FrameBorderSize.Width * 2), InterfaceControl.Height + SystemInformation.CaptionHeight + (SystemInformation.FrameBorderSize.Height * 2), True)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(My.Language.strIntAppResizeFailed, ex, , True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Close()
|
||||
Try
|
||||
If Not _process.HasExited Then _process.Kill()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(My.Language.strIntAppKillFailed, ex, , True)
|
||||
End Try
|
||||
|
||||
Try
|
||||
If Not _process.HasExited Then _process.Dispose()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(My.Language.strIntAppDisposeFailed, ex, , True)
|
||||
End Try
|
||||
|
||||
MyBase.Close()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Fields"
|
||||
Private _externalTool As ExternalTool
|
||||
Private _handle As IntPtr
|
||||
Private _process As Process
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Sub ProcessExited(ByVal sender As Object, ByVal e As EventArgs)
|
||||
Event_Closed(Me)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Enumerations"
|
||||
Public Enum Defaults
|
||||
Port = 0
|
||||
End Enum
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
End Namespace
|
||||
@@ -1,8 +1,21 @@
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.Tools.LocalizedAttributes
|
||||
|
||||
Namespace Connection
|
||||
Namespace Protocol
|
||||
Public Class Converter
|
||||
Public Shared Function ProtocolToString(ByVal protocol As Protocols) As String
|
||||
Return protocol.ToString()
|
||||
End Function
|
||||
|
||||
Public Shared Function StringToProtocol(ByVal protocol As String) As Protocols
|
||||
Try
|
||||
Return [Enum].Parse(GetType(Protocols), protocol, True)
|
||||
Catch ex As Exception
|
||||
Return Protocols.RDP
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
|
||||
Public Enum Protocols
|
||||
<LocalizedDescription("strRDP")> _
|
||||
RDP = 0
|
||||
@@ -26,8 +39,6 @@ Namespace Connection
|
||||
ICA = 9
|
||||
<LocalizedDescription("strExtApp")> _
|
||||
IntApp = 20
|
||||
<Browsable(False)> _
|
||||
NONE = 999
|
||||
End Enum
|
||||
End Namespace
|
||||
End Namespace
|
||||
|
||||
@@ -97,7 +97,7 @@ Namespace Connection
|
||||
|
||||
Public Overrides Function Connect() As Boolean
|
||||
Try
|
||||
_isPuttyNg = IsFilePuttyNg(PuttyPath)
|
||||
_isPuttyNg = (PuttyTypeDetector.GetPuttyType() = PuttyTypeDetector.PuttyType.PuttyNg)
|
||||
|
||||
PuttyProcess = New Process
|
||||
With PuttyProcess.StartInfo
|
||||
@@ -135,11 +135,14 @@ Namespace Connection
|
||||
End If
|
||||
|
||||
arguments.Add("-" & _PuttySSHVersion)
|
||||
If Not String.IsNullOrEmpty(username) Then
|
||||
arguments.Add("-l", username)
|
||||
End If
|
||||
If Not String.IsNullOrEmpty(password) Then
|
||||
arguments.Add("-pw", password)
|
||||
|
||||
If Not ((Force And Info.Force.NoCredentials) = Info.Force.NoCredentials) Then
|
||||
If Not String.IsNullOrEmpty(username) Then
|
||||
arguments.Add("-l", username)
|
||||
End If
|
||||
If Not String.IsNullOrEmpty(password) Then
|
||||
arguments.Add("-pw", password)
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
@@ -237,18 +240,6 @@ Namespace Connection
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Shared Methods"
|
||||
Public Shared Function IsFilePuttyNg(file As String) As Boolean
|
||||
Dim isPuttyNg As Boolean
|
||||
Try
|
||||
isPuttyNg = FileVersionInfo.GetVersionInfo(file).InternalName.Contains("PuTTYNG")
|
||||
Catch
|
||||
isPuttyNg = False
|
||||
End Try
|
||||
Return isPuttyNg
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Enums"
|
||||
Public Enum Putty_Protocol
|
||||
ssh = 0
|
||||
|
||||
@@ -238,8 +238,13 @@ Namespace Connection
|
||||
|
||||
Private Sub SetRdGateway()
|
||||
Try
|
||||
If _rdpClient.TransportSettings.GatewayIsSupported = 0 Then Return
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strRdpGatewayIsSupported, True)
|
||||
If _rdpClient.TransportSettings.GatewayIsSupported = 0 Then
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strRdpGatewayNotSupported, True)
|
||||
Return
|
||||
Else
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strRdpGatewayIsSupported, True)
|
||||
End If
|
||||
|
||||
If Not _connectionInfo.RDGatewayUsageMethod = RDGatewayUsageMethod.Never Then
|
||||
_rdpClient.TransportSettings.GatewayUsageMethod = _connectionInfo.RDGatewayUsageMethod
|
||||
_rdpClient.TransportSettings.GatewayHostname = _connectionInfo.RDGatewayHostname
|
||||
@@ -247,7 +252,7 @@ Namespace Connection
|
||||
If _connectionInfo.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.SmartCard Then
|
||||
_rdpClient.TransportSettings.GatewayCredsSource = 1 ' TSC_PROXY_CREDS_MODE_SMARTCARD
|
||||
End If
|
||||
If _rdpVersion >= Versions.RDC61 Then
|
||||
If _rdpVersion >= Versions.RDC61 And Not ((Force And Info.Force.NoCredentials) = Info.Force.NoCredentials) Then
|
||||
If _connectionInfo.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.Yes Then
|
||||
_rdpClient.TransportSettings2.GatewayUsername = _connectionInfo.Username
|
||||
_rdpClient.TransportSettings2.GatewayPassword = _connectionInfo.Password
|
||||
@@ -261,8 +266,6 @@ Namespace Connection
|
||||
_rdpClient.TransportSettings2.GatewayCredSharing = 0
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, My.Language.strRdpGatewayNotSupported, True)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(MessageClass.ErrorMsg, My.Language.strRdpSetGatewayFailed & vbNewLine & ex.Message, True)
|
||||
@@ -295,6 +298,8 @@ Namespace Connection
|
||||
|
||||
Private Sub SetCredentials()
|
||||
Try
|
||||
If (Force And Info.Force.NoCredentials) = Info.Force.NoCredentials Then Return
|
||||
|
||||
Dim userName As String = _connectionInfo.Username
|
||||
Dim password As String = _connectionInfo.Password
|
||||
Dim domain As String = _connectionInfo.Domain
|
||||
@@ -635,77 +640,91 @@ Namespace Connection
|
||||
|
||||
#Region "Terminal Sessions"
|
||||
Public Class TerminalSessions
|
||||
Dim oWTSCOM As New WTSCOM
|
||||
Dim oWTSSessions As New WTSSessions
|
||||
Dim oWTSSession As New WTSSession
|
||||
Public ServerHandle As Long
|
||||
Private ReadOnly _wtsCom As WTSCOM
|
||||
|
||||
Public Function OpenConnection(ByVal SrvName As String) As Boolean
|
||||
Public Sub New()
|
||||
Try
|
||||
ServerHandle = oWTSCOM.WTSOpenServer(SrvName)
|
||||
|
||||
If ServerHandle <> 0 Then
|
||||
Return True
|
||||
End If
|
||||
_wtsCom = New WTSCOM
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpOpenConnectionFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Public Sub CloseConnection(ByVal SrvHandle As Long)
|
||||
Try
|
||||
oWTSCOM.WTSCloseServer(ServerHandle)
|
||||
ServerHandle = 0
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpCloseConnectionFailed & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddExceptionMessage("TerminalSessions.New() failed.", ex, MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Function GetSessions() As Sessions
|
||||
Dim colSessions As New Sessions
|
||||
Public Function OpenConnection(ByVal hostname As String) As Long
|
||||
If _wtsCom Is Nothing Then Return 0
|
||||
|
||||
Try
|
||||
oWTSSessions = oWTSCOM.WTSEnumerateSessions(ServerHandle)
|
||||
Return _wtsCom.WTSOpenServer(hostname)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(My.Language.strRdpOpenConnectionFailed, ex, MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Dim SessionID As Long
|
||||
Dim SessionUser As String
|
||||
Dim SessionState As Long
|
||||
Dim SessionName As String
|
||||
Public Sub CloseConnection(ByVal serverHandle As Long)
|
||||
If _wtsCom Is Nothing Then Return
|
||||
|
||||
For Each oWTSSession In oWTSSessions
|
||||
SessionID = oWTSSession.SessionId
|
||||
SessionUser = oWTSCOM.WTSQuerySessionInformation(ServerHandle, oWTSSession.SessionId, 5) 'WFUsername = 5
|
||||
SessionState = oWTSSession.State & vbCrLf
|
||||
SessionName = oWTSSession.WinStationName & vbCrLf
|
||||
Try
|
||||
_wtsCom.WTSCloseServer(serverHandle)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(My.Language.strRdpCloseConnectionFailed, ex, MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
If SessionUser <> "" Then
|
||||
If SessionState = 0 Then
|
||||
colSessions.Add(SessionID, My.Language.strActive, SessionUser, SessionName)
|
||||
Public Function GetSessions(ByVal serverHandle As Long) As SessionsCollection
|
||||
If _wtsCom Is Nothing Then Return New SessionsCollection()
|
||||
|
||||
Dim sessions As New SessionsCollection()
|
||||
|
||||
Try
|
||||
Dim wtsSessions As WTSSessions = _wtsCom.WTSEnumerateSessions(serverHandle)
|
||||
|
||||
Dim sessionId As Long
|
||||
Dim sessionUser As String
|
||||
Dim sessionState As Long
|
||||
Dim sessionName As String
|
||||
|
||||
For Each wtsSession As WTSSession In wtsSessions
|
||||
sessionId = wtsSession.SessionId
|
||||
sessionUser = _wtsCom.WTSQuerySessionInformation(serverHandle, wtsSession.SessionId, 5) ' WFUsername = 5
|
||||
sessionState = wtsSession.State & vbCrLf
|
||||
sessionName = wtsSession.WinStationName & vbCrLf
|
||||
|
||||
If Not String.IsNullOrEmpty(sessionUser) Then
|
||||
If sessionState = 0 Then
|
||||
sessions.Add(sessionId, My.Language.strActive, sessionUser, sessionName)
|
||||
Else
|
||||
colSessions.Add(SessionID, My.Language.strInactive, SessionUser, SessionName)
|
||||
sessions.Add(sessionId, My.Language.strInactive, sessionUser, sessionName)
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpGetSessionsFailed & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddExceptionMessage(My.Language.strRdpGetSessionsFailed, ex, MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
|
||||
Return colSessions
|
||||
Return sessions
|
||||
End Function
|
||||
|
||||
Public Function KillSession(ByVal SessionID As Long) As Boolean
|
||||
Return oWTSCOM.WTSLogoffSession(ServerHandle, SessionID, True)
|
||||
Public Function KillSession(ByVal serverHandle As Long, ByVal sessionId As Long) As Boolean
|
||||
If _wtsCom Is Nothing Then Return False
|
||||
|
||||
Dim result As Boolean = False
|
||||
|
||||
Try
|
||||
result = _wtsCom.WTSLogoffSession(serverHandle, sessionId, True)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage("TerminalSessions.KillSession() failed.", ex, MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
|
||||
Return result
|
||||
End Function
|
||||
End Class
|
||||
|
||||
Public Class Sessions
|
||||
Public Class SessionsCollection
|
||||
Inherits CollectionBase
|
||||
|
||||
Default Public ReadOnly Property Items(ByVal Index As Integer) As Session
|
||||
Default Public ReadOnly Property Items(ByVal index As Integer) As Session
|
||||
Get
|
||||
Return CType(List.Item(Index), Session)
|
||||
Return CType(List.Item(index), Session)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
@@ -715,23 +734,23 @@ Namespace Connection
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Function Add(ByVal SessionID As Long, ByVal SessionState As String, ByVal SessionUser As String, ByVal SessionName As String) As Session
|
||||
Dim newSes As New Session
|
||||
Public Overloads Function Add(ByVal sessionId As Long, ByVal sessionState As String, ByVal sessionUser As String, ByVal sessionName As String) As Session
|
||||
Dim newSession As New Session
|
||||
|
||||
Try
|
||||
With newSes
|
||||
.SessionID = SessionID
|
||||
.SessionState = SessionState
|
||||
.SessionUser = SessionUser
|
||||
.SessionName = SessionName
|
||||
With newSession
|
||||
.SessionId = sessionId
|
||||
.SessionState = sessionState
|
||||
.SessionUser = sessionUser
|
||||
.SessionName = sessionName
|
||||
End With
|
||||
|
||||
List.Add(newSes)
|
||||
List.Add(newSession)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpAddSessionFailed & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddExceptionMessage(My.Language.strRdpAddSessionFailed, ex, MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
|
||||
Return newSes
|
||||
Return newSession
|
||||
End Function
|
||||
|
||||
Public Sub ClearSessions()
|
||||
@@ -742,45 +761,10 @@ Namespace Connection
|
||||
Public Class Session
|
||||
Inherits CollectionBase
|
||||
|
||||
Private lngSessionID As Long
|
||||
Public Property SessionID() As Long
|
||||
Get
|
||||
Return lngSessionID
|
||||
End Get
|
||||
Set(ByVal Value As Long)
|
||||
lngSessionID = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private lngSessionState As String
|
||||
Public Property SessionId() As Long
|
||||
Public Property SessionState() As String
|
||||
Get
|
||||
Return lngSessionState
|
||||
End Get
|
||||
Set(ByVal Value As String)
|
||||
lngSessionState = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private strSessionUser As String
|
||||
Public Property SessionUser() As String
|
||||
Get
|
||||
Return strSessionUser
|
||||
End Get
|
||||
Set(ByVal Value As String)
|
||||
strSessionUser = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private strSessionName As String
|
||||
Public Property SessionName() As String
|
||||
Get
|
||||
Return strSessionName
|
||||
End Get
|
||||
Set(ByVal Value As String)
|
||||
strSessionName = Value
|
||||
End Set
|
||||
End Property
|
||||
End Class
|
||||
#End Region
|
||||
|
||||
|
||||
@@ -208,7 +208,7 @@ Namespace Connection
|
||||
AddHandler VNC.ConnectComplete, AddressOf VNCEvent_Connected
|
||||
AddHandler VNC.ConnectionLost, AddressOf VNCEvent_Disconnected
|
||||
AddHandler mRemoteNG.frmMain.clipboardchange, AddressOf VNCEvent_ClipboardChanged
|
||||
If Not String.IsNullOrEmpty(Info.Password) Then
|
||||
If Not ((Force And Info.Force.NoCredentials) = Info.Force.NoCredentials) And Not String.IsNullOrEmpty(Info.Password) Then
|
||||
VNC.GetPassword = AddressOf VNCEvent_Authenticate
|
||||
End If
|
||||
Catch ex As Exception
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
Namespace Connection
|
||||
Public Class QuickConnect
|
||||
Private Shared qBox As ToolStripComboBox = frmMain.cmbQuickConnect
|
||||
|
||||
Public Class History
|
||||
Public Shared Function Exists(ByVal Text As String) As Boolean
|
||||
Try
|
||||
For i As Integer = 0 To qBox.Items.Count - 1
|
||||
If qBox.Items(i) = Text Then
|
||||
Return True
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strQuickConnectHistoryExistsFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Public Shared Sub Add(ByVal Text As String)
|
||||
Try
|
||||
qBox.Items.Insert(0, Text)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strQuickConnectAddFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
End Class
|
||||
End Class
|
||||
End Namespace
|
||||
@@ -100,6 +100,7 @@ Namespace Connection
|
||||
#End Region
|
||||
|
||||
#Region "IComponent"
|
||||
<Browsable(False)> _
|
||||
Public Property Site() As ISite Implements IComponent.Site
|
||||
Get
|
||||
Return New PropertyGridCommandSite(Me)
|
||||
|
||||
180
mRemoteV1/Controls/ListView.vb
Normal file
180
mRemoteV1/Controls/ListView.vb
Normal file
@@ -0,0 +1,180 @@
|
||||
Imports System.ComponentModel
|
||||
|
||||
Namespace Controls
|
||||
Public Class ListView
|
||||
Inherits Windows.Forms.ListView
|
||||
|
||||
#Region "Public Properties"
|
||||
<Category("Appearance"),
|
||||
DefaultValue(GetType(Color), "HighlightText")> _
|
||||
Public Property HighlightForeColor As Color = SystemColors.HighlightText
|
||||
|
||||
<Category("Appearance"),
|
||||
DefaultValue(GetType(Color), "Highlight")> _
|
||||
Public Property HighlightBackColor As Color = SystemColors.Highlight
|
||||
|
||||
<Category("Appearance"),
|
||||
DefaultValue(GetType(Color), "HotTrack")> _
|
||||
Public Property HighlightBorderColor As Color = SystemColors.HotTrack
|
||||
|
||||
<Category("Appearance"),
|
||||
DefaultValue(GetType(Color), "ControlText")> _
|
||||
Public Property InactiveHighlightForeColor As Color = SystemColors.ControlText
|
||||
|
||||
<Category("Appearance"),
|
||||
DefaultValue(GetType(Color), "Control")> _
|
||||
Public Property InactiveHighlightBackColor As Color = SystemColors.Control
|
||||
|
||||
<Category("Appearance"),
|
||||
DefaultValue(GetType(Color), "ControlDark")> _
|
||||
Public Property InactiveHighlightBorderColor As Color = SystemColors.ControlDark
|
||||
|
||||
<Category("Appearance"),
|
||||
DefaultValue(True)> _
|
||||
Public Overloads Property ShowFocusCues As Boolean = True
|
||||
|
||||
<Category("Appearance")> _
|
||||
Public Property LabelAlignment As New Alignment(VerticalAlignment.Top, HorizontalAlignment.Left)
|
||||
#End Region
|
||||
|
||||
#Region "Constructors"
|
||||
Public Sub New()
|
||||
OwnerDraw = True
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Protected Methods"
|
||||
Protected Overrides Sub OnDrawItem(e As DrawListViewItemEventArgs)
|
||||
If Not View = View.Tile Then MyBase.OnDrawItem(e)
|
||||
If e.ItemIndex < 0 Then MyBase.OnDrawItem(e)
|
||||
|
||||
Dim foreColorBrush As Brush = Nothing
|
||||
Dim backColorBrush As Brush = Nothing
|
||||
Dim borderPen As Pen = Nothing
|
||||
Try
|
||||
If Focused Then
|
||||
borderPen = New Pen(HighlightBorderColor)
|
||||
Else
|
||||
borderPen = New Pen(InactiveHighlightBorderColor)
|
||||
End If
|
||||
|
||||
If e.Item.Selected Then
|
||||
If Focused Then
|
||||
foreColorBrush = New SolidBrush(HighlightForeColor)
|
||||
backColorBrush = New SolidBrush(HighlightBackColor)
|
||||
Else
|
||||
foreColorBrush = New SolidBrush(InactiveHighlightForeColor)
|
||||
backColorBrush = New SolidBrush(InactiveHighlightBackColor)
|
||||
End If
|
||||
Else
|
||||
foreColorBrush = New SolidBrush(e.Item.ForeColor)
|
||||
backColorBrush = New SolidBrush(BackColor)
|
||||
End If
|
||||
|
||||
e.Graphics.FillRectangle(backColorBrush, e.Bounds)
|
||||
|
||||
If Focused And ShowFocusCues Then
|
||||
e.DrawFocusRectangle()
|
||||
ElseIf e.Item.Selected Then
|
||||
e.Graphics.DrawRectangle(borderPen, e.Bounds.X, e.Bounds.Y, e.Bounds.Width - 1, e.Bounds.Height - 1)
|
||||
End If
|
||||
|
||||
Dim imageBounds As New Rectangle(e.Bounds.X + 2, e.Bounds.Y + 6, 16, 16)
|
||||
Dim textBounds As Rectangle = e.Bounds
|
||||
|
||||
If e.Item.ImageList IsNot Nothing Then
|
||||
Dim image As Image = Nothing
|
||||
If Not String.IsNullOrEmpty(e.Item.ImageKey) And e.Item.ImageList.Images.ContainsKey(e.Item.ImageKey) Then
|
||||
image = e.Item.ImageList.Images.Item(e.Item.ImageKey)
|
||||
ElseIf Not e.Item.ImageIndex < 0 And e.Item.ImageList.Images.Count > e.Item.ImageIndex Then
|
||||
image = e.Item.ImageList.Images(e.Item.ImageIndex)
|
||||
End If
|
||||
If image IsNot Nothing Then
|
||||
e.Graphics.DrawImageUnscaledAndClipped(image, imageBounds)
|
||||
textBounds.X = textBounds.Left + 20
|
||||
textBounds.Width = textBounds.Width - 20
|
||||
End If
|
||||
End If
|
||||
|
||||
e.Graphics.DrawString(e.Item.Text, e.Item.Font, foreColorBrush, textBounds, GetStringFormat())
|
||||
Finally
|
||||
If foreColorBrush IsNot Nothing Then foreColorBrush.Dispose()
|
||||
If backColorBrush IsNot Nothing Then backColorBrush.Dispose()
|
||||
If borderPen IsNot Nothing Then borderPen.Dispose()
|
||||
End Try
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Function GetStringFormat() As StringFormat
|
||||
Dim format As StringFormat = StringFormat.GenericDefault
|
||||
|
||||
Select Case LabelAlignment.Vertical
|
||||
Case VerticalAlignment.Top
|
||||
format.LineAlignment = StringAlignment.Near
|
||||
Case VerticalAlignment.Middle
|
||||
format.LineAlignment = StringAlignment.Center
|
||||
Case VerticalAlignment.Bottom
|
||||
format.LineAlignment = StringAlignment.Far
|
||||
End Select
|
||||
|
||||
Select Case LabelAlignment.Horizontal
|
||||
Case HorizontalAlignment.Left
|
||||
format.Alignment = StringAlignment.Near
|
||||
Case HorizontalAlignment.Center
|
||||
format.Alignment = StringAlignment.Center
|
||||
Case HorizontalAlignment.Right
|
||||
format.Alignment = StringAlignment.Far
|
||||
End Select
|
||||
|
||||
If RightToLeft Then
|
||||
format.FormatFlags = format.FormatFlags Or StringFormatFlags.DirectionRightToLeft
|
||||
End If
|
||||
|
||||
If LabelWrap Then
|
||||
format.FormatFlags = format.FormatFlags And Not StringFormatFlags.NoWrap
|
||||
Else
|
||||
format.FormatFlags = format.FormatFlags Or StringFormatFlags.NoWrap
|
||||
End If
|
||||
|
||||
Return format
|
||||
End Function
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
<TypeConverter(GetType(ExpandableObjectConverter))> _
|
||||
Public Class Alignment
|
||||
Public Sub New()
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal verticalAlignment As VerticalAlignment, ByVal horizontalAlignment As HorizontalAlignment)
|
||||
Vertical = verticalAlignment
|
||||
Horizontal = horizontalAlignment
|
||||
End Sub
|
||||
|
||||
<NotifyParentProperty(True),
|
||||
DefaultValue(VerticalAlignment.Top)> _
|
||||
Public Property Vertical As VerticalAlignment = VerticalAlignment.Top
|
||||
|
||||
<NotifyParentProperty(True),
|
||||
DefaultValue(HorizontalAlignment.Left)> _
|
||||
Public Property Horizontal As HorizontalAlignment = HorizontalAlignment.Left
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return String.Format("{0}, {1}", Vertical, Horizontal)
|
||||
End Function
|
||||
End Class
|
||||
|
||||
Public Enum VerticalAlignment As Integer
|
||||
Top
|
||||
Middle
|
||||
Bottom
|
||||
End Enum
|
||||
|
||||
Public Enum HorizontalAlignment As Integer
|
||||
Left
|
||||
Center
|
||||
Right
|
||||
End Enum
|
||||
End Namespace
|
||||
165
mRemoteV1/Controls/QuickConnectComboBox.vb
Normal file
165
mRemoteV1/Controls/QuickConnectComboBox.vb
Normal file
@@ -0,0 +1,165 @@
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
Namespace Controls
|
||||
Public Class QuickConnectComboBox
|
||||
Inherits ToolStripComboBox
|
||||
|
||||
Private WithEvents _comboBox As ComboBox
|
||||
Private _ignoreEnter As Boolean = False
|
||||
|
||||
Public Sub New()
|
||||
_comboBox = ComboBox
|
||||
_comboBox.DrawMode = DrawMode.OwnerDrawFixed
|
||||
|
||||
' This makes it so that _ignoreEnter works correctly before any items are added to the combo box
|
||||
_comboBox.Items.Clear()
|
||||
End Sub
|
||||
|
||||
Private Sub ComboBox_PreviewKeyDown(ByVal sender As Object, ByVal e As PreviewKeyDownEventArgs) Handles _comboBox.PreviewKeyDown
|
||||
If e.KeyCode = Keys.Enter And _comboBox.DroppedDown Then _ignoreEnter = True
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub OnKeyDown(ByVal e As KeyEventArgs)
|
||||
MyBase.OnKeyDown(e)
|
||||
If e.KeyCode = Keys.Enter Then
|
||||
' Only connect if Enter was not pressed while the combo box was dropped down
|
||||
If Not _ignoreEnter Then OnConnectRequested(New ConnectRequestedEventArgs(_comboBox.Text))
|
||||
_ignoreEnter = False
|
||||
e.Handled = True
|
||||
ElseIf e.KeyCode = Keys.Delete And _comboBox.DroppedDown Then
|
||||
If Not _comboBox.SelectedIndex = -1 Then
|
||||
' Items can't be removed from the ComboBox while it is dropped down without possibly causing
|
||||
' an exception so we must close it, delete the item, and then drop it down again. When we
|
||||
' close it programmatically, the SelectedItem may revert to Nothing, so we must save it first.
|
||||
Dim item As Object = _comboBox.SelectedItem
|
||||
_comboBox.DroppedDown = False
|
||||
_comboBox.Items.Remove(item)
|
||||
_comboBox.SelectedIndex = -1
|
||||
If Not _comboBox.Items.Count = 0 Then
|
||||
_comboBox.DroppedDown = True
|
||||
End If
|
||||
End If
|
||||
e.Handled = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ComboBox_SelectedIndexChanged(sender As System.Object, e As EventArgs) Handles _comboBox.SelectedIndexChanged
|
||||
If Not TypeOf _comboBox.SelectedItem Is HistoryItem Then Return
|
||||
Dim historyItem As HistoryItem = CType(_comboBox.SelectedItem, HistoryItem)
|
||||
OnProtocolChanged(New ProtocolChangedEventArgs(historyItem.ConnectionInfo.Protocol))
|
||||
End Sub
|
||||
|
||||
Private Shared Sub ComboBox_DrawItem(ByVal sender As Object, ByVal e As DrawItemEventArgs) Handles _comboBox.DrawItem
|
||||
Dim comboBox As ComboBox = TryCast(sender, ComboBox)
|
||||
If comboBox Is Nothing Then Return
|
||||
Dim drawItem As Object = comboBox.Items(e.Index)
|
||||
|
||||
Dim drawString As String
|
||||
If TypeOf drawItem Is HistoryItem Then
|
||||
Dim historyItem As HistoryItem = CType(drawItem, HistoryItem)
|
||||
drawString = historyItem.ToString(includeProtocol:=True)
|
||||
Else
|
||||
drawString = drawItem.ToString()
|
||||
End If
|
||||
|
||||
e.DrawBackground()
|
||||
e.Graphics.DrawString(drawString, e.Font, New SolidBrush(e.ForeColor), New RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
|
||||
e.DrawFocusRectangle()
|
||||
End Sub
|
||||
|
||||
Private Structure HistoryItem
|
||||
Implements IEquatable(Of HistoryItem)
|
||||
|
||||
Public Property ConnectionInfo As Connection.Info
|
||||
|
||||
Public Overloads Function Equals(other As HistoryItem) As Boolean Implements IEquatable(Of HistoryItem).Equals
|
||||
If Not ConnectionInfo.Hostname = other.ConnectionInfo.Hostname Then Return False
|
||||
If Not ConnectionInfo.Port = other.ConnectionInfo.Port Then Return False
|
||||
If Not ConnectionInfo.Protocol = other.ConnectionInfo.Protocol Then Return False
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return ToString(False)
|
||||
End Function
|
||||
|
||||
Public Overloads Function ToString(ByVal includeProtocol As Boolean) As String
|
||||
Dim port As String = String.Empty
|
||||
If Not ConnectionInfo.Port = ConnectionInfo.GetDefaultPort() Then
|
||||
port = String.Format(":{0}", ConnectionInfo.Port)
|
||||
End If
|
||||
If includeProtocol Then
|
||||
Return String.Format("{0}{1} ({2})", ConnectionInfo.Hostname, port, ConnectionInfo.Protocol)
|
||||
Else
|
||||
Return String.Format("{0}{1}", ConnectionInfo.Hostname, port)
|
||||
End If
|
||||
End Function
|
||||
End Structure
|
||||
|
||||
Private Function Exists(ByVal searchItem As HistoryItem) As Boolean
|
||||
For Each item As Object In _comboBox.Items
|
||||
If Not TypeOf item Is HistoryItem Then Continue For
|
||||
Dim historyItem As HistoryItem = CType(item, HistoryItem)
|
||||
If historyItem.Equals(searchItem) Then Return True
|
||||
Next
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Public Sub Add(ByVal connectionInfo As Connection.Info)
|
||||
Try
|
||||
Dim historyItem As New HistoryItem
|
||||
historyItem.ConnectionInfo = connectionInfo
|
||||
If Not Exists(historyItem) Then _comboBox.Items.Insert(0, historyItem)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(My.Language.strQuickConnectAddFailed, ex, Messages.MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
#Region "Events"
|
||||
Public Class ConnectRequestedEventArgs
|
||||
Inherits EventArgs
|
||||
|
||||
Public Sub New(ByVal connectionString As String)
|
||||
_connectionString = connectionString
|
||||
End Sub
|
||||
|
||||
Private ReadOnly _connectionString As String
|
||||
|
||||
Public ReadOnly Property ConnectionString As String
|
||||
Get
|
||||
Return _connectionString
|
||||
End Get
|
||||
End Property
|
||||
End Class
|
||||
|
||||
Public Event ConnectRequested(ByVal sender As Object, ByVal e As ConnectRequestedEventArgs)
|
||||
|
||||
Protected Overridable Sub OnConnectRequested(ByVal e As ConnectRequestedEventArgs)
|
||||
RaiseEvent ConnectRequested(Me, New ConnectRequestedEventArgs(e.ConnectionString))
|
||||
End Sub
|
||||
|
||||
Public Class ProtocolChangedEventArgs
|
||||
Inherits EventArgs
|
||||
|
||||
Public Sub New(ByVal protocol As Connection.Protocol.Protocols)
|
||||
_protocol = protocol
|
||||
End Sub
|
||||
|
||||
Private ReadOnly _protocol As Connection.Protocol.Protocols
|
||||
|
||||
Public ReadOnly Property Protocol As Connection.Protocol.Protocols
|
||||
Get
|
||||
Return _protocol
|
||||
End Get
|
||||
End Property
|
||||
End Class
|
||||
|
||||
Public Event ProtocolChanged(ByVal sender As Object, ByVal e As ProtocolChangedEventArgs)
|
||||
|
||||
Protected Overridable Sub OnProtocolChanged(ByVal e As ProtocolChangedEventArgs)
|
||||
RaiseEvent ProtocolChanged(Me, New ProtocolChangedEventArgs(e.Protocol))
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
45
mRemoteV1/Controls/TextBox.vb
Normal file
45
mRemoteV1/Controls/TextBox.vb
Normal file
@@ -0,0 +1,45 @@
|
||||
Imports System.ComponentModel
|
||||
|
||||
' Adapted from http://stackoverflow.com/a/3678888/2101395
|
||||
|
||||
Namespace Controls
|
||||
Public Class TextBox
|
||||
Inherits Windows.Forms.TextBox
|
||||
|
||||
#Region "Public Properties"
|
||||
<Category("Behavior"),
|
||||
DefaultValue(False)> _
|
||||
Public Property SelectAllOnFocus As Boolean = False
|
||||
#End Region
|
||||
|
||||
#Region "Protected Methods"
|
||||
Protected Overrides Sub OnEnter(ByVal e As EventArgs)
|
||||
MyBase.OnEnter(e)
|
||||
|
||||
If MouseButtons = MouseButtons.None Then
|
||||
SelectAll()
|
||||
_focusHandled = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub OnLeave(ByVal e As EventArgs)
|
||||
MyBase.OnLeave(e)
|
||||
|
||||
_focusHandled = False
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
|
||||
MyBase.OnMouseUp(e)
|
||||
|
||||
If Not _focusHandled Then
|
||||
If SelectionLength = 0 Then SelectAll()
|
||||
_focusHandled = True
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Fields"
|
||||
Private _focusHandled As Boolean = False
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
42
mRemoteV1/Controls/ToolStripSplitButton.vb
Normal file
42
mRemoteV1/Controls/ToolStripSplitButton.vb
Normal file
@@ -0,0 +1,42 @@
|
||||
Namespace Controls
|
||||
Public Class ToolStripSplitButton
|
||||
Inherits Windows.Forms.ToolStripSplitButton
|
||||
|
||||
Public Overloads Property DropDown As ToolStripDropDown
|
||||
Get
|
||||
Return MyBase.DropDown
|
||||
End Get
|
||||
Set(value As ToolStripDropDown)
|
||||
If MyBase.DropDown IsNot value Then
|
||||
MyBase.DropDown = value
|
||||
AddHandler MyBase.DropDown.Closing, AddressOf DropDown_Closing
|
||||
End If
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Sub DropDown_Closing(ByVal sender As Object, e As ToolStripDropDownClosingEventArgs)
|
||||
If Not e.CloseReason = ToolStripDropDownCloseReason.AppClicked Then Return
|
||||
|
||||
Dim dropDownButtonBoundsClient As Rectangle = DropDownButtonBounds ' Relative to the ToolStripSplitButton
|
||||
dropDownButtonBoundsClient.Offset(Bounds.Location) ' Relative to the parent of the ToolStripSplitButton
|
||||
Dim dropDownButtonBoundsScreen As Rectangle = GetCurrentParent().RectangleToScreen(dropDownButtonBoundsClient) ' Relative to the screen
|
||||
|
||||
If dropDownButtonBoundsScreen.Contains(Control.MousePosition) Then e.Cancel = True
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
|
||||
_dropDownVisibleOnMouseDown = DropDown.Visible
|
||||
MyBase.OnMouseDown(e)
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
|
||||
If _dropDownVisibleOnMouseDown Then
|
||||
DropDown.Close()
|
||||
Else
|
||||
MyBase.OnMouseUp(e)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private _dropDownVisibleOnMouseDown As Boolean = False
|
||||
End Class
|
||||
End Namespace
|
||||
294
mRemoteV1/Forms/ExportForm.Designer.vb
generated
Normal file
294
mRemoteV1/Forms/ExportForm.Designer.vb
generated
Normal file
@@ -0,0 +1,294 @@
|
||||
Namespace Forms
|
||||
Partial Public Class ExportForm
|
||||
Inherits Form
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Private Sub InitializeComponent()
|
||||
Me.btnCancel = New System.Windows.Forms.Button()
|
||||
Me.btnOK = New System.Windows.Forms.Button()
|
||||
Me.lblUncheckProperties = New System.Windows.Forms.Label()
|
||||
Me.chkUsername = New System.Windows.Forms.CheckBox()
|
||||
Me.chkPassword = New System.Windows.Forms.CheckBox()
|
||||
Me.chkDomain = New System.Windows.Forms.CheckBox()
|
||||
Me.chkInheritance = New System.Windows.Forms.CheckBox()
|
||||
Me.txtFileName = New System.Windows.Forms.TextBox()
|
||||
Me.btnBrowse = New System.Windows.Forms.Button()
|
||||
Me.grpProperties = New System.Windows.Forms.GroupBox()
|
||||
Me.grpFile = New System.Windows.Forms.GroupBox()
|
||||
Me.lblFileFormat = New System.Windows.Forms.Label()
|
||||
Me.lblFileName = New System.Windows.Forms.Label()
|
||||
Me.cboFileFormat = New System.Windows.Forms.ComboBox()
|
||||
Me.grpItems = New System.Windows.Forms.GroupBox()
|
||||
Me.lblSelectedConnection = New System.Windows.Forms.Label()
|
||||
Me.lblSelectedFolder = New System.Windows.Forms.Label()
|
||||
Me.rdoExportSelectedConnection = New System.Windows.Forms.RadioButton()
|
||||
Me.rdoExportSelectedFolder = New System.Windows.Forms.RadioButton()
|
||||
Me.rdoExportEverything = New System.Windows.Forms.RadioButton()
|
||||
Me.grpProperties.SuspendLayout()
|
||||
Me.grpFile.SuspendLayout()
|
||||
Me.grpItems.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'btnCancel
|
||||
'
|
||||
Me.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
||||
Me.btnCancel.Location = New System.Drawing.Point(447, 473)
|
||||
Me.btnCancel.Name = "btnCancel"
|
||||
Me.btnCancel.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnCancel.TabIndex = 3
|
||||
Me.btnCancel.Text = "&Cancel"
|
||||
Me.btnCancel.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnOK
|
||||
'
|
||||
Me.btnOK.Location = New System.Drawing.Point(366, 473)
|
||||
Me.btnOK.Name = "btnOK"
|
||||
Me.btnOK.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnOK.TabIndex = 2
|
||||
Me.btnOK.Text = "&OK"
|
||||
Me.btnOK.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblUncheckProperties
|
||||
'
|
||||
Me.lblUncheckProperties.AutoSize = True
|
||||
Me.lblUncheckProperties.Location = New System.Drawing.Point(12, 134)
|
||||
Me.lblUncheckProperties.Name = "lblUncheckProperties"
|
||||
Me.lblUncheckProperties.Size = New System.Drawing.Size(244, 13)
|
||||
Me.lblUncheckProperties.TabIndex = 4
|
||||
Me.lblUncheckProperties.Text = "Uncheck the properties you want not to be saved!"
|
||||
'
|
||||
'chkUsername
|
||||
'
|
||||
Me.chkUsername.AutoSize = True
|
||||
Me.chkUsername.Checked = True
|
||||
Me.chkUsername.CheckState = System.Windows.Forms.CheckState.Checked
|
||||
Me.chkUsername.Location = New System.Drawing.Point(15, 32)
|
||||
Me.chkUsername.Name = "chkUsername"
|
||||
Me.chkUsername.Size = New System.Drawing.Size(74, 17)
|
||||
Me.chkUsername.TabIndex = 0
|
||||
Me.chkUsername.Text = "Username"
|
||||
Me.chkUsername.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkPassword
|
||||
'
|
||||
Me.chkPassword.AutoSize = True
|
||||
Me.chkPassword.Checked = True
|
||||
Me.chkPassword.CheckState = System.Windows.Forms.CheckState.Checked
|
||||
Me.chkPassword.Location = New System.Drawing.Point(15, 55)
|
||||
Me.chkPassword.Name = "chkPassword"
|
||||
Me.chkPassword.Size = New System.Drawing.Size(72, 17)
|
||||
Me.chkPassword.TabIndex = 1
|
||||
Me.chkPassword.Text = "Password"
|
||||
Me.chkPassword.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkDomain
|
||||
'
|
||||
Me.chkDomain.AutoSize = True
|
||||
Me.chkDomain.Checked = True
|
||||
Me.chkDomain.CheckState = System.Windows.Forms.CheckState.Checked
|
||||
Me.chkDomain.Location = New System.Drawing.Point(15, 78)
|
||||
Me.chkDomain.Name = "chkDomain"
|
||||
Me.chkDomain.Size = New System.Drawing.Size(62, 17)
|
||||
Me.chkDomain.TabIndex = 2
|
||||
Me.chkDomain.Text = "Domain"
|
||||
Me.chkDomain.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkInheritance
|
||||
'
|
||||
Me.chkInheritance.AutoSize = True
|
||||
Me.chkInheritance.Checked = True
|
||||
Me.chkInheritance.CheckState = System.Windows.Forms.CheckState.Checked
|
||||
Me.chkInheritance.Location = New System.Drawing.Point(15, 101)
|
||||
Me.chkInheritance.Name = "chkInheritance"
|
||||
Me.chkInheritance.Size = New System.Drawing.Size(79, 17)
|
||||
Me.chkInheritance.TabIndex = 3
|
||||
Me.chkInheritance.Text = "Inheritance"
|
||||
Me.chkInheritance.UseVisualStyleBackColor = True
|
||||
'
|
||||
'txtFileName
|
||||
'
|
||||
Me.txtFileName.Location = New System.Drawing.Point(15, 48)
|
||||
Me.txtFileName.Name = "txtFileName"
|
||||
Me.txtFileName.Size = New System.Drawing.Size(396, 20)
|
||||
Me.txtFileName.TabIndex = 1
|
||||
'
|
||||
'btnBrowse
|
||||
'
|
||||
Me.btnBrowse.Location = New System.Drawing.Point(417, 46)
|
||||
Me.btnBrowse.Name = "btnBrowse"
|
||||
Me.btnBrowse.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnBrowse.TabIndex = 2
|
||||
Me.btnBrowse.Text = "&Browse"
|
||||
Me.btnBrowse.UseVisualStyleBackColor = True
|
||||
'
|
||||
'grpProperties
|
||||
'
|
||||
Me.grpProperties.Controls.Add(Me.lblUncheckProperties)
|
||||
Me.grpProperties.Controls.Add(Me.chkInheritance)
|
||||
Me.grpProperties.Controls.Add(Me.chkUsername)
|
||||
Me.grpProperties.Controls.Add(Me.chkDomain)
|
||||
Me.grpProperties.Controls.Add(Me.chkPassword)
|
||||
Me.grpProperties.Location = New System.Drawing.Point(12, 304)
|
||||
Me.grpProperties.Name = "grpProperties"
|
||||
Me.grpProperties.Size = New System.Drawing.Size(510, 163)
|
||||
Me.grpProperties.TabIndex = 1
|
||||
Me.grpProperties.TabStop = False
|
||||
Me.grpProperties.Text = "Export Properties"
|
||||
'
|
||||
'grpFile
|
||||
'
|
||||
Me.grpFile.Controls.Add(Me.lblFileFormat)
|
||||
Me.grpFile.Controls.Add(Me.lblFileName)
|
||||
Me.grpFile.Controls.Add(Me.cboFileFormat)
|
||||
Me.grpFile.Controls.Add(Me.txtFileName)
|
||||
Me.grpFile.Controls.Add(Me.btnBrowse)
|
||||
Me.grpFile.Location = New System.Drawing.Point(12, 12)
|
||||
Me.grpFile.Name = "grpFile"
|
||||
Me.grpFile.Size = New System.Drawing.Size(510, 140)
|
||||
Me.grpFile.TabIndex = 0
|
||||
Me.grpFile.TabStop = False
|
||||
Me.grpFile.Text = "Export File"
|
||||
'
|
||||
'lblFileFormat
|
||||
'
|
||||
Me.lblFileFormat.AutoSize = True
|
||||
Me.lblFileFormat.Location = New System.Drawing.Point(12, 84)
|
||||
Me.lblFileFormat.Name = "lblFileFormat"
|
||||
Me.lblFileFormat.Size = New System.Drawing.Size(61, 13)
|
||||
Me.lblFileFormat.TabIndex = 3
|
||||
Me.lblFileFormat.Text = "File &Format:"
|
||||
'
|
||||
'lblFileName
|
||||
'
|
||||
Me.lblFileName.AutoSize = True
|
||||
Me.lblFileName.Location = New System.Drawing.Point(12, 32)
|
||||
Me.lblFileName.Name = "lblFileName"
|
||||
Me.lblFileName.Size = New System.Drawing.Size(52, 13)
|
||||
Me.lblFileName.TabIndex = 0
|
||||
Me.lblFileName.Text = "Filename:"
|
||||
'
|
||||
'cboFileFormat
|
||||
'
|
||||
Me.cboFileFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.cboFileFormat.FormattingEnabled = True
|
||||
Me.cboFileFormat.Location = New System.Drawing.Point(15, 100)
|
||||
Me.cboFileFormat.Name = "cboFileFormat"
|
||||
Me.cboFileFormat.Size = New System.Drawing.Size(294, 21)
|
||||
Me.cboFileFormat.TabIndex = 4
|
||||
'
|
||||
'grpItems
|
||||
'
|
||||
Me.grpItems.Controls.Add(Me.lblSelectedConnection)
|
||||
Me.grpItems.Controls.Add(Me.lblSelectedFolder)
|
||||
Me.grpItems.Controls.Add(Me.rdoExportSelectedConnection)
|
||||
Me.grpItems.Controls.Add(Me.rdoExportSelectedFolder)
|
||||
Me.grpItems.Controls.Add(Me.rdoExportEverything)
|
||||
Me.grpItems.Location = New System.Drawing.Point(12, 158)
|
||||
Me.grpItems.Name = "grpItems"
|
||||
Me.grpItems.Size = New System.Drawing.Size(510, 140)
|
||||
Me.grpItems.TabIndex = 4
|
||||
Me.grpItems.TabStop = False
|
||||
Me.grpItems.Text = "Export Items"
|
||||
'
|
||||
'lblSelectedConnection
|
||||
'
|
||||
Me.lblSelectedConnection.AutoSize = True
|
||||
Me.lblSelectedConnection.Location = New System.Drawing.Point(48, 111)
|
||||
Me.lblSelectedConnection.Name = "lblSelectedConnection"
|
||||
Me.lblSelectedConnection.Size = New System.Drawing.Size(92, 13)
|
||||
Me.lblSelectedConnection.TabIndex = 4
|
||||
Me.lblSelectedConnection.Text = "Connection Name"
|
||||
'
|
||||
'lblSelectedFolder
|
||||
'
|
||||
Me.lblSelectedFolder.AutoSize = True
|
||||
Me.lblSelectedFolder.Location = New System.Drawing.Point(48, 75)
|
||||
Me.lblSelectedFolder.Name = "lblSelectedFolder"
|
||||
Me.lblSelectedFolder.Size = New System.Drawing.Size(67, 13)
|
||||
Me.lblSelectedFolder.TabIndex = 3
|
||||
Me.lblSelectedFolder.Text = "Folder Name"
|
||||
'
|
||||
'rdoExportSelectedConnection
|
||||
'
|
||||
Me.rdoExportSelectedConnection.AutoSize = True
|
||||
Me.rdoExportSelectedConnection.Location = New System.Drawing.Point(15, 91)
|
||||
Me.rdoExportSelectedConnection.Name = "rdoExportSelectedConnection"
|
||||
Me.rdoExportSelectedConnection.Size = New System.Drawing.Size(215, 17)
|
||||
Me.rdoExportSelectedConnection.TabIndex = 2
|
||||
Me.rdoExportSelectedConnection.TabStop = True
|
||||
Me.rdoExportSelectedConnection.Text = "Export the currently selected connection"
|
||||
Me.rdoExportSelectedConnection.UseVisualStyleBackColor = True
|
||||
'
|
||||
'rdoExportSelectedFolder
|
||||
'
|
||||
Me.rdoExportSelectedFolder.AutoSize = True
|
||||
Me.rdoExportSelectedFolder.Location = New System.Drawing.Point(15, 55)
|
||||
Me.rdoExportSelectedFolder.Name = "rdoExportSelectedFolder"
|
||||
Me.rdoExportSelectedFolder.Size = New System.Drawing.Size(188, 17)
|
||||
Me.rdoExportSelectedFolder.TabIndex = 1
|
||||
Me.rdoExportSelectedFolder.TabStop = True
|
||||
Me.rdoExportSelectedFolder.Text = "Export the currently selected folder"
|
||||
Me.rdoExportSelectedFolder.UseVisualStyleBackColor = True
|
||||
'
|
||||
'rdoExportEverything
|
||||
'
|
||||
Me.rdoExportEverything.AutoSize = True
|
||||
Me.rdoExportEverything.Checked = True
|
||||
Me.rdoExportEverything.Location = New System.Drawing.Point(15, 32)
|
||||
Me.rdoExportEverything.Name = "rdoExportEverything"
|
||||
Me.rdoExportEverything.Size = New System.Drawing.Size(107, 17)
|
||||
Me.rdoExportEverything.TabIndex = 0
|
||||
Me.rdoExportEverything.TabStop = True
|
||||
Me.rdoExportEverything.Text = "Export everything"
|
||||
Me.rdoExportEverything.UseVisualStyleBackColor = True
|
||||
'
|
||||
'ExportForm
|
||||
'
|
||||
Me.AcceptButton = Me.btnOK
|
||||
Me.CancelButton = Me.btnCancel
|
||||
Me.ClientSize = New System.Drawing.Size(534, 508)
|
||||
Me.Controls.Add(Me.grpItems)
|
||||
Me.Controls.Add(Me.grpFile)
|
||||
Me.Controls.Add(Me.grpProperties)
|
||||
Me.Controls.Add(Me.btnCancel)
|
||||
Me.Controls.Add(Me.btnOK)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.Icon = Global.mRemoteNG.My.Resources.Resources.Connections_SaveAs_Icon
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "ExportForm"
|
||||
Me.ShowInTaskbar = False
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
|
||||
Me.Text = "Export Connections"
|
||||
Me.grpProperties.ResumeLayout(False)
|
||||
Me.grpProperties.PerformLayout()
|
||||
Me.grpFile.ResumeLayout(False)
|
||||
Me.grpFile.PerformLayout()
|
||||
Me.grpItems.ResumeLayout(False)
|
||||
Me.grpItems.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
Private WithEvents btnCancel As System.Windows.Forms.Button
|
||||
Private WithEvents btnOK As System.Windows.Forms.Button
|
||||
Private WithEvents lblUncheckProperties As System.Windows.Forms.Label
|
||||
Private WithEvents chkUsername As System.Windows.Forms.CheckBox
|
||||
Private WithEvents chkPassword As System.Windows.Forms.CheckBox
|
||||
Private WithEvents chkDomain As System.Windows.Forms.CheckBox
|
||||
Private WithEvents chkInheritance As System.Windows.Forms.CheckBox
|
||||
Private WithEvents txtFileName As System.Windows.Forms.TextBox
|
||||
Private WithEvents btnBrowse As System.Windows.Forms.Button
|
||||
Private WithEvents grpProperties As System.Windows.Forms.GroupBox
|
||||
Private WithEvents grpFile As System.Windows.Forms.GroupBox
|
||||
Private WithEvents lblFileFormat As System.Windows.Forms.Label
|
||||
Private WithEvents lblFileName As System.Windows.Forms.Label
|
||||
Private WithEvents cboFileFormat As System.Windows.Forms.ComboBox
|
||||
Private WithEvents grpItems As System.Windows.Forms.GroupBox
|
||||
Private WithEvents lblSelectedConnection As System.Windows.Forms.Label
|
||||
Private WithEvents lblSelectedFolder As System.Windows.Forms.Label
|
||||
Private WithEvents rdoExportSelectedConnection As System.Windows.Forms.RadioButton
|
||||
Private WithEvents rdoExportSelectedFolder As System.Windows.Forms.RadioButton
|
||||
Private WithEvents rdoExportEverything As System.Windows.Forms.RadioButton
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
260
mRemoteV1/Forms/ExportForm.vb
Normal file
260
mRemoteV1/Forms/ExportForm.vb
Normal file
@@ -0,0 +1,260 @@
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.Config.Connections
|
||||
Imports mRemoteNG.App
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Forms
|
||||
Public Class ExportForm
|
||||
Inherits Form
|
||||
|
||||
#Region "Public Properties"
|
||||
Public Property FileName As String
|
||||
Get
|
||||
Return txtFileName.Text
|
||||
End Get
|
||||
Set(value As String)
|
||||
txtFileName.Text = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property SaveFormat As Config.Connections.Save.Format
|
||||
Get
|
||||
Dim exportFormat As ExportFormat = TryCast(cboFileFormat.SelectedItem, ExportFormat)
|
||||
If exportFormat Is Nothing Then
|
||||
Return Config.Connections.Save.Format.mRXML
|
||||
Else
|
||||
Return exportFormat.Format
|
||||
End If
|
||||
End Get
|
||||
Set(value As Config.Connections.Save.Format)
|
||||
For Each item As Object In cboFileFormat.Items
|
||||
Dim exportFormat As ExportFormat = TryCast(item, ExportFormat)
|
||||
If exportFormat Is Nothing Then Continue For
|
||||
If exportFormat.Format = value Then
|
||||
cboFileFormat.SelectedItem = item
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Scope As ExportScope
|
||||
Get
|
||||
If rdoExportSelectedFolder.Checked Then
|
||||
Return ExportScope.SelectedFolder
|
||||
ElseIf rdoExportSelectedConnection.Checked Then
|
||||
Return ExportScope.SelectedConnection
|
||||
Else
|
||||
Return ExportScope.Everything
|
||||
End If
|
||||
End Get
|
||||
Set(value As ExportScope)
|
||||
Select Case value
|
||||
Case ExportScope.Everything
|
||||
rdoExportEverything.Checked = True
|
||||
Case ExportScope.SelectedFolder
|
||||
rdoExportSelectedFolder.Checked = True
|
||||
Case ExportScope.SelectedConnection
|
||||
rdoExportSelectedConnection.Checked = True
|
||||
End Select
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _selectedFolder As TreeNode
|
||||
Public Property SelectedFolder As TreeNode
|
||||
Get
|
||||
Return _selectedFolder
|
||||
End Get
|
||||
Set(value As TreeNode)
|
||||
_selectedFolder = value
|
||||
If value Is Nothing Then
|
||||
lblSelectedFolder.Text = String.Empty
|
||||
Else
|
||||
lblSelectedFolder.Text = value.Text
|
||||
End If
|
||||
rdoExportSelectedFolder.Enabled = (value IsNot Nothing)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _selectedConnection As TreeNode
|
||||
Public Property SelectedConnection As TreeNode
|
||||
Get
|
||||
Return _selectedConnection
|
||||
End Get
|
||||
Set(value As TreeNode)
|
||||
_selectedConnection = value
|
||||
If value Is Nothing Then
|
||||
lblSelectedConnection.Text = String.Empty
|
||||
Else
|
||||
lblSelectedConnection.Text = value.Text
|
||||
End If
|
||||
rdoExportSelectedConnection.Enabled = (value IsNot Nothing)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property IncludeUsername As Boolean
|
||||
Get
|
||||
Return chkUsername.Checked
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
chkUsername.Checked = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property IncludePassword As Boolean
|
||||
Get
|
||||
Return chkPassword.Checked
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
chkPassword.Checked = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property IncludeDomain As Boolean
|
||||
Get
|
||||
Return chkDomain.Checked
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
chkDomain.Checked = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property IncludeInheritance As Boolean
|
||||
Get
|
||||
Return chkInheritance.Checked
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
chkInheritance.Checked = value
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Constructors"
|
||||
Public Sub New()
|
||||
InitializeComponent()
|
||||
|
||||
Runtime.FontOverride(Me)
|
||||
|
||||
SelectedFolder = Nothing
|
||||
SelectedConnection = Nothing
|
||||
|
||||
btnOK.Enabled = False
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
#Region "Event Handlers"
|
||||
Private Sub ExportForm_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
|
||||
cboFileFormat.Items.Clear()
|
||||
cboFileFormat.Items.Add(New ExportFormat(Save.Format.mRXML))
|
||||
cboFileFormat.Items.Add(New ExportFormat(Save.Format.mRCSV))
|
||||
cboFileFormat.Items.Add(New ExportFormat(Save.Format.vRDCSV))
|
||||
cboFileFormat.SelectedIndex = 0
|
||||
|
||||
ApplyLanguage()
|
||||
End Sub
|
||||
|
||||
Private Sub txtFileName_TextChanged(sender As System.Object, e As EventArgs) Handles txtFileName.TextChanged
|
||||
btnOK.Enabled = Not String.IsNullOrEmpty(txtFileName.Text)
|
||||
End Sub
|
||||
|
||||
Private Sub btnBrowse_Click(sender As System.Object, e As EventArgs) Handles btnBrowse.Click
|
||||
Using saveFileDialog As New SaveFileDialog()
|
||||
With saveFileDialog
|
||||
.CheckPathExists = True
|
||||
.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
|
||||
.OverwritePrompt = True
|
||||
|
||||
Dim fileTypes As New List(Of String)
|
||||
fileTypes.AddRange({Language.strFiltermRemoteXML, "*.xml"})
|
||||
fileTypes.AddRange({Language.strFiltermRemoteCSV, "*.csv"})
|
||||
fileTypes.AddRange({Language.strFiltervRD2008CSV, "*.csv"})
|
||||
fileTypes.AddRange({Language.strFilterAll, "*.*"})
|
||||
|
||||
.Filter = String.Join("|", fileTypes.ToArray())
|
||||
End With
|
||||
|
||||
If Not saveFileDialog.ShowDialog(Me) = DialogResult.OK Then Return
|
||||
|
||||
txtFileName.Text = saveFileDialog.FileName
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnOK.Click
|
||||
DialogResult = DialogResult.OK
|
||||
End Sub
|
||||
|
||||
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnCancel.Click
|
||||
DialogResult = DialogResult.Cancel
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
Text = Language.strExport
|
||||
|
||||
grpFile.Text = Language.strExportFile
|
||||
lblFileName.Text = Language.strLabelFilename
|
||||
btnBrowse.Text = Language.strButtonBrowse
|
||||
lblFileFormat.Text = Language.strFileFormatLabel
|
||||
|
||||
grpItems.Text = Language.strExportItems
|
||||
rdoExportEverything.Text = Language.strExportEverything
|
||||
rdoExportSelectedFolder.Text = Language.strExportSelectedFolder
|
||||
rdoExportSelectedConnection.Text = Language.strExportSelectedConnection
|
||||
|
||||
grpProperties.Text = Language.strExportProperties
|
||||
chkUsername.Text = Language.strCheckboxUsername
|
||||
chkPassword.Text = Language.strCheckboxPassword
|
||||
chkDomain.Text = Language.strCheckboxDomain
|
||||
chkInheritance.Text = Language.strCheckboxInheritance
|
||||
lblUncheckProperties.Text = Language.strUncheckProperties
|
||||
|
||||
btnOK.Text = Language.strButtonOK
|
||||
btnCancel.Text = Language.strButtonCancel
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Enumerations"
|
||||
Public Enum ExportScope As Integer
|
||||
Everything
|
||||
SelectedFolder
|
||||
SelectedConnection
|
||||
End Enum
|
||||
#End Region
|
||||
|
||||
#Region "Private Classes"
|
||||
<ImmutableObject(True)> _
|
||||
Private Class ExportFormat
|
||||
#Region "Public Properties"
|
||||
Private ReadOnly _format As Config.Connections.Save.Format
|
||||
Public ReadOnly Property Format As Config.Connections.Save.Format
|
||||
Get
|
||||
Return _format
|
||||
End Get
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Constructors"
|
||||
Public Sub New(ByVal format As Config.Connections.Save.Format)
|
||||
_format = format
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Overrides Function ToString() As String
|
||||
Select Case Format
|
||||
Case Config.Connections.Save.Format.mRXML
|
||||
Return Language.strMremoteNgXml
|
||||
Case Config.Connections.Save.Format.mRCSV
|
||||
Return Language.strMremoteNgCsv
|
||||
Case Config.Connections.Save.Format.vRDCSV
|
||||
Return Language.strVisionAppRemoteDesktopCsv
|
||||
Case Else
|
||||
Return Format.ToString()
|
||||
End Select
|
||||
End Function
|
||||
#End Region
|
||||
End Class
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
92
mRemoteV1/Forms/OptionsForm.Designer.vb
generated
Normal file
92
mRemoteV1/Forms/OptionsForm.Designer.vb
generated
Normal file
@@ -0,0 +1,92 @@
|
||||
Namespace Forms
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class OptionsForm
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(OptionsForm))
|
||||
Dim Alignment2 As mRemoteNG.Controls.Alignment = New mRemoteNG.Controls.Alignment()
|
||||
Me.PagePanel = New System.Windows.Forms.Panel()
|
||||
Me.OkButton = New System.Windows.Forms.Button()
|
||||
Me.CancelButtonControl = New System.Windows.Forms.Button()
|
||||
Me.PageListView = New mRemoteNG.Controls.ListView()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'PagePanel
|
||||
'
|
||||
resources.ApplyResources(Me.PagePanel, "PagePanel")
|
||||
Me.PagePanel.Name = "PagePanel"
|
||||
'
|
||||
'OkButton
|
||||
'
|
||||
resources.ApplyResources(Me.OkButton, "OkButton")
|
||||
Me.OkButton.Name = "OkButton"
|
||||
Me.OkButton.UseVisualStyleBackColor = True
|
||||
'
|
||||
'CancelButtonControl
|
||||
'
|
||||
Me.CancelButtonControl.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
||||
resources.ApplyResources(Me.CancelButtonControl, "CancelButtonControl")
|
||||
Me.CancelButtonControl.Name = "CancelButtonControl"
|
||||
Me.CancelButtonControl.UseVisualStyleBackColor = True
|
||||
'
|
||||
'PageListView
|
||||
'
|
||||
Me.PageListView.InactiveHighlightBackColor = System.Drawing.SystemColors.Highlight
|
||||
Me.PageListView.InactiveHighlightBorderColor = System.Drawing.SystemColors.HotTrack
|
||||
Me.PageListView.InactiveHighlightForeColor = System.Drawing.SystemColors.HighlightText
|
||||
Alignment2.Horizontal = mRemoteNG.Controls.HorizontalAlignment.Left
|
||||
Alignment2.Vertical = mRemoteNG.Controls.VerticalAlignment.Middle
|
||||
Me.PageListView.LabelAlignment = Alignment2
|
||||
resources.ApplyResources(Me.PageListView, "PageListView")
|
||||
Me.PageListView.MultiSelect = False
|
||||
Me.PageListView.Name = "PageListView"
|
||||
Me.PageListView.OwnerDraw = True
|
||||
Me.PageListView.ShowFocusCues = False
|
||||
Me.PageListView.TileSize = New System.Drawing.Size(150, 30)
|
||||
Me.PageListView.UseCompatibleStateImageBehavior = False
|
||||
Me.PageListView.View = System.Windows.Forms.View.Tile
|
||||
'
|
||||
'OptionsForm
|
||||
'
|
||||
Me.AcceptButton = Me.OkButton
|
||||
resources.ApplyResources(Me, "$this")
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.CancelButton = Me.CancelButtonControl
|
||||
Me.Controls.Add(Me.CancelButtonControl)
|
||||
Me.Controls.Add(Me.OkButton)
|
||||
Me.Controls.Add(Me.PagePanel)
|
||||
Me.Controls.Add(Me.PageListView)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "OptionsForm"
|
||||
Me.ShowInTaskbar = False
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
Friend WithEvents PageListView As mRemoteNG.Controls.ListView
|
||||
Friend WithEvents PagePanel As System.Windows.Forms.Panel
|
||||
Friend WithEvents OkButton As System.Windows.Forms.Button
|
||||
Friend WithEvents CancelButtonControl As System.Windows.Forms.Button
|
||||
End Class
|
||||
End Namespace
|
||||
264
mRemoteV1/Forms/OptionsForm.resx
Normal file
264
mRemoteV1/Forms/OptionsForm.resx
Normal file
@@ -0,0 +1,264 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="PagePanel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>172, 12</value>
|
||||
</data>
|
||||
<data name="PagePanel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>610, 489</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="PagePanel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>PagePanel.Name" xml:space="preserve">
|
||||
<value>PagePanel</value>
|
||||
</data>
|
||||
<data name=">>PagePanel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>PagePanel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>PagePanel.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="OkButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="OkButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>626, 507</value>
|
||||
</data>
|
||||
<data name="OkButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="OkButton.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="OkButton.Text" xml:space="preserve">
|
||||
<value>&OK</value>
|
||||
</data>
|
||||
<data name=">>OkButton.Name" xml:space="preserve">
|
||||
<value>OkButton</value>
|
||||
</data>
|
||||
<data name=">>OkButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>OkButton.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>OkButton.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="CancelButtonControl.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="CancelButtonControl.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>707, 507</value>
|
||||
</data>
|
||||
<data name="CancelButtonControl.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="CancelButtonControl.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="CancelButtonControl.Text" xml:space="preserve">
|
||||
<value>&Cancel</value>
|
||||
</data>
|
||||
<data name=">>CancelButtonControl.Name" xml:space="preserve">
|
||||
<value>CancelButtonControl</value>
|
||||
</data>
|
||||
<data name=">>CancelButtonControl.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>CancelButtonControl.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>CancelButtonControl.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="PageListView.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 12</value>
|
||||
</data>
|
||||
<data name="PageListView.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>154, 489</value>
|
||||
</data>
|
||||
<data name="PageListView.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>PageListView.Name" xml:space="preserve">
|
||||
<value>PageListView</value>
|
||||
</data>
|
||||
<data name=">>PageListView.Type" xml:space="preserve">
|
||||
<value>mRemoteNG.Controls.ListView, mRemoteNG, Version=1.72.5056.42837, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>PageListView.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>PageListView.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>794, 542</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA1YZW1dWCUP/RfEr/0XhErwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA2ZBkzN+jgP/qwar/6r+n/9yYcP/RekavAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAANuWbv/tyLL/57ea/+azl//qwqr/3pty/9F8SK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADdnnj/7cy2/+i8ov/ksJH/5rWZ/+rCq//em3P/035MrAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA36R+kuayk//uzLf/6b2k/+Wyk//mtpr/6sOs/96dd//TgE6sAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADfpIKS5rOX/+7Nuf/pvqT/5bOV/+e4nP/rxa3/3p54/9WC
|
||||
UKoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOGmhJLmtpj/7s66/+m/pv/ovKL/7Miy/9+j
|
||||
gP/SiFzJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4aiGkua2m//vz7v/7s65/+Kt
|
||||
i//Smnr/h4eH94WFhSMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhqIiS57ib/+a1
|
||||
l//YqIv/0tLS/7S0tP+IiIj+hoaG+4SEhPuCgoLWgICAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOOs
|
||||
ipLapofPkZGR+8fHx//MzMz/x8fH/8XFxf/CwsL/v7+//4ODg/WBgYFwAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAJSUlEiSkpL+1NTU/8jIyP+7u7v/ubm5/8HBwf/Dw8P/hISE1gAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAlZWV/N3d3f/ExMT/jo6OwYyMjMOrq6v/19fX/4aGhvsAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJeXl/vk5OT/z8/P/5GRkcIAAAAAjY2N/4uLi/+JiYn7AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamprW4uLi/+fn5/+4uLj/kpKS/wAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJyccJqamvXk5OT/7u7u/5WVlf8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdnZ1wm5ub1pqamvuYmJj7AAAAAAAA
|
||||
AAAAAAAAh/+cQQP/nEEB/5xBAP+cQQB/nEGAP5xBwD+cQeAfnEHwAZxB+ACcQf4AnEH/AJxB/wicQf8H
|
||||
nEH/B5xB/4ecQQ==
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Options</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>OptionsForm</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
195
mRemoteV1/Forms/OptionsForm.vb
Normal file
195
mRemoteV1/Forms/OptionsForm.vb
Normal file
@@ -0,0 +1,195 @@
|
||||
Imports mRemoteNG.Forms.OptionsPages
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Forms
|
||||
Public Class OptionsForm
|
||||
#Region "Constructors"
|
||||
Public Sub New()
|
||||
' This call is required by the designer.
|
||||
InitializeComponent()
|
||||
' Add any initialization after the InitializeComponent() call.
|
||||
|
||||
FontOverride(Me)
|
||||
|
||||
_pages.Add(New StartupExitPage, New PageInfo)
|
||||
_pages.Add(New AppearancePage, New PageInfo)
|
||||
_pages.Add(New TabsPanelsPage, New PageInfo)
|
||||
_pages.Add(New ConnectionsPage, New PageInfo)
|
||||
_pages.Add(New SqlServerPage, New PageInfo)
|
||||
_pages.Add(New UpdatesPage, New PageInfo)
|
||||
_pages.Add(New ThemePage, New PageInfo)
|
||||
_pages.Add(New KeyboardPage, New PageInfo)
|
||||
_pages.Add(New AdvancedPage, New PageInfo)
|
||||
|
||||
_startPage = GetPageFromType(GetType(StartupExitPage))
|
||||
|
||||
_pageIconImageList.ColorDepth = ColorDepth.Depth32Bit
|
||||
PageListView.LargeImageList = _pageIconImageList
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Overloads Function ShowDialog(ByVal ownerWindow As IWin32Window, ByVal pageType As Type) As DialogResult
|
||||
_startPage = GetPageFromType(pageType)
|
||||
Return ShowDialog(ownerWindow)
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Private Fields"
|
||||
Private ReadOnly _pages As New Dictionary(Of OptionsPage, PageInfo)
|
||||
Private ReadOnly _pageIconImageList As New ImageList
|
||||
|
||||
Private _startPage As OptionsPage
|
||||
Private _selectedPage As OptionsPage = Nothing
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
#Region "Event Handlers"
|
||||
Private Sub OptionsForm_Load(sender As System.Object, e As EventArgs) Handles MyBase.Load
|
||||
For Each keyValuePair As KeyValuePair(Of OptionsPage, PageInfo) In _pages
|
||||
Dim page As OptionsPage = keyValuePair.Key
|
||||
Dim pageInfo As PageInfo = keyValuePair.Value
|
||||
_pageIconImageList.Images.Add(pageInfo.IconKey, page.PageIcon)
|
||||
pageInfo.ListViewItem = PageListView.Items.Add(page.PageName, pageInfo.IconKey)
|
||||
Next
|
||||
|
||||
ApplyLanguage()
|
||||
LoadSettings()
|
||||
|
||||
ShowPage(_startPage)
|
||||
End Sub
|
||||
|
||||
Private Sub OptionsForm_FormClosing(sender As System.Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
|
||||
If DialogResult = DialogResult.OK Then
|
||||
SaveSettings()
|
||||
Else
|
||||
RevertSettings()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub PageListView_ItemSelectionChanged(sender As System.Object, e As ListViewItemSelectionChangedEventArgs) Handles PageListView.ItemSelectionChanged
|
||||
If Not e.IsSelected Then Return
|
||||
If _pages.Count < 1 Then Return
|
||||
Dim page As OptionsPage = GetPageFromListViewItem(e.Item)
|
||||
If _selectedPage IsNot page Then
|
||||
ShowPage(page)
|
||||
End If
|
||||
SelectNextControl(PageListView, True, True, True, True)
|
||||
End Sub
|
||||
|
||||
Private Sub PageListView_MouseUp(sender As System.Object, e As MouseEventArgs) Handles PageListView.MouseUp
|
||||
If PageListView.SelectedIndices.Count = 0 Then
|
||||
Dim pageInfo As PageInfo = _pages(_selectedPage)
|
||||
pageInfo.ListViewItem.Selected = True
|
||||
End If
|
||||
SelectNextControl(PageListView, True, True, True, True)
|
||||
End Sub
|
||||
|
||||
Private Sub OkButton_Click(sender As System.Object, e As EventArgs) Handles OkButton.Click
|
||||
DialogResult = DialogResult.OK
|
||||
Close()
|
||||
End Sub
|
||||
|
||||
Private Sub CancelButtonControl_Click(sender As System.Object, e As EventArgs) Handles CancelButtonControl.Click
|
||||
DialogResult = DialogResult.Cancel
|
||||
Close()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
Text = Language.strMenuOptions
|
||||
OkButton.Text = Language.strButtonOK
|
||||
CancelButtonControl.Text = Language.strButtonCancel
|
||||
|
||||
For Each page As OptionsPage In _pages.Keys
|
||||
Try
|
||||
page.ApplyLanguage()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(String.Format("OptionsPage.ApplyLanguage() failed for page {0}.", page.PageName), ex, , True)
|
||||
End Try
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub LoadSettings()
|
||||
For Each page As OptionsPage In _pages.Keys
|
||||
Try
|
||||
page.LoadSettings()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(String.Format("OptionsPage.LoadSettings() failed for page {0}.", page.PageName), ex, , True)
|
||||
End Try
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub SaveSettings()
|
||||
For Each page As OptionsPage In _pages.Keys
|
||||
Try
|
||||
page.SaveSettings()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(String.Format("OptionsPage.SaveSettings() failed for page {0}.", page.PageName), ex, , True)
|
||||
End Try
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub RevertSettings()
|
||||
For Each page As OptionsPage In _pages.Keys
|
||||
Try
|
||||
page.RevertSettings()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddExceptionMessage(String.Format("OptionsPage.RevertSettings() failed for page {0}.", page.PageName), ex, , True)
|
||||
End Try
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Function GetPageFromType(ByVal pageType As Type) As OptionsPage
|
||||
For Each page As OptionsPage In _pages.Keys
|
||||
If page.GetType() Is pageType Then Return page
|
||||
Next
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Private Function GetPageFromListViewItem(ByVal listViewItem As ListViewItem) As OptionsPage
|
||||
For Each keyValuePair As KeyValuePair(Of OptionsPage, PageInfo) In _pages
|
||||
Dim page As OptionsPage = keyValuePair.Key
|
||||
Dim pageInfo As PageInfo = keyValuePair.Value
|
||||
If pageInfo.ListViewItem Is listViewItem Then Return page
|
||||
Next
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Private Sub ShowPage(ByVal newPage As OptionsPage)
|
||||
If _selectedPage IsNot Nothing Then
|
||||
Dim oldPage As OptionsPage = _selectedPage
|
||||
oldPage.Visible = False
|
||||
If _pages.ContainsKey(oldPage) Then
|
||||
Dim oldPageInfo As PageInfo = _pages(oldPage)
|
||||
oldPageInfo.ListViewItem.Selected = False
|
||||
End If
|
||||
End If
|
||||
|
||||
_selectedPage = newPage
|
||||
|
||||
If newPage IsNot Nothing Then
|
||||
newPage.Parent = PagePanel
|
||||
newPage.Dock = DockStyle.Fill
|
||||
newPage.Visible = True
|
||||
If _pages.ContainsKey(newPage) Then
|
||||
Dim newPageInfo As PageInfo = _pages(newPage)
|
||||
newPageInfo.ListViewItem.Selected = True
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Classes"
|
||||
Private Class PageInfo
|
||||
Public Property IconKey As String
|
||||
Public Property ListViewItem As ListViewItem
|
||||
|
||||
Public Sub New()
|
||||
IconKey = Guid.NewGuid.ToString()
|
||||
End Sub
|
||||
End Class
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
262
mRemoteV1/Forms/OptionsPages/AdvancedPage.Designer.vb
generated
Normal file
262
mRemoteV1/Forms/OptionsPages/AdvancedPage.Designer.vb
generated
Normal file
@@ -0,0 +1,262 @@
|
||||
Namespace Forms.OptionsPages
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class AdvancedPage
|
||||
Inherits OptionsPage
|
||||
|
||||
'UserControl overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(AdvancedPage))
|
||||
Me.chkWriteLogFile = New System.Windows.Forms.CheckBox()
|
||||
Me.chkAutomaticallyGetSessionInfo = New System.Windows.Forms.CheckBox()
|
||||
Me.lblXulRunnerPath = New System.Windows.Forms.Label()
|
||||
Me.lblMaximumPuttyWaitTime = New System.Windows.Forms.Label()
|
||||
Me.chkEncryptCompleteFile = New System.Windows.Forms.CheckBox()
|
||||
Me.chkAutomaticReconnect = New System.Windows.Forms.CheckBox()
|
||||
Me.btnBrowseXulRunnerPath = New System.Windows.Forms.Button()
|
||||
Me.numPuttyWaitTime = New System.Windows.Forms.NumericUpDown()
|
||||
Me.chkUseCustomPuttyPath = New System.Windows.Forms.CheckBox()
|
||||
Me.lblConfigurePuttySessions = New System.Windows.Forms.Label()
|
||||
Me.txtXULrunnerPath = New System.Windows.Forms.TextBox()
|
||||
Me.numUVNCSCPort = New System.Windows.Forms.NumericUpDown()
|
||||
Me.txtCustomPuttyPath = New System.Windows.Forms.TextBox()
|
||||
Me.btnLaunchPutty = New System.Windows.Forms.Button()
|
||||
Me.lblUVNCSCPort = New System.Windows.Forms.Label()
|
||||
Me.lblSeconds = New System.Windows.Forms.Label()
|
||||
Me.btnBrowseCustomPuttyPath = New System.Windows.Forms.Button()
|
||||
CType(Me.numPuttyWaitTime, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.numUVNCSCPort, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'chkWriteLogFile
|
||||
'
|
||||
Me.chkWriteLogFile.AutoSize = True
|
||||
Me.chkWriteLogFile.Location = New System.Drawing.Point(3, 0)
|
||||
Me.chkWriteLogFile.Name = "chkWriteLogFile"
|
||||
Me.chkWriteLogFile.Size = New System.Drawing.Size(171, 17)
|
||||
Me.chkWriteLogFile.TabIndex = 17
|
||||
Me.chkWriteLogFile.Text = "Write log file (mRemoteNG.log)"
|
||||
Me.chkWriteLogFile.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkAutomaticallyGetSessionInfo
|
||||
'
|
||||
Me.chkAutomaticallyGetSessionInfo.AutoSize = True
|
||||
Me.chkAutomaticallyGetSessionInfo.Location = New System.Drawing.Point(3, 46)
|
||||
Me.chkAutomaticallyGetSessionInfo.Name = "chkAutomaticallyGetSessionInfo"
|
||||
Me.chkAutomaticallyGetSessionInfo.Size = New System.Drawing.Size(198, 17)
|
||||
Me.chkAutomaticallyGetSessionInfo.TabIndex = 19
|
||||
Me.chkAutomaticallyGetSessionInfo.Text = "Automatically get session information"
|
||||
Me.chkAutomaticallyGetSessionInfo.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblXulRunnerPath
|
||||
'
|
||||
Me.lblXulRunnerPath.AutoSize = True
|
||||
Me.lblXulRunnerPath.Location = New System.Drawing.Point(3, 217)
|
||||
Me.lblXulRunnerPath.Name = "lblXulRunnerPath"
|
||||
Me.lblXulRunnerPath.Size = New System.Drawing.Size(85, 13)
|
||||
Me.lblXulRunnerPath.TabIndex = 29
|
||||
Me.lblXulRunnerPath.Text = "XULrunner path:"
|
||||
'
|
||||
'lblMaximumPuttyWaitTime
|
||||
'
|
||||
Me.lblMaximumPuttyWaitTime.Location = New System.Drawing.Point(3, 185)
|
||||
Me.lblMaximumPuttyWaitTime.Name = "lblMaximumPuttyWaitTime"
|
||||
Me.lblMaximumPuttyWaitTime.Size = New System.Drawing.Size(364, 13)
|
||||
Me.lblMaximumPuttyWaitTime.TabIndex = 26
|
||||
Me.lblMaximumPuttyWaitTime.Text = "Maximum PuTTY wait time:"
|
||||
Me.lblMaximumPuttyWaitTime.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'chkEncryptCompleteFile
|
||||
'
|
||||
Me.chkEncryptCompleteFile.AutoSize = True
|
||||
Me.chkEncryptCompleteFile.Location = New System.Drawing.Point(3, 23)
|
||||
Me.chkEncryptCompleteFile.Name = "chkEncryptCompleteFile"
|
||||
Me.chkEncryptCompleteFile.Size = New System.Drawing.Size(180, 17)
|
||||
Me.chkEncryptCompleteFile.TabIndex = 18
|
||||
Me.chkEncryptCompleteFile.Text = "Encrypt complete connection file"
|
||||
Me.chkEncryptCompleteFile.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkAutomaticReconnect
|
||||
'
|
||||
Me.chkAutomaticReconnect.AutoSize = True
|
||||
Me.chkAutomaticReconnect.Location = New System.Drawing.Point(3, 69)
|
||||
Me.chkAutomaticReconnect.Name = "chkAutomaticReconnect"
|
||||
Me.chkAutomaticReconnect.Size = New System.Drawing.Size(399, 17)
|
||||
Me.chkAutomaticReconnect.TabIndex = 20
|
||||
Me.chkAutomaticReconnect.Text = "Automatically try to reconnect when disconnected from server (RDP && ICA only)"
|
||||
Me.chkAutomaticReconnect.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnBrowseXulRunnerPath
|
||||
'
|
||||
Me.btnBrowseXulRunnerPath.Location = New System.Drawing.Point(373, 233)
|
||||
Me.btnBrowseXulRunnerPath.Name = "btnBrowseXulRunnerPath"
|
||||
Me.btnBrowseXulRunnerPath.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnBrowseXulRunnerPath.TabIndex = 31
|
||||
Me.btnBrowseXulRunnerPath.Text = "Browse..."
|
||||
Me.btnBrowseXulRunnerPath.UseVisualStyleBackColor = True
|
||||
'
|
||||
'numPuttyWaitTime
|
||||
'
|
||||
Me.numPuttyWaitTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.numPuttyWaitTime.Location = New System.Drawing.Point(373, 183)
|
||||
Me.numPuttyWaitTime.Maximum = New Decimal(New Integer() {999, 0, 0, 0})
|
||||
Me.numPuttyWaitTime.Name = "numPuttyWaitTime"
|
||||
Me.numPuttyWaitTime.Size = New System.Drawing.Size(49, 20)
|
||||
Me.numPuttyWaitTime.TabIndex = 27
|
||||
Me.numPuttyWaitTime.Value = New Decimal(New Integer() {5, 0, 0, 0})
|
||||
'
|
||||
'chkUseCustomPuttyPath
|
||||
'
|
||||
Me.chkUseCustomPuttyPath.AutoSize = True
|
||||
Me.chkUseCustomPuttyPath.Location = New System.Drawing.Point(3, 92)
|
||||
Me.chkUseCustomPuttyPath.Name = "chkUseCustomPuttyPath"
|
||||
Me.chkUseCustomPuttyPath.Size = New System.Drawing.Size(146, 17)
|
||||
Me.chkUseCustomPuttyPath.TabIndex = 21
|
||||
Me.chkUseCustomPuttyPath.Text = "Use custom PuTTY path:"
|
||||
Me.chkUseCustomPuttyPath.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblConfigurePuttySessions
|
||||
'
|
||||
Me.lblConfigurePuttySessions.Location = New System.Drawing.Point(3, 154)
|
||||
Me.lblConfigurePuttySessions.Name = "lblConfigurePuttySessions"
|
||||
Me.lblConfigurePuttySessions.Size = New System.Drawing.Size(364, 13)
|
||||
Me.lblConfigurePuttySessions.TabIndex = 24
|
||||
Me.lblConfigurePuttySessions.Text = "To configure PuTTY sessions click this button:"
|
||||
Me.lblConfigurePuttySessions.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'txtXULrunnerPath
|
||||
'
|
||||
Me.txtXULrunnerPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtXULrunnerPath.Location = New System.Drawing.Point(21, 235)
|
||||
Me.txtXULrunnerPath.Name = "txtXULrunnerPath"
|
||||
Me.txtXULrunnerPath.Size = New System.Drawing.Size(346, 20)
|
||||
Me.txtXULrunnerPath.TabIndex = 30
|
||||
'
|
||||
'numUVNCSCPort
|
||||
'
|
||||
Me.numUVNCSCPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.numUVNCSCPort.Location = New System.Drawing.Point(373, 276)
|
||||
Me.numUVNCSCPort.Maximum = New Decimal(New Integer() {65535, 0, 0, 0})
|
||||
Me.numUVNCSCPort.Name = "numUVNCSCPort"
|
||||
Me.numUVNCSCPort.Size = New System.Drawing.Size(72, 20)
|
||||
Me.numUVNCSCPort.TabIndex = 33
|
||||
Me.numUVNCSCPort.Value = New Decimal(New Integer() {5500, 0, 0, 0})
|
||||
Me.numUVNCSCPort.Visible = False
|
||||
'
|
||||
'txtCustomPuttyPath
|
||||
'
|
||||
Me.txtCustomPuttyPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtCustomPuttyPath.Enabled = False
|
||||
Me.txtCustomPuttyPath.Location = New System.Drawing.Point(21, 115)
|
||||
Me.txtCustomPuttyPath.Name = "txtCustomPuttyPath"
|
||||
Me.txtCustomPuttyPath.Size = New System.Drawing.Size(346, 20)
|
||||
Me.txtCustomPuttyPath.TabIndex = 22
|
||||
'
|
||||
'btnLaunchPutty
|
||||
'
|
||||
Me.btnLaunchPutty.Image = Global.mRemoteNG.My.Resources.Resources.PuttyConfig
|
||||
Me.btnLaunchPutty.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||
Me.btnLaunchPutty.Location = New System.Drawing.Point(373, 149)
|
||||
Me.btnLaunchPutty.Name = "btnLaunchPutty"
|
||||
Me.btnLaunchPutty.Size = New System.Drawing.Size(110, 23)
|
||||
Me.btnLaunchPutty.TabIndex = 25
|
||||
Me.btnLaunchPutty.Text = "Launch PuTTY"
|
||||
Me.btnLaunchPutty.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
Me.btnLaunchPutty.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblUVNCSCPort
|
||||
'
|
||||
Me.lblUVNCSCPort.Location = New System.Drawing.Point(3, 278)
|
||||
Me.lblUVNCSCPort.Name = "lblUVNCSCPort"
|
||||
Me.lblUVNCSCPort.Size = New System.Drawing.Size(364, 13)
|
||||
Me.lblUVNCSCPort.TabIndex = 32
|
||||
Me.lblUVNCSCPort.Text = "UltraVNC SingleClick Listening Port:"
|
||||
Me.lblUVNCSCPort.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
Me.lblUVNCSCPort.Visible = False
|
||||
'
|
||||
'lblSeconds
|
||||
'
|
||||
Me.lblSeconds.AutoSize = True
|
||||
Me.lblSeconds.Location = New System.Drawing.Point(428, 185)
|
||||
Me.lblSeconds.Name = "lblSeconds"
|
||||
Me.lblSeconds.Size = New System.Drawing.Size(47, 13)
|
||||
Me.lblSeconds.TabIndex = 28
|
||||
Me.lblSeconds.Text = "seconds"
|
||||
'
|
||||
'btnBrowseCustomPuttyPath
|
||||
'
|
||||
Me.btnBrowseCustomPuttyPath.Enabled = False
|
||||
Me.btnBrowseCustomPuttyPath.Location = New System.Drawing.Point(373, 113)
|
||||
Me.btnBrowseCustomPuttyPath.Name = "btnBrowseCustomPuttyPath"
|
||||
Me.btnBrowseCustomPuttyPath.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnBrowseCustomPuttyPath.TabIndex = 23
|
||||
Me.btnBrowseCustomPuttyPath.Text = "Browse..."
|
||||
Me.btnBrowseCustomPuttyPath.UseVisualStyleBackColor = True
|
||||
'
|
||||
'AdvancedPage
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(Me.chkWriteLogFile)
|
||||
Me.Controls.Add(Me.chkAutomaticallyGetSessionInfo)
|
||||
Me.Controls.Add(Me.lblXulRunnerPath)
|
||||
Me.Controls.Add(Me.lblMaximumPuttyWaitTime)
|
||||
Me.Controls.Add(Me.chkEncryptCompleteFile)
|
||||
Me.Controls.Add(Me.chkAutomaticReconnect)
|
||||
Me.Controls.Add(Me.btnBrowseXulRunnerPath)
|
||||
Me.Controls.Add(Me.numPuttyWaitTime)
|
||||
Me.Controls.Add(Me.chkUseCustomPuttyPath)
|
||||
Me.Controls.Add(Me.lblConfigurePuttySessions)
|
||||
Me.Controls.Add(Me.txtXULrunnerPath)
|
||||
Me.Controls.Add(Me.numUVNCSCPort)
|
||||
Me.Controls.Add(Me.txtCustomPuttyPath)
|
||||
Me.Controls.Add(Me.btnLaunchPutty)
|
||||
Me.Controls.Add(Me.lblUVNCSCPort)
|
||||
Me.Controls.Add(Me.lblSeconds)
|
||||
Me.Controls.Add(Me.btnBrowseCustomPuttyPath)
|
||||
Me.Name = "AdvancedPage"
|
||||
Me.PageIcon = CType(resources.GetObject("$this.PageIcon"), System.Drawing.Icon)
|
||||
Me.Size = New System.Drawing.Size(610, 489)
|
||||
CType(Me.numPuttyWaitTime, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.numUVNCSCPort, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents chkWriteLogFile As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkAutomaticallyGetSessionInfo As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents lblXulRunnerPath As System.Windows.Forms.Label
|
||||
Friend WithEvents lblMaximumPuttyWaitTime As System.Windows.Forms.Label
|
||||
Friend WithEvents chkEncryptCompleteFile As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkAutomaticReconnect As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents btnBrowseXulRunnerPath As System.Windows.Forms.Button
|
||||
Friend WithEvents numPuttyWaitTime As System.Windows.Forms.NumericUpDown
|
||||
Friend WithEvents chkUseCustomPuttyPath As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents lblConfigurePuttySessions As System.Windows.Forms.Label
|
||||
Friend WithEvents txtXULrunnerPath As System.Windows.Forms.TextBox
|
||||
Friend WithEvents numUVNCSCPort As System.Windows.Forms.NumericUpDown
|
||||
Friend WithEvents txtCustomPuttyPath As System.Windows.Forms.TextBox
|
||||
Friend WithEvents btnLaunchPutty As System.Windows.Forms.Button
|
||||
Friend WithEvents lblUVNCSCPort As System.Windows.Forms.Label
|
||||
Friend WithEvents lblSeconds As System.Windows.Forms.Label
|
||||
Friend WithEvents btnBrowseCustomPuttyPath As System.Windows.Forms.Button
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
@@ -117,4 +117,29 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsbGxjWFhYv1FRUb9SUlJjAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAb29vKW1tbQ5/f38CgICA6r29vf+ysrL/W1tb6n9/fwJbW1sOUFBQKQAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAgICAm25ubv1kZGTnenp6GYODg+fLy8v/x8fH/2JiYudbW1sZWFhY501N
|
||||
Tf1ISEibAAAAAAAAAAAAAAAAo6Oje7y8vP/e3t7/pqam/4KCgvSEhIT+xMTE/8LCwv9tbW3+bW1t9Kam
|
||||
pv/S0tL/gICA/1JSUnsAAAAAAAAAAKurq32lpaX+1dXV/8XFxf/Ly8v/0dHR/8nJyf/Hx8f/zMzM/8XF
|
||||
xf+9vb3/y8vL/25ubv5lZWV9AAAAAAAAAAAAAAAArKyshcXFxf/BwcH/xcXF/8fHx/+qqqr/p6en/8HB
|
||||
wf++vr7/tbW1/6qqqv9paWmFAAAAAAAAAACioqLNjo6O45+fn+7Pz8//xsbG/8zMzP+enp7GmZmZRJKS
|
||||
kkSOjo7GwcHB/7y8vP+5ubn/Y2Nj7ldXV+NTU1PNv7+//eLi4v/S0tL/xsbG/83Nzf+xsbH/kpKSRAAA
|
||||
AAAAAAAAlpaWRKioqP/CwsL/t7e3/8DAwP/S0tL/YGBg/cPDw/3p6en/1tbW/8nJyf/Ozs7/paWl/4OD
|
||||
g0QAAAAAAAAAAJmZmUSsrKz/xMTE/7q6uv/Gxsb/3d3d/2pqav3IyMjNw8PD47+/v+7Y2Nj/zc3N/7y8
|
||||
vP+CgoLGeHh4RH9/f0SOjo7Gw8PD/8LCwv/Nzc3/jIyM7oaGhuOCgoLNAAAAAAAAAADFxcWF1NTU/8zM
|
||||
zP/Jycn/urq6/5ycnP+hoaH/wsLC/8bGxv/BwcH/t7e3/4iIiIUAAAAAAAAAAAAAAADJycl9w8PD/tzc
|
||||
3P/U1NT/2dnZ/9vb2//W1tb/1NTU/9nZ2f/S0tL/y8vL/8jIyP95eXn+cHBwfQAAAAAAAAAAz8/Pe9zc
|
||||
3P/t7e3/29vb/8LCwvS9vb3+1tbW/9TU1P+vr6/+rKys9MvLy//n5+f/t7e3/4qKinsAAAAAAAAAAAAA
|
||||
AADQ0NCbzc3N/crKyufBwcEZwsLC597e3v/d3d3/sbGx562trRmsrKznp6en/aKiopsAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAANPT0ynIyMgO////AsfHx+rl5eX/5OTk/6ysrOp/f38Ctra2Dq6urikAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLy8tjxsbGv8TExL++vr5jAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA/n8AAPw/AADEIwAAwAMAAMADAADAAwAAAYAAAAPAAAADwAAAAYAAAMADAADAAwAAwAMAAMQj
|
||||
AAD8PwAA/n8AAA==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
171
mRemoteV1/Forms/OptionsPages/AdvancedPage.vb
Normal file
171
mRemoteV1/Forms/OptionsPages/AdvancedPage.vb
Normal file
@@ -0,0 +1,171 @@
|
||||
Imports System.IO
|
||||
Imports mRemoteNG.App.Info
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.Connection.Protocol
|
||||
Imports mRemoteNG.Tools
|
||||
Imports PSTaskDialog
|
||||
|
||||
Namespace Forms.OptionsPages
|
||||
Public Class AdvancedPage
|
||||
#Region "Public Methods"
|
||||
Public Overrides Property PageName() As String
|
||||
Get
|
||||
Return Language.strTabAdvanced
|
||||
End Get
|
||||
Set(value As String)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Overrides Sub ApplyLanguage()
|
||||
MyBase.ApplyLanguage()
|
||||
|
||||
lblSeconds.Text = Language.strLabelSeconds
|
||||
lblMaximumPuttyWaitTime.Text = Language.strLabelPuttyTimeout
|
||||
chkAutomaticReconnect.Text = Language.strCheckboxAutomaticReconnect
|
||||
lblConfigurePuttySessions.Text = Language.strLabelPuttySessionsConfig
|
||||
btnLaunchPutty.Text = Language.strButtonLaunchPutty
|
||||
btnBrowseCustomPuttyPath.Text = Language.strButtonBrowse
|
||||
chkUseCustomPuttyPath.Text = Language.strCheckboxPuttyPath
|
||||
chkAutomaticallyGetSessionInfo.Text = Language.strAutomaticallyGetSessionInfo
|
||||
chkWriteLogFile.Text = Language.strWriteLogFile
|
||||
lblUVNCSCPort.Text = Language.strUltraVNCSCListeningPort
|
||||
lblXulRunnerPath.Text = Language.strXULrunnerPath
|
||||
btnBrowseXulRunnerPath.Text = Language.strButtonBrowse
|
||||
chkEncryptCompleteFile.Text = Language.strEncryptCompleteConnectionFile
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub LoadSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
chkWriteLogFile.Checked = My.Settings.WriteLogFile
|
||||
chkEncryptCompleteFile.Checked = My.Settings.EncryptCompleteConnectionsFile
|
||||
chkAutomaticallyGetSessionInfo.Checked = My.Settings.AutomaticallyGetSessionInfo
|
||||
chkAutomaticReconnect.Checked = My.Settings.ReconnectOnDisconnect
|
||||
numPuttyWaitTime.Value = My.Settings.MaxPuttyWaitTime
|
||||
|
||||
chkUseCustomPuttyPath.Checked = MySettingsProperty.Settings.UseCustomPuttyPath
|
||||
txtCustomPuttyPath.Text = MySettingsProperty.Settings.CustomPuttyPath
|
||||
SetPuttyLaunchButtonEnabled()
|
||||
|
||||
numUVNCSCPort.Value = My.Settings.UVNCSCPort
|
||||
|
||||
txtXULrunnerPath.Text = My.Settings.XULRunnerPath
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub SaveSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
My.Settings.WriteLogFile = chkWriteLogFile.Checked
|
||||
My.Settings.EncryptCompleteConnectionsFile = chkEncryptCompleteFile.Checked
|
||||
My.Settings.AutomaticallyGetSessionInfo = chkAutomaticallyGetSessionInfo.Checked
|
||||
My.Settings.ReconnectOnDisconnect = chkAutomaticReconnect.Checked
|
||||
|
||||
Dim puttyPathChanged As Boolean = False
|
||||
If Not MySettingsProperty.Settings.CustomPuttyPath = txtCustomPuttyPath.Text Then
|
||||
puttyPathChanged = True
|
||||
MySettingsProperty.Settings.CustomPuttyPath = txtCustomPuttyPath.Text
|
||||
End If
|
||||
If Not MySettingsProperty.Settings.UseCustomPuttyPath = chkUseCustomPuttyPath.Checked Then
|
||||
puttyPathChanged = True
|
||||
MySettingsProperty.Settings.UseCustomPuttyPath = chkUseCustomPuttyPath.Checked
|
||||
End If
|
||||
If puttyPathChanged Then
|
||||
If MySettingsProperty.Settings.UseCustomPuttyPath Then
|
||||
PuttyBase.PuttyPath = MySettingsProperty.Settings.CustomPuttyPath
|
||||
Else
|
||||
PuttyBase.PuttyPath = General.PuttyPath
|
||||
End If
|
||||
Config.Putty.Sessions.AddSessionsToTree()
|
||||
End If
|
||||
|
||||
My.Settings.MaxPuttyWaitTime = numPuttyWaitTime.Value
|
||||
|
||||
My.Settings.UVNCSCPort = numUVNCSCPort.Value
|
||||
|
||||
My.Settings.XULRunnerPath = txtXULrunnerPath.Text
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
#Region "Event Handlers"
|
||||
Private Sub chkUseCustomPuttyPath_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkUseCustomPuttyPath.CheckedChanged
|
||||
txtCustomPuttyPath.Enabled = chkUseCustomPuttyPath.Checked
|
||||
btnBrowseCustomPuttyPath.Enabled = chkUseCustomPuttyPath.Checked
|
||||
SetPuttyLaunchButtonEnabled()
|
||||
End Sub
|
||||
|
||||
Private Sub txtCustomPuttyPath_TextChanged(sender As Object, e As EventArgs) Handles txtCustomPuttyPath.TextChanged
|
||||
SetPuttyLaunchButtonEnabled()
|
||||
End Sub
|
||||
|
||||
Private Sub btnBrowseCustomPuttyPath_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnBrowseCustomPuttyPath.Click
|
||||
Using openFileDialog As New OpenFileDialog()
|
||||
With openFileDialog
|
||||
.Filter = String.Format("{0}|*.exe|{1}|*.*", Language.strFilterApplication, Language.strFilterAll)
|
||||
.FileName = Path.GetFileName(General.PuttyPath)
|
||||
.CheckFileExists = True
|
||||
.Multiselect = False
|
||||
|
||||
If .ShowDialog = DialogResult.OK Then
|
||||
txtCustomPuttyPath.Text = .FileName
|
||||
SetPuttyLaunchButtonEnabled()
|
||||
End If
|
||||
End With
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
Private Sub btnLaunchPutty_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnLaunchPutty.Click
|
||||
Try
|
||||
Dim puttyProcess As New PuttyProcessController
|
||||
Dim fileName As String
|
||||
If chkUseCustomPuttyPath.Checked Then
|
||||
fileName = txtCustomPuttyPath.Text
|
||||
Else
|
||||
fileName = General.PuttyPath
|
||||
End If
|
||||
puttyProcess.Start(fileName)
|
||||
puttyProcess.SetControlText("Button", "&Cancel", "&Close")
|
||||
puttyProcess.SetControlVisible("Button", "&Open", False)
|
||||
puttyProcess.WaitForExit()
|
||||
Catch ex As Exception
|
||||
cTaskDialog.MessageBox(Application.Info.ProductName, Language.strErrorCouldNotLaunchPutty, "", ex.Message, "", "", eTaskDialogButtons.OK, eSysIcons.Error, Nothing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub btnBrowseXulRunnerPath_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnBrowseXulRunnerPath.Click
|
||||
Dim oDlg As New FolderBrowserDialog
|
||||
oDlg.ShowNewFolderButton = False
|
||||
|
||||
If oDlg.ShowDialog = DialogResult.OK Then
|
||||
txtXULrunnerPath.Text = oDlg.SelectedPath
|
||||
End If
|
||||
|
||||
oDlg.Dispose()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
Private Sub SetPuttyLaunchButtonEnabled()
|
||||
Dim puttyPath As String
|
||||
If chkUseCustomPuttyPath.Checked Then
|
||||
puttyPath = txtCustomPuttyPath.Text
|
||||
Else
|
||||
puttyPath = General.PuttyPath
|
||||
End If
|
||||
|
||||
Dim exists As Boolean = False
|
||||
Try
|
||||
exists = File.Exists(puttyPath)
|
||||
Catch
|
||||
End Try
|
||||
|
||||
If exists Then
|
||||
lblConfigurePuttySessions.Enabled = True
|
||||
btnLaunchPutty.Enabled = True
|
||||
Else
|
||||
lblConfigurePuttySessions.Enabled = False
|
||||
btnLaunchPutty.Enabled = False
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
130
mRemoteV1/Forms/OptionsPages/AppearancePage.Designer.vb
generated
Normal file
130
mRemoteV1/Forms/OptionsPages/AppearancePage.Designer.vb
generated
Normal file
@@ -0,0 +1,130 @@
|
||||
Namespace Forms.OptionsPages
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class AppearancePage
|
||||
Inherits OptionsPage
|
||||
|
||||
'UserControl overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(AppearancePage))
|
||||
Me.lblLanguageRestartRequired = New System.Windows.Forms.Label()
|
||||
Me.cboLanguage = New System.Windows.Forms.ComboBox()
|
||||
Me.lblLanguage = New System.Windows.Forms.Label()
|
||||
Me.chkShowFullConnectionsFilePathInTitle = New System.Windows.Forms.CheckBox()
|
||||
Me.chkShowDescriptionTooltipsInTree = New System.Windows.Forms.CheckBox()
|
||||
Me.chkShowSystemTrayIcon = New System.Windows.Forms.CheckBox()
|
||||
Me.chkMinimizeToSystemTray = New System.Windows.Forms.CheckBox()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'lblLanguageRestartRequired
|
||||
'
|
||||
Me.lblLanguageRestartRequired.AutoSize = True
|
||||
Me.lblLanguageRestartRequired.Location = New System.Drawing.Point(3, 56)
|
||||
Me.lblLanguageRestartRequired.Name = "lblLanguageRestartRequired"
|
||||
Me.lblLanguageRestartRequired.Size = New System.Drawing.Size(380, 13)
|
||||
Me.lblLanguageRestartRequired.TabIndex = 9
|
||||
Me.lblLanguageRestartRequired.Text = "mRemoteNG must be restarted before changes to the language will take effect."
|
||||
'
|
||||
'cboLanguage
|
||||
'
|
||||
Me.cboLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.cboLanguage.FormattingEnabled = True
|
||||
Me.cboLanguage.Location = New System.Drawing.Point(3, 24)
|
||||
Me.cboLanguage.Name = "cboLanguage"
|
||||
Me.cboLanguage.Size = New System.Drawing.Size(304, 21)
|
||||
Me.cboLanguage.Sorted = True
|
||||
Me.cboLanguage.TabIndex = 8
|
||||
'
|
||||
'lblLanguage
|
||||
'
|
||||
Me.lblLanguage.AutoSize = True
|
||||
Me.lblLanguage.Location = New System.Drawing.Point(3, 0)
|
||||
Me.lblLanguage.Name = "lblLanguage"
|
||||
Me.lblLanguage.Size = New System.Drawing.Size(55, 13)
|
||||
Me.lblLanguage.TabIndex = 7
|
||||
Me.lblLanguage.Text = "Language"
|
||||
'
|
||||
'chkShowFullConnectionsFilePathInTitle
|
||||
'
|
||||
Me.chkShowFullConnectionsFilePathInTitle.AutoSize = True
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Location = New System.Drawing.Point(3, 141)
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Name = "chkShowFullConnectionsFilePathInTitle"
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Size = New System.Drawing.Size(239, 17)
|
||||
Me.chkShowFullConnectionsFilePathInTitle.TabIndex = 11
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Text = "Show full connections file path in window title"
|
||||
Me.chkShowFullConnectionsFilePathInTitle.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkShowDescriptionTooltipsInTree
|
||||
'
|
||||
Me.chkShowDescriptionTooltipsInTree.AutoSize = True
|
||||
Me.chkShowDescriptionTooltipsInTree.Location = New System.Drawing.Point(3, 118)
|
||||
Me.chkShowDescriptionTooltipsInTree.Name = "chkShowDescriptionTooltipsInTree"
|
||||
Me.chkShowDescriptionTooltipsInTree.Size = New System.Drawing.Size(231, 17)
|
||||
Me.chkShowDescriptionTooltipsInTree.TabIndex = 10
|
||||
Me.chkShowDescriptionTooltipsInTree.Text = "Show description tooltips in connection tree"
|
||||
Me.chkShowDescriptionTooltipsInTree.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkShowSystemTrayIcon
|
||||
'
|
||||
Me.chkShowSystemTrayIcon.AutoSize = True
|
||||
Me.chkShowSystemTrayIcon.Location = New System.Drawing.Point(3, 187)
|
||||
Me.chkShowSystemTrayIcon.Name = "chkShowSystemTrayIcon"
|
||||
Me.chkShowSystemTrayIcon.Size = New System.Drawing.Size(172, 17)
|
||||
Me.chkShowSystemTrayIcon.TabIndex = 12
|
||||
Me.chkShowSystemTrayIcon.Text = "Always show System Tray Icon"
|
||||
Me.chkShowSystemTrayIcon.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkMinimizeToSystemTray
|
||||
'
|
||||
Me.chkMinimizeToSystemTray.AutoSize = True
|
||||
Me.chkMinimizeToSystemTray.Location = New System.Drawing.Point(3, 210)
|
||||
Me.chkMinimizeToSystemTray.Name = "chkMinimizeToSystemTray"
|
||||
Me.chkMinimizeToSystemTray.Size = New System.Drawing.Size(139, 17)
|
||||
Me.chkMinimizeToSystemTray.TabIndex = 13
|
||||
Me.chkMinimizeToSystemTray.Text = "Minimize to System Tray"
|
||||
Me.chkMinimizeToSystemTray.UseVisualStyleBackColor = True
|
||||
'
|
||||
'AppearancePage
|
||||
'
|
||||
Me.Controls.Add(Me.lblLanguageRestartRequired)
|
||||
Me.Controls.Add(Me.cboLanguage)
|
||||
Me.Controls.Add(Me.lblLanguage)
|
||||
Me.Controls.Add(Me.chkShowFullConnectionsFilePathInTitle)
|
||||
Me.Controls.Add(Me.chkShowDescriptionTooltipsInTree)
|
||||
Me.Controls.Add(Me.chkShowSystemTrayIcon)
|
||||
Me.Controls.Add(Me.chkMinimizeToSystemTray)
|
||||
Me.Name = "AppearancePage"
|
||||
Me.PageIcon = CType(resources.GetObject("$this.PageIcon"), System.Drawing.Icon)
|
||||
Me.Size = New System.Drawing.Size(610, 489)
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents Label1 As System.Windows.Forms.Label
|
||||
Friend WithEvents lblLanguageRestartRequired As System.Windows.Forms.Label
|
||||
Friend WithEvents cboLanguage As System.Windows.Forms.ComboBox
|
||||
Friend WithEvents lblLanguage As System.Windows.Forms.Label
|
||||
Friend WithEvents chkShowFullConnectionsFilePathInTitle As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkShowDescriptionTooltipsInTree As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkShowSystemTrayIcon As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkMinimizeToSystemTray As System.Windows.Forms.CheckBox
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
188
mRemoteV1/Forms/OptionsPages/AppearancePage.resx
Normal file
188
mRemoteV1/Forms/OptionsPages/AppearancePage.resx
Normal file
@@ -0,0 +1,188 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAQAEBAQAAEABAAoAQAARgAAABAQAAABAAgAaAUAAG4BAAAQEAAAAQAYAGgDAADWBgAAEBAAAAEA
|
||||
IABoBAAAPgoAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr2guAK90
|
||||
TwA+kkMASp9QAHDJegC+gVkAuY51AMiKWgDLlGcA1KR7ANSpiQDhvJ0A7MKaAP369wD///8AAAAAAAAA
|
||||
AAAMpiIiIiIicAn///////8gBvER9ERDPyAG8aH0VVU/IAjxofRVVT8gCPGh9FVVPyAI8qH0VVVPIAj2
|
||||
IvRERE9gCP///////2AJ/d3d3d3fYAn93d3d3d9gCv3d3d3d35AM////////sADKmZiZmbuwAAAAAAAA
|
||||
AAD//wAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAMAB
|
||||
AAD//wAAKAAAABAAAAAgAAAAAQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsYyoArmYrALFr
|
||||
LQCzbTIAtXI3ALZ1PwCmbUwAp3BOAKpwTgCscU4AsHNPALl7SQC5fEsAqHVVAKt3WACydVAAtXZRALh5
|
||||
UgC7flMAu31UAD2SQgA/k0QAQJRFAEOXSABDmEgARZpLAEabTABJnk8AS6BRAEyhUgBOo1QAT6RVAFCl
|
||||
VgBRp1gAVapcAG3HdwBuyHkAcMl7AHLKfAC9gFYAv4JdALmOdQDAglcAw4VZAMWGWQDJiloAy41cAMyP
|
||||
XgDNkV4Axo5kAMePagDLkGAAzZFgAM+WZwDOlGgAzZ5zAM2fdADVonYA0KR9ANenfgDPoYQA0aWCANSn
|
||||
ggDWqokA2K2KANm1nwDhvJ0A7cOaAOPBpAD02sAA////ABH/WwAx/3EAUf+HAHH/nQCR/7IAsf/JANH/
|
||||
3wD///8AAAAAAAIvAAAEUAAABnAAAAiQAAAKsAAAC88AAA7wAAAg/xIAPf8xAFv/UQB5/3EAmP+RALX/
|
||||
sQDU/9EA////AAAAAAAULwAAIlAAADBwAAA9kAAATLAAAFnPAABn8AAAeP8RAIr/MQCc/1EArv9xAMD/
|
||||
kQDS/7EA5P/RAP///wAAAAAAJi8AAEBQAABacAAAdJAAAI6wAACpzwAAwvAAANH/EQDY/zEA3v9RAOP/
|
||||
cQDp/5EA7/+xAPb/0QD///8AAAAAAC8mAABQQQAAcFsAAJB0AACwjgAAz6kAAPDDAAD/0hEA/9gxAP/d
|
||||
UQD/5HEA/+qRAP/wsQD/9tEA////AAAAAAAvFAAAUCIAAHAwAACQPgAAsE0AAM9bAADwaQAA/3kRAP+K
|
||||
MQD/nVEA/69xAP/BkQD/0rEA/+XRAP///wAAAAAALwMAAFAEAABwBgAAkAkAALAKAADPDAAA8A4AAP8g
|
||||
EgD/PjEA/1xRAP96cQD/l5EA/7axAP/U0QD///8AAAAAAC8ADgBQABcAcAAhAJAAKwCwADYAzwBAAPAA
|
||||
SQD/EVoA/zFwAP9RhgD/cZwA/5GyAP+xyAD/0d8A////AAAAAAAvACAAUAA2AHAATACQAGIAsAB4AM8A
|
||||
jgDwAKQA/xGzAP8xvgD/UccA/3HRAP+R3AD/seUA/9HwAP///wAAAAAALAAvAEsAUABpAHAAhwCQAKUA
|
||||
sADEAM8A4QDwAPAR/wDyMf8A9FH/APZx/wD3kf8A+bH/APvR/wD///8AAAAAABsALwAtAFAAPwBwAFIA
|
||||
kABjALAAdgDPAIgA8ACZEf8ApjH/ALRR/wDCcf8Az5H/ANyx/wDr0f8A////AAAAAAAIAC8ADgBQABUA
|
||||
cAAbAJAAIQCwACYAzwAsAPAAPhH/AFgx/wBxUf8AjHH/AKaR/wC/sf8A2tH/AP///wAAAAAAAAAAAAAA
|
||||
AAAAAAAAAEI9KRIREAsKCQcHBw4qAAAzR0dHR0dHR0dHR0dHDwAAK0cCAQFHIyEdGxgWRwcAACxHAjgB
|
||||
RxwmJiUkFUcIAAAsRwI5AUceJycmJRdHCgAALUcEOwNHICcnJiYZRxAAAC5HBj4FRyInJyYmG0cRAAAu
|
||||
RxMNDEcaIiEfHhxHEgAAL0dHR0dHR0dHR0dHRxQAADVHREREREREREREREcoAAA2R0RGRkZGRkZGRkRH
|
||||
KwAAOkdERERERERERERERzIAAENHR0dHR0dHR0dHR0dAAAAARTwxMTEwNTU0Nz9BQAAAAAAAAAAAAAAA
|
||||
AAAAAAAA//8AAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
|
||||
AADAAQAA//8AACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADZtZ/PoYS/gl25eFK1dlCzdVCw
|
||||
c0+scU6pcE6nbk2mbUylbUyodVW5jnUAAAAAAADHj2r/////////////////////////////////////
|
||||
//////////+rd1gAAAAAAADBgVf///+uZiusYyqsYyr///9VqlxQpVZLoFFGm0tDl0g/k0T///+mbk0A
|
||||
AAAAAADDhVn///+uZivNnnOsYyr///9Knk9vyXpvyXpuyHltx3c9kkL///+ncE4AAAAAAADEhVr///+u
|
||||
ZivNn3SsYyr///9NolNyynxxynxwyXtuyHlAlEX///+rcU8AAAAAAADHh1n///+zbTLQpH2xay3///9P
|
||||
pFVzy31yy3xxyntvyXpDmEj///+xdVAAAAAAAADIiVr///+2dT/RpYK1cjf///9Rp1hyy3xyy3xxyntv
|
||||
yXpGm0z///+1d1IAAAAAAADKi1v///+7flO5fEu5e0n///9FmktSp1hQpVZOo1RMoVJJnk////+4e1MA
|
||||
AAAAAADLjVz///////////////////////////////////////////////+7fVQAAAAAAADNkWD////t
|
||||
w5rtw5rtw5rtw5rtw5rtw5rtw5rtw5rtw5rtw5r///+9gFYAAAAAAADPlmf////tw5v02sD02sD028H0
|
||||
28H028H028H028H028Htw5r////Ag1cAAAAAAADVonb////tw5vtw5vtw5vtw5rtw5rtw5rtw5rtw5rt
|
||||
w5rtw5r////GjmQAAAAAAADhvJ3////////////////////////////////////////////////WqYgA
|
||||
AAAAAAAAAADjwaTXp37Okl7Nkl7NkV7Mj17NkWDNkmLLkGDOlGjUp4LYrYrXq4oAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//5xBgAGcQYABnEGAAZxBgAGcQYAB
|
||||
nEGAAZxBgAGcQYABnEGAAZxBgAGcQYABnEGAAZxBgAGcQcABnEH//5xBKAAAABAAAAAgAAAAAQAgAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvXxUj7x7U7W7elLuuXhS/7V2UP+zdVD/sHNP/6xx
|
||||
Tv+pcE7/p25N/6ZtTP+lbUz+o21M8aVtTMQAAAAAAAAAAL9/VN7/////////////////////////////
|
||||
//////////////////////////////////+lbUztAAAAAAAAAADBgVf+/////65mK/+sYyr/rGMq////
|
||||
//9Vqlz/UKVW/0ugUf9Gm0v/Q5dI/z+TRP//////pm5N/gAAAAAAAAAAw4VZ//////+uZiv/zZ5z/6xj
|
||||
Kv//////Sp5P/2/Jev9vyXr/bsh5/23Hd/89kkL//////6dwTv8AAAAAAAAAAMSFWv//////rmYr/82f
|
||||
dP+sYyr//////02iU/9yynz/ccp8/3DJe/9uyHn/QJRF//////+rcU//AAAAAAAAAADHh1n//////7Nt
|
||||
Mv/QpH3/sWst//////9PpFX/c8t9/3LLfP9xynv/b8l6/0OYSP//////sXVQ/wAAAAAAAAAAyIla////
|
||||
//+2dT//0aWC/7VyN///////UadY/3LLfP9yy3z/ccp7/2/Jev9Gm0z//////7V3Uv8AAAAAAAAAAMqL
|
||||
W///////u35T/7l8S/+5e0n//////0WaS/9Sp1j/UKVW/06jVP9MoVL/SZ5P//////+4e1P/AAAAAAAA
|
||||
AADLjVz+////////////////////////////////////////////////////////////////u31U/wAA
|
||||
AAAAAAAAzI9d+v/////tw5r/7cOa/+3Dmv/tw5r/7cOa/+3Dmv/tw5r/7cOa/+3Dmv/tw5r//////72A
|
||||
Vv8AAAAAAAAAAM2QXvD/////7cOb//TawP/02sD/9NvB//Tbwf/028H/9NvB//Tbwf/028H/7cOa////
|
||||
///Ag1f+AAAAAAAAAADOkl7Y/////+3Dm//tw5v/7cOb/+3Dmv/tw5r/7cOa/+3Dmv/tw5r/7cOa/+3D
|
||||
mv//////xYtg+AAAAAAAAAAAzpJem///////////////////////////////////////////////////
|
||||
/////////////9apiP8AAAAAAAAAAM6SXnHOkl6QzpJezM6SXv/Nkl7+zZFe/8yPXv/NkWD/zZJi/8uQ
|
||||
YP/LjV7vypFjy9itiv/Xq4r/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//5xBgAGcQYABnEGAAZxBgAGcQYABnEGAAZxBgAGcQYAB
|
||||
nEGAAZxBgAGcQYABnEGAAZxBgAGcQYABnEH//5xB
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
75
mRemoteV1/Forms/OptionsPages/AppearancePage.vb
Normal file
75
mRemoteV1/Forms/OptionsPages/AppearancePage.vb
Normal file
@@ -0,0 +1,75 @@
|
||||
Imports mRemoteNG.App
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Forms.OptionsPages
|
||||
Public Class AppearancePage
|
||||
Public Overrides Property PageName() As String
|
||||
Get
|
||||
Return Language.strTabAppearance
|
||||
End Get
|
||||
Set(value As String)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Overrides Sub ApplyLanguage()
|
||||
MyBase.ApplyLanguage()
|
||||
|
||||
lblLanguage.Text = Language.strLanguage
|
||||
lblLanguageRestartRequired.Text = String.Format(Language.strLanguageRestartRequired, Application.Info.ProductName)
|
||||
chkShowDescriptionTooltipsInTree.Text = Language.strShowDescriptionTooltips
|
||||
chkShowFullConnectionsFilePathInTitle.Text = Language.strShowFullConsFilePath
|
||||
chkShowSystemTrayIcon.Text = Language.strAlwaysShowSysTrayIcon
|
||||
chkMinimizeToSystemTray.Text = Language.strMinimizeToSysTray
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub LoadSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
cboLanguage.Items.Clear()
|
||||
cboLanguage.Items.Add(Language.strLanguageDefault)
|
||||
|
||||
For Each nativeName As String In SupportedCultures.CultureNativeNames
|
||||
cboLanguage.Items.Add(nativeName)
|
||||
Next
|
||||
If Not String.IsNullOrEmpty(Settings.OverrideUICulture) AndAlso SupportedCultures.IsNameSupported(Settings.OverrideUICulture) Then
|
||||
cboLanguage.SelectedItem = SupportedCultures.CultureNativeName(Settings.OverrideUICulture)
|
||||
End If
|
||||
If cboLanguage.SelectedIndex = -1 Then
|
||||
cboLanguage.SelectedIndex = 0
|
||||
End If
|
||||
|
||||
chkShowDescriptionTooltipsInTree.Checked = Settings.ShowDescriptionTooltipsInTree
|
||||
chkShowFullConnectionsFilePathInTitle.Checked = Settings.ShowCompleteConsPathInTitle
|
||||
chkShowSystemTrayIcon.Checked = Settings.ShowSystemTrayIcon
|
||||
chkMinimizeToSystemTray.Checked = Settings.MinimizeToTray
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub SaveSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
If cboLanguage.SelectedIndex > 0 And SupportedCultures.IsNativeNameSupported(cboLanguage.SelectedItem) Then
|
||||
Settings.OverrideUICulture = SupportedCultures.CultureName(cboLanguage.SelectedItem)
|
||||
Else
|
||||
Settings.OverrideUICulture = String.Empty
|
||||
End If
|
||||
|
||||
Settings.ShowDescriptionTooltipsInTree = chkShowDescriptionTooltipsInTree.Checked
|
||||
Settings.ShowCompleteConsPathInTitle = chkShowFullConnectionsFilePathInTitle.Checked
|
||||
frmMain.ShowFullPathInTitle = chkShowFullConnectionsFilePathInTitle.Checked
|
||||
|
||||
Settings.ShowSystemTrayIcon = chkShowSystemTrayIcon.Checked
|
||||
If Settings.ShowSystemTrayIcon Then
|
||||
If Runtime.NotificationAreaIcon Is Nothing Then
|
||||
Runtime.NotificationAreaIcon = New Tools.Controls.NotificationAreaIcon
|
||||
End If
|
||||
Else
|
||||
If Runtime.NotificationAreaIcon IsNot Nothing Then
|
||||
Runtime.NotificationAreaIcon.Dispose()
|
||||
Runtime.NotificationAreaIcon = Nothing
|
||||
End If
|
||||
End If
|
||||
|
||||
Settings.MinimizeToTray = chkMinimizeToSystemTray.Checked
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
394
mRemoteV1/Forms/OptionsPages/ConnectionsPage.Designer.vb
generated
Normal file
394
mRemoteV1/Forms/OptionsPages/ConnectionsPage.Designer.vb
generated
Normal file
@@ -0,0 +1,394 @@
|
||||
Namespace Forms.OptionsPages
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class ConnectionsPage
|
||||
Inherits OptionsPage
|
||||
|
||||
'UserControl overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ConnectionsPage))
|
||||
Me.pnlRdpReconnectionCount = New System.Windows.Forms.Panel()
|
||||
Me.lblRdpReconnectionCount = New System.Windows.Forms.Label()
|
||||
Me.numRdpReconnectionCount = New System.Windows.Forms.NumericUpDown()
|
||||
Me.chkSingleClickOnConnectionOpensIt = New System.Windows.Forms.CheckBox()
|
||||
Me.chkHostnameLikeDisplayName = New System.Windows.Forms.CheckBox()
|
||||
Me.pnlDefaultCredentials = New System.Windows.Forms.Panel()
|
||||
Me.radCredentialsCustom = New System.Windows.Forms.RadioButton()
|
||||
Me.lblDefaultCredentials = New System.Windows.Forms.Label()
|
||||
Me.radCredentialsNoInfo = New System.Windows.Forms.RadioButton()
|
||||
Me.radCredentialsWindows = New System.Windows.Forms.RadioButton()
|
||||
Me.txtCredentialsDomain = New System.Windows.Forms.TextBox()
|
||||
Me.lblCredentialsUsername = New System.Windows.Forms.Label()
|
||||
Me.txtCredentialsPassword = New System.Windows.Forms.TextBox()
|
||||
Me.lblCredentialsPassword = New System.Windows.Forms.Label()
|
||||
Me.txtCredentialsUsername = New System.Windows.Forms.TextBox()
|
||||
Me.lblCredentialsDomain = New System.Windows.Forms.Label()
|
||||
Me.chkSingleClickOnOpenedConnectionSwitchesToIt = New System.Windows.Forms.CheckBox()
|
||||
Me.pnlAutoSave = New System.Windows.Forms.Panel()
|
||||
Me.lblAutoSave1 = New System.Windows.Forms.Label()
|
||||
Me.numAutoSave = New System.Windows.Forms.NumericUpDown()
|
||||
Me.lblAutoSave2 = New System.Windows.Forms.Label()
|
||||
Me.pnlConfirmCloseConnection = New System.Windows.Forms.Panel()
|
||||
Me.lblClosingConnections = New System.Windows.Forms.Label()
|
||||
Me.radCloseWarnAll = New System.Windows.Forms.RadioButton()
|
||||
Me.radCloseWarnMultiple = New System.Windows.Forms.RadioButton()
|
||||
Me.radCloseWarnExit = New System.Windows.Forms.RadioButton()
|
||||
Me.radCloseWarnNever = New System.Windows.Forms.RadioButton()
|
||||
Me.pnlRdpReconnectionCount.SuspendLayout()
|
||||
CType(Me.numRdpReconnectionCount, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.pnlDefaultCredentials.SuspendLayout()
|
||||
Me.pnlAutoSave.SuspendLayout()
|
||||
CType(Me.numAutoSave, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.pnlConfirmCloseConnection.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'pnlRdpReconnectionCount
|
||||
'
|
||||
Me.pnlRdpReconnectionCount.Controls.Add(Me.lblRdpReconnectionCount)
|
||||
Me.pnlRdpReconnectionCount.Controls.Add(Me.numRdpReconnectionCount)
|
||||
Me.pnlRdpReconnectionCount.Location = New System.Drawing.Point(3, 69)
|
||||
Me.pnlRdpReconnectionCount.Name = "pnlRdpReconnectionCount"
|
||||
Me.pnlRdpReconnectionCount.Size = New System.Drawing.Size(596, 29)
|
||||
Me.pnlRdpReconnectionCount.TabIndex = 10
|
||||
'
|
||||
'lblRdpReconnectionCount
|
||||
'
|
||||
Me.lblRdpReconnectionCount.Location = New System.Drawing.Point(6, 9)
|
||||
Me.lblRdpReconnectionCount.Name = "lblRdpReconnectionCount"
|
||||
Me.lblRdpReconnectionCount.Size = New System.Drawing.Size(288, 13)
|
||||
Me.lblRdpReconnectionCount.TabIndex = 0
|
||||
Me.lblRdpReconnectionCount.Text = "RDP Reconnection Count"
|
||||
Me.lblRdpReconnectionCount.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'numRdpReconnectionCount
|
||||
'
|
||||
Me.numRdpReconnectionCount.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.numRdpReconnectionCount.Location = New System.Drawing.Point(300, 7)
|
||||
Me.numRdpReconnectionCount.Maximum = New Decimal(New Integer() {20, 0, 0, 0})
|
||||
Me.numRdpReconnectionCount.Name = "numRdpReconnectionCount"
|
||||
Me.numRdpReconnectionCount.Size = New System.Drawing.Size(53, 20)
|
||||
Me.numRdpReconnectionCount.TabIndex = 1
|
||||
Me.numRdpReconnectionCount.Value = New Decimal(New Integer() {5, 0, 0, 0})
|
||||
'
|
||||
'chkSingleClickOnConnectionOpensIt
|
||||
'
|
||||
Me.chkSingleClickOnConnectionOpensIt.AutoSize = True
|
||||
Me.chkSingleClickOnConnectionOpensIt.Location = New System.Drawing.Point(3, 0)
|
||||
Me.chkSingleClickOnConnectionOpensIt.Name = "chkSingleClickOnConnectionOpensIt"
|
||||
Me.chkSingleClickOnConnectionOpensIt.Size = New System.Drawing.Size(191, 17)
|
||||
Me.chkSingleClickOnConnectionOpensIt.TabIndex = 7
|
||||
Me.chkSingleClickOnConnectionOpensIt.Text = "Single click on connection opens it"
|
||||
Me.chkSingleClickOnConnectionOpensIt.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkHostnameLikeDisplayName
|
||||
'
|
||||
Me.chkHostnameLikeDisplayName.AutoSize = True
|
||||
Me.chkHostnameLikeDisplayName.Location = New System.Drawing.Point(3, 46)
|
||||
Me.chkHostnameLikeDisplayName.Name = "chkHostnameLikeDisplayName"
|
||||
Me.chkHostnameLikeDisplayName.Size = New System.Drawing.Size(328, 17)
|
||||
Me.chkHostnameLikeDisplayName.TabIndex = 9
|
||||
Me.chkHostnameLikeDisplayName.Text = "Set hostname like display name when creating new connections"
|
||||
Me.chkHostnameLikeDisplayName.UseVisualStyleBackColor = True
|
||||
'
|
||||
'pnlDefaultCredentials
|
||||
'
|
||||
Me.pnlDefaultCredentials.Controls.Add(Me.radCredentialsCustom)
|
||||
Me.pnlDefaultCredentials.Controls.Add(Me.lblDefaultCredentials)
|
||||
Me.pnlDefaultCredentials.Controls.Add(Me.radCredentialsNoInfo)
|
||||
Me.pnlDefaultCredentials.Controls.Add(Me.radCredentialsWindows)
|
||||
Me.pnlDefaultCredentials.Controls.Add(Me.txtCredentialsDomain)
|
||||
Me.pnlDefaultCredentials.Controls.Add(Me.lblCredentialsUsername)
|
||||
Me.pnlDefaultCredentials.Controls.Add(Me.txtCredentialsPassword)
|
||||
Me.pnlDefaultCredentials.Controls.Add(Me.lblCredentialsPassword)
|
||||
Me.pnlDefaultCredentials.Controls.Add(Me.txtCredentialsUsername)
|
||||
Me.pnlDefaultCredentials.Controls.Add(Me.lblCredentialsDomain)
|
||||
Me.pnlDefaultCredentials.Location = New System.Drawing.Point(3, 139)
|
||||
Me.pnlDefaultCredentials.Name = "pnlDefaultCredentials"
|
||||
Me.pnlDefaultCredentials.Size = New System.Drawing.Size(596, 175)
|
||||
Me.pnlDefaultCredentials.TabIndex = 12
|
||||
'
|
||||
'radCredentialsCustom
|
||||
'
|
||||
Me.radCredentialsCustom.AutoSize = True
|
||||
Me.radCredentialsCustom.Location = New System.Drawing.Point(16, 69)
|
||||
Me.radCredentialsCustom.Name = "radCredentialsCustom"
|
||||
Me.radCredentialsCustom.Size = New System.Drawing.Size(87, 17)
|
||||
Me.radCredentialsCustom.TabIndex = 3
|
||||
Me.radCredentialsCustom.Text = "the following:"
|
||||
Me.radCredentialsCustom.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblDefaultCredentials
|
||||
'
|
||||
Me.lblDefaultCredentials.AutoSize = True
|
||||
Me.lblDefaultCredentials.Location = New System.Drawing.Point(3, 9)
|
||||
Me.lblDefaultCredentials.Name = "lblDefaultCredentials"
|
||||
Me.lblDefaultCredentials.Size = New System.Drawing.Size(257, 13)
|
||||
Me.lblDefaultCredentials.TabIndex = 0
|
||||
Me.lblDefaultCredentials.Text = "For empty Username, Password or Domain fields use:"
|
||||
'
|
||||
'radCredentialsNoInfo
|
||||
'
|
||||
Me.radCredentialsNoInfo.AutoSize = True
|
||||
Me.radCredentialsNoInfo.Checked = True
|
||||
Me.radCredentialsNoInfo.Location = New System.Drawing.Point(16, 31)
|
||||
Me.radCredentialsNoInfo.Name = "radCredentialsNoInfo"
|
||||
Me.radCredentialsNoInfo.Size = New System.Drawing.Size(91, 17)
|
||||
Me.radCredentialsNoInfo.TabIndex = 1
|
||||
Me.radCredentialsNoInfo.TabStop = True
|
||||
Me.radCredentialsNoInfo.Text = "no information"
|
||||
Me.radCredentialsNoInfo.UseVisualStyleBackColor = True
|
||||
'
|
||||
'radCredentialsWindows
|
||||
'
|
||||
Me.radCredentialsWindows.AutoSize = True
|
||||
Me.radCredentialsWindows.Location = New System.Drawing.Point(16, 50)
|
||||
Me.radCredentialsWindows.Name = "radCredentialsWindows"
|
||||
Me.radCredentialsWindows.Size = New System.Drawing.Size(227, 17)
|
||||
Me.radCredentialsWindows.TabIndex = 2
|
||||
Me.radCredentialsWindows.Text = "my current credentials (windows logon info)"
|
||||
Me.radCredentialsWindows.UseVisualStyleBackColor = True
|
||||
'
|
||||
'txtCredentialsDomain
|
||||
'
|
||||
Me.txtCredentialsDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtCredentialsDomain.Enabled = False
|
||||
Me.txtCredentialsDomain.Location = New System.Drawing.Point(140, 147)
|
||||
Me.txtCredentialsDomain.Name = "txtCredentialsDomain"
|
||||
Me.txtCredentialsDomain.Size = New System.Drawing.Size(150, 20)
|
||||
Me.txtCredentialsDomain.TabIndex = 9
|
||||
'
|
||||
'lblCredentialsUsername
|
||||
'
|
||||
Me.lblCredentialsUsername.Enabled = False
|
||||
Me.lblCredentialsUsername.Location = New System.Drawing.Point(37, 95)
|
||||
Me.lblCredentialsUsername.Name = "lblCredentialsUsername"
|
||||
Me.lblCredentialsUsername.Size = New System.Drawing.Size(97, 13)
|
||||
Me.lblCredentialsUsername.TabIndex = 4
|
||||
Me.lblCredentialsUsername.Text = "Username:"
|
||||
Me.lblCredentialsUsername.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'txtCredentialsPassword
|
||||
'
|
||||
Me.txtCredentialsPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtCredentialsPassword.Enabled = False
|
||||
Me.txtCredentialsPassword.Location = New System.Drawing.Point(140, 120)
|
||||
Me.txtCredentialsPassword.Name = "txtCredentialsPassword"
|
||||
Me.txtCredentialsPassword.Size = New System.Drawing.Size(150, 20)
|
||||
Me.txtCredentialsPassword.TabIndex = 7
|
||||
Me.txtCredentialsPassword.UseSystemPasswordChar = True
|
||||
'
|
||||
'lblCredentialsPassword
|
||||
'
|
||||
Me.lblCredentialsPassword.Enabled = False
|
||||
Me.lblCredentialsPassword.Location = New System.Drawing.Point(34, 123)
|
||||
Me.lblCredentialsPassword.Name = "lblCredentialsPassword"
|
||||
Me.lblCredentialsPassword.Size = New System.Drawing.Size(100, 13)
|
||||
Me.lblCredentialsPassword.TabIndex = 6
|
||||
Me.lblCredentialsPassword.Text = "Password:"
|
||||
Me.lblCredentialsPassword.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'txtCredentialsUsername
|
||||
'
|
||||
Me.txtCredentialsUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtCredentialsUsername.Enabled = False
|
||||
Me.txtCredentialsUsername.Location = New System.Drawing.Point(140, 93)
|
||||
Me.txtCredentialsUsername.Name = "txtCredentialsUsername"
|
||||
Me.txtCredentialsUsername.Size = New System.Drawing.Size(150, 20)
|
||||
Me.txtCredentialsUsername.TabIndex = 5
|
||||
'
|
||||
'lblCredentialsDomain
|
||||
'
|
||||
Me.lblCredentialsDomain.Enabled = False
|
||||
Me.lblCredentialsDomain.Location = New System.Drawing.Point(34, 150)
|
||||
Me.lblCredentialsDomain.Name = "lblCredentialsDomain"
|
||||
Me.lblCredentialsDomain.Size = New System.Drawing.Size(100, 13)
|
||||
Me.lblCredentialsDomain.TabIndex = 8
|
||||
Me.lblCredentialsDomain.Text = "Domain:"
|
||||
Me.lblCredentialsDomain.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'chkSingleClickOnOpenedConnectionSwitchesToIt
|
||||
'
|
||||
Me.chkSingleClickOnOpenedConnectionSwitchesToIt.AutoSize = True
|
||||
Me.chkSingleClickOnOpenedConnectionSwitchesToIt.Location = New System.Drawing.Point(3, 23)
|
||||
Me.chkSingleClickOnOpenedConnectionSwitchesToIt.Name = "chkSingleClickOnOpenedConnectionSwitchesToIt"
|
||||
Me.chkSingleClickOnOpenedConnectionSwitchesToIt.Size = New System.Drawing.Size(254, 17)
|
||||
Me.chkSingleClickOnOpenedConnectionSwitchesToIt.TabIndex = 8
|
||||
Me.chkSingleClickOnOpenedConnectionSwitchesToIt.Text = "Single click on opened connection switches to it"
|
||||
Me.chkSingleClickOnOpenedConnectionSwitchesToIt.UseVisualStyleBackColor = True
|
||||
'
|
||||
'pnlAutoSave
|
||||
'
|
||||
Me.pnlAutoSave.Controls.Add(Me.lblAutoSave1)
|
||||
Me.pnlAutoSave.Controls.Add(Me.numAutoSave)
|
||||
Me.pnlAutoSave.Controls.Add(Me.lblAutoSave2)
|
||||
Me.pnlAutoSave.Location = New System.Drawing.Point(3, 104)
|
||||
Me.pnlAutoSave.Name = "pnlAutoSave"
|
||||
Me.pnlAutoSave.Size = New System.Drawing.Size(596, 29)
|
||||
Me.pnlAutoSave.TabIndex = 11
|
||||
'
|
||||
'lblAutoSave1
|
||||
'
|
||||
Me.lblAutoSave1.Location = New System.Drawing.Point(6, 9)
|
||||
Me.lblAutoSave1.Name = "lblAutoSave1"
|
||||
Me.lblAutoSave1.Size = New System.Drawing.Size(288, 13)
|
||||
Me.lblAutoSave1.TabIndex = 0
|
||||
Me.lblAutoSave1.Text = "Auto Save every:"
|
||||
Me.lblAutoSave1.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'numAutoSave
|
||||
'
|
||||
Me.numAutoSave.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.numAutoSave.Location = New System.Drawing.Point(300, 7)
|
||||
Me.numAutoSave.Maximum = New Decimal(New Integer() {9999, 0, 0, 0})
|
||||
Me.numAutoSave.Name = "numAutoSave"
|
||||
Me.numAutoSave.Size = New System.Drawing.Size(53, 20)
|
||||
Me.numAutoSave.TabIndex = 1
|
||||
'
|
||||
'lblAutoSave2
|
||||
'
|
||||
Me.lblAutoSave2.AutoSize = True
|
||||
Me.lblAutoSave2.Location = New System.Drawing.Point(359, 9)
|
||||
Me.lblAutoSave2.Name = "lblAutoSave2"
|
||||
Me.lblAutoSave2.Size = New System.Drawing.Size(135, 13)
|
||||
Me.lblAutoSave2.TabIndex = 2
|
||||
Me.lblAutoSave2.Text = "Minutes (0 means disabled)"
|
||||
'
|
||||
'pnlConfirmCloseConnection
|
||||
'
|
||||
Me.pnlConfirmCloseConnection.Controls.Add(Me.lblClosingConnections)
|
||||
Me.pnlConfirmCloseConnection.Controls.Add(Me.radCloseWarnAll)
|
||||
Me.pnlConfirmCloseConnection.Controls.Add(Me.radCloseWarnMultiple)
|
||||
Me.pnlConfirmCloseConnection.Controls.Add(Me.radCloseWarnExit)
|
||||
Me.pnlConfirmCloseConnection.Controls.Add(Me.radCloseWarnNever)
|
||||
Me.pnlConfirmCloseConnection.Location = New System.Drawing.Point(3, 320)
|
||||
Me.pnlConfirmCloseConnection.Name = "pnlConfirmCloseConnection"
|
||||
Me.pnlConfirmCloseConnection.Size = New System.Drawing.Size(596, 137)
|
||||
Me.pnlConfirmCloseConnection.TabIndex = 13
|
||||
'
|
||||
'lblClosingConnections
|
||||
'
|
||||
Me.lblClosingConnections.AutoSize = True
|
||||
Me.lblClosingConnections.Location = New System.Drawing.Point(3, 9)
|
||||
Me.lblClosingConnections.Name = "lblClosingConnections"
|
||||
Me.lblClosingConnections.Size = New System.Drawing.Size(136, 13)
|
||||
Me.lblClosingConnections.TabIndex = 0
|
||||
Me.lblClosingConnections.Text = "When closing connections:"
|
||||
'
|
||||
'radCloseWarnAll
|
||||
'
|
||||
Me.radCloseWarnAll.AutoSize = True
|
||||
Me.radCloseWarnAll.Location = New System.Drawing.Point(16, 31)
|
||||
Me.radCloseWarnAll.Name = "radCloseWarnAll"
|
||||
Me.radCloseWarnAll.Size = New System.Drawing.Size(194, 17)
|
||||
Me.radCloseWarnAll.TabIndex = 1
|
||||
Me.radCloseWarnAll.TabStop = True
|
||||
Me.radCloseWarnAll.Text = "Warn me when closing connections"
|
||||
Me.radCloseWarnAll.UseVisualStyleBackColor = True
|
||||
'
|
||||
'radCloseWarnMultiple
|
||||
'
|
||||
Me.radCloseWarnMultiple.AutoSize = True
|
||||
Me.radCloseWarnMultiple.Location = New System.Drawing.Point(16, 54)
|
||||
Me.radCloseWarnMultiple.Name = "radCloseWarnMultiple"
|
||||
Me.radCloseWarnMultiple.Size = New System.Drawing.Size(254, 17)
|
||||
Me.radCloseWarnMultiple.TabIndex = 2
|
||||
Me.radCloseWarnMultiple.TabStop = True
|
||||
Me.radCloseWarnMultiple.Text = "Warn me only when closing multiple connections"
|
||||
Me.radCloseWarnMultiple.UseVisualStyleBackColor = True
|
||||
'
|
||||
'radCloseWarnExit
|
||||
'
|
||||
Me.radCloseWarnExit.AutoSize = True
|
||||
Me.radCloseWarnExit.Location = New System.Drawing.Point(16, 77)
|
||||
Me.radCloseWarnExit.Name = "radCloseWarnExit"
|
||||
Me.radCloseWarnExit.Size = New System.Drawing.Size(216, 17)
|
||||
Me.radCloseWarnExit.TabIndex = 3
|
||||
Me.radCloseWarnExit.TabStop = True
|
||||
Me.radCloseWarnExit.Text = "Warn me only when exiting mRemoteNG"
|
||||
Me.radCloseWarnExit.UseVisualStyleBackColor = True
|
||||
'
|
||||
'radCloseWarnNever
|
||||
'
|
||||
Me.radCloseWarnNever.AutoSize = True
|
||||
Me.radCloseWarnNever.Location = New System.Drawing.Point(16, 100)
|
||||
Me.radCloseWarnNever.Name = "radCloseWarnNever"
|
||||
Me.radCloseWarnNever.Size = New System.Drawing.Size(226, 17)
|
||||
Me.radCloseWarnNever.TabIndex = 4
|
||||
Me.radCloseWarnNever.TabStop = True
|
||||
Me.radCloseWarnNever.Text = "Do not warn me when closing connections"
|
||||
Me.radCloseWarnNever.UseVisualStyleBackColor = True
|
||||
'
|
||||
'ConnectionsPage
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(Me.pnlRdpReconnectionCount)
|
||||
Me.Controls.Add(Me.chkSingleClickOnConnectionOpensIt)
|
||||
Me.Controls.Add(Me.chkHostnameLikeDisplayName)
|
||||
Me.Controls.Add(Me.pnlDefaultCredentials)
|
||||
Me.Controls.Add(Me.chkSingleClickOnOpenedConnectionSwitchesToIt)
|
||||
Me.Controls.Add(Me.pnlAutoSave)
|
||||
Me.Controls.Add(Me.pnlConfirmCloseConnection)
|
||||
Me.Name = "ConnectionsPage"
|
||||
Me.PageIcon = CType(resources.GetObject("$this.PageIcon"), System.Drawing.Icon)
|
||||
Me.Size = New System.Drawing.Size(610, 489)
|
||||
Me.pnlRdpReconnectionCount.ResumeLayout(False)
|
||||
CType(Me.numRdpReconnectionCount, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.pnlDefaultCredentials.ResumeLayout(False)
|
||||
Me.pnlDefaultCredentials.PerformLayout()
|
||||
Me.pnlAutoSave.ResumeLayout(False)
|
||||
Me.pnlAutoSave.PerformLayout()
|
||||
CType(Me.numAutoSave, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.pnlConfirmCloseConnection.ResumeLayout(False)
|
||||
Me.pnlConfirmCloseConnection.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents pnlRdpReconnectionCount As System.Windows.Forms.Panel
|
||||
Friend WithEvents lblRdpReconnectionCount As System.Windows.Forms.Label
|
||||
Friend WithEvents numRdpReconnectionCount As System.Windows.Forms.NumericUpDown
|
||||
Friend WithEvents chkSingleClickOnConnectionOpensIt As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkHostnameLikeDisplayName As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents pnlDefaultCredentials As System.Windows.Forms.Panel
|
||||
Friend WithEvents radCredentialsCustom As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents lblDefaultCredentials As System.Windows.Forms.Label
|
||||
Friend WithEvents radCredentialsNoInfo As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents radCredentialsWindows As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents txtCredentialsDomain As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblCredentialsUsername As System.Windows.Forms.Label
|
||||
Friend WithEvents txtCredentialsPassword As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblCredentialsPassword As System.Windows.Forms.Label
|
||||
Friend WithEvents txtCredentialsUsername As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblCredentialsDomain As System.Windows.Forms.Label
|
||||
Friend WithEvents chkSingleClickOnOpenedConnectionSwitchesToIt As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents pnlAutoSave As System.Windows.Forms.Panel
|
||||
Friend WithEvents lblAutoSave1 As System.Windows.Forms.Label
|
||||
Friend WithEvents numAutoSave As System.Windows.Forms.NumericUpDown
|
||||
Friend WithEvents lblAutoSave2 As System.Windows.Forms.Label
|
||||
Friend WithEvents pnlConfirmCloseConnection As System.Windows.Forms.Panel
|
||||
Friend WithEvents lblClosingConnections As System.Windows.Forms.Label
|
||||
Friend WithEvents radCloseWarnAll As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents radCloseWarnMultiple As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents radCloseWarnExit As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents radCloseWarnNever As System.Windows.Forms.RadioButton
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
145
mRemoteV1/Forms/OptionsPages/ConnectionsPage.resx
Normal file
145
mRemoteV1/Forms/OptionsPages/ConnectionsPage.resx
Normal file
@@ -0,0 +1,145 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADVYQEFyk4AFcdXAC3JWAA/xVIAScNPAUi+TAA9v0sAK75KABTQTwAEAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADGXQAHv1YALMhbAGrAVgCjrUsAxKRHBNOoRgjTqUcEw7RKAKHBUgBmwV4AKM9X
|
||||
AAYAAAAAAAAAAAAAAADCWgABuEcAGLFEAGuCOQHXejoP/KxNJP/hbUH/5H9V/9NrOf+jSxb9o00H2r9X
|
||||
AGrKZAAUAAAAAAAAAAAAAAAAAAAAAKc/BSZPIwHSPScX/4pcRP/Khmb/9ryc//nMt//joHj/sXdd/3lT
|
||||
NP+GRQjdv1sAKAAAAAAAAAAAAAAAAAAAAABvRSSlVDkh/3lkT/+PdmH/rIhr/8KjiP/BpY7/s5iB/5F2
|
||||
YP90W0b/YzwZ/4U+ALEAAAAAAAAAAAAAAACqZztfdVU6/8Oxov+2nIP/pnlM/6h3Sf/DpIf/2Maw/72p
|
||||
i/9/Xz//XDwd/1IuDP9ZMgr/eTYAUwAAAACuXisxYjYYsWc7Fv+qhV//snIw/61PAP+6bCT/6tW///38
|
||||
+v/Wvqb/kF8s/2IwAP9jQB//XDwe/1QsBMVUKAAnYiQAR1YhAexiMAb/mU8G/7hnE//CYwL/yXUj/+a/
|
||||
lP/s1Lb/zZxi/6hsLP+ZbUH/o4xy/39mT/9aNhT3UigCVX0vAV9qLgP9dDsG/65ZBf/AYQX/55ZG/+iy
|
||||
ev/ksXr/0ok5/71mBv+oVAD/uI1d/9TDsv+YhG7/Wz0f/0olBmqWQARafTwH+oNGDP/LcBv/5Ys9//62
|
||||
cv//48L/9LyF/9Z3Kf/FbhL/umMH/693Of+uiF3/lHZd/1w+Iv9CIwVms1oVOZFJEN6OThn/7J5T//6/
|
||||
hf//zKH//9+7//7Cf//ijkn/04Q6/8p5LP+1cCr/l2En/4FeOf9YOx/sPyEESMlsHwypUxSOwG4t//+8
|
||||
f//6zqf/+Nu+///ixv//vob/9Kx1/+zCmv/itYv/uHUz/51kLP+IZED/QSMHpTcZABUAAAAAx1wUGu5v
|
||||
JPHYnnL/59PA//z17v//+Ov//+XC//a5gv/y0rj/7tK2/8KGTv+ndkf/bUYj+jcaACkAAAAAAAAAAAAA
|
||||
AADrZRdXqWI0/8q4qP////////78///24v/7xaD/5LmV/9usff/Djlz/k2Q4/0wkAWoAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAOqsdVG0e1Hs0LKV/+zg2f/m1cT/07CU/9Omd//Lj1X/omUt8mUwBGAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA/u/cF8aBSHqyayrFp2815aBnLeahXhvJpVkKg4A8Ah0AAAAAAAAAAAAA
|
||||
AAAAAAAA4AcAAMADAACAAwAAwAMAAMADAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAMAD
|
||||
AADgBwAA8A8AAA==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
125
mRemoteV1/Forms/OptionsPages/ConnectionsPage.vb
Normal file
125
mRemoteV1/Forms/OptionsPages/ConnectionsPage.vb
Normal file
@@ -0,0 +1,125 @@
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.Config
|
||||
Imports mRemoteNG.App.Info
|
||||
Imports mRemoteNG.Security
|
||||
|
||||
Namespace Forms.OptionsPages
|
||||
Public Class ConnectionsPage
|
||||
Public Overrides Property PageName() As String
|
||||
Get
|
||||
Return Language.strConnections
|
||||
End Get
|
||||
Set(value As String)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Overrides Sub ApplyLanguage()
|
||||
MyBase.ApplyLanguage()
|
||||
|
||||
chkSingleClickOnConnectionOpensIt.Text = Language.strSingleClickOnConnectionOpensIt
|
||||
chkSingleClickOnOpenedConnectionSwitchesToIt.Text = Language.strSingleClickOnOpenConnectionSwitchesToIt
|
||||
chkHostnameLikeDisplayName.Text = Language.strSetHostnameLikeDisplayName
|
||||
|
||||
lblRdpReconnectionCount.Text = Language.strRdpReconnectCount
|
||||
|
||||
lblAutoSave1.Text = Language.strAutoSaveEvery
|
||||
lblAutoSave2.Text = Language.strAutoSaveMins
|
||||
|
||||
lblDefaultCredentials.Text = Language.strEmptyUsernamePasswordDomainFields
|
||||
radCredentialsNoInfo.Text = Language.strNoInformation
|
||||
radCredentialsWindows.Text = Language.strMyCurrentWindowsCreds
|
||||
radCredentialsCustom.Text = Language.strTheFollowing
|
||||
lblCredentialsUsername.Text = Language.strLabelUsername
|
||||
lblCredentialsPassword.Text = Language.strLabelPassword
|
||||
lblCredentialsDomain.Text = Language.strLabelDomain
|
||||
|
||||
lblClosingConnections.Text = Language.strLabelClosingConnections
|
||||
radCloseWarnAll.Text = Language.strRadioCloseWarnAll
|
||||
radCloseWarnMultiple.Text = Language.strRadioCloseWarnMultiple
|
||||
radCloseWarnExit.Text = Language.strRadioCloseWarnExit
|
||||
radCloseWarnNever.Text = Language.strRadioCloseWarnNever
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub LoadSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
chkSingleClickOnConnectionOpensIt.Checked = My.Settings.SingleClickOnConnectionOpensIt
|
||||
chkSingleClickOnOpenedConnectionSwitchesToIt.Checked = My.Settings.SingleClickSwitchesToOpenConnection
|
||||
chkHostnameLikeDisplayName.Checked = My.Settings.SetHostnameLikeDisplayName
|
||||
|
||||
numRdpReconnectionCount.Value = My.Settings.RdpReconnectionCount
|
||||
|
||||
numAutoSave.Value = My.Settings.AutoSaveEveryMinutes
|
||||
|
||||
Select Case My.Settings.EmptyCredentials
|
||||
' ReSharper disable once StringLiteralTypo
|
||||
Case "noinfo"
|
||||
radCredentialsNoInfo.Checked = True
|
||||
Case "windows"
|
||||
radCredentialsWindows.Checked = True
|
||||
Case "custom"
|
||||
radCredentialsCustom.Checked = True
|
||||
End Select
|
||||
|
||||
txtCredentialsUsername.Text = My.Settings.DefaultUsername
|
||||
txtCredentialsPassword.Text = Crypt.Decrypt(My.Settings.DefaultPassword, General.EncryptionKey)
|
||||
txtCredentialsDomain.Text = My.Settings.DefaultDomain
|
||||
|
||||
Select Case My.Settings.ConfirmCloseConnection
|
||||
Case ConfirmClose.Never
|
||||
radCloseWarnNever.Checked = True
|
||||
Case ConfirmClose.Exit
|
||||
radCloseWarnExit.Checked = True
|
||||
Case ConfirmClose.Multiple
|
||||
radCloseWarnMultiple.Checked = True
|
||||
Case Else
|
||||
radCloseWarnAll.Checked = True
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub SaveSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
My.Settings.SingleClickOnConnectionOpensIt = chkSingleClickOnConnectionOpensIt.Checked
|
||||
My.Settings.SingleClickSwitchesToOpenConnection = chkSingleClickOnOpenedConnectionSwitchesToIt.Checked
|
||||
My.Settings.SetHostnameLikeDisplayName = chkHostnameLikeDisplayName.Checked
|
||||
|
||||
My.Settings.RdpReconnectionCount = numRdpReconnectionCount.Value
|
||||
|
||||
My.Settings.AutoSaveEveryMinutes = numAutoSave.Value
|
||||
If My.Settings.AutoSaveEveryMinutes > 0 Then
|
||||
frmMain.tmrAutoSave.Interval = My.Settings.AutoSaveEveryMinutes * 60000
|
||||
frmMain.tmrAutoSave.Enabled = True
|
||||
Else
|
||||
frmMain.tmrAutoSave.Enabled = False
|
||||
End If
|
||||
|
||||
If radCredentialsNoInfo.Checked Then
|
||||
' ReSharper disable once StringLiteralTypo
|
||||
My.Settings.EmptyCredentials = "noinfo"
|
||||
ElseIf radCredentialsWindows.Checked Then
|
||||
My.Settings.EmptyCredentials = "windows"
|
||||
ElseIf radCredentialsCustom.Checked Then
|
||||
My.Settings.EmptyCredentials = "custom"
|
||||
End If
|
||||
|
||||
My.Settings.DefaultUsername = txtCredentialsUsername.Text
|
||||
My.Settings.DefaultPassword = Crypt.Encrypt(txtCredentialsPassword.Text, General.EncryptionKey)
|
||||
My.Settings.DefaultDomain = txtCredentialsDomain.Text
|
||||
|
||||
If radCloseWarnAll.Checked Then My.Settings.ConfirmCloseConnection = ConfirmClose.All
|
||||
If radCloseWarnMultiple.Checked Then My.Settings.ConfirmCloseConnection = ConfirmClose.Multiple
|
||||
If radCloseWarnExit.Checked Then My.Settings.ConfirmCloseConnection = ConfirmClose.Exit
|
||||
If radCloseWarnNever.Checked Then My.Settings.ConfirmCloseConnection = ConfirmClose.Never
|
||||
End Sub
|
||||
|
||||
Private Sub radCredentialsCustom_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles radCredentialsCustom.CheckedChanged
|
||||
lblCredentialsUsername.Enabled = radCredentialsCustom.Checked
|
||||
lblCredentialsPassword.Enabled = radCredentialsCustom.Checked
|
||||
lblCredentialsDomain.Enabled = radCredentialsCustom.Checked
|
||||
txtCredentialsUsername.Enabled = radCredentialsCustom.Checked
|
||||
txtCredentialsPassword.Enabled = radCredentialsCustom.Checked
|
||||
txtCredentialsDomain.Enabled = radCredentialsCustom.Checked
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
190
mRemoteV1/Forms/OptionsPages/KeyboardPage.Designer.vb
generated
Normal file
190
mRemoteV1/Forms/OptionsPages/KeyboardPage.Designer.vb
generated
Normal file
@@ -0,0 +1,190 @@
|
||||
Namespace Forms.OptionsPages
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class KeyboardPage
|
||||
Inherits OptionsPage
|
||||
|
||||
'UserControl overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim LineGroupBox As System.Windows.Forms.GroupBox
|
||||
Dim Alignment1 As mRemoteNG.Controls.Alignment = New mRemoteNG.Controls.Alignment()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(KeyboardPage))
|
||||
Me.btnDeleteKeyboardShortcut = New System.Windows.Forms.Button()
|
||||
Me.btnNewKeyboardShortcut = New System.Windows.Forms.Button()
|
||||
Me.grpModifyKeyboardShortcut = New System.Windows.Forms.GroupBox()
|
||||
Me.hotModifyKeyboardShortcut = New SharedLibraryNG.HotkeyControl()
|
||||
Me.btnResetAllKeyboardShortcuts = New System.Windows.Forms.Button()
|
||||
Me.btnResetKeyboardShortcuts = New System.Windows.Forms.Button()
|
||||
Me.lblKeyboardCommand = New System.Windows.Forms.Label()
|
||||
Me.lstKeyboardShortcuts = New System.Windows.Forms.ListBox()
|
||||
Me.lblKeyboardShortcuts = New System.Windows.Forms.Label()
|
||||
Me.lvKeyboardCommands = New mRemoteNG.Controls.ListView()
|
||||
LineGroupBox = New System.Windows.Forms.GroupBox()
|
||||
Me.grpModifyKeyboardShortcut.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'LineGroupBox
|
||||
'
|
||||
LineGroupBox.Location = New System.Drawing.Point(212, 20)
|
||||
LineGroupBox.Name = "LineGroupBox"
|
||||
LineGroupBox.Size = New System.Drawing.Size(398, 3)
|
||||
LineGroupBox.TabIndex = 19
|
||||
LineGroupBox.TabStop = False
|
||||
'
|
||||
'btnDeleteKeyboardShortcut
|
||||
'
|
||||
Me.btnDeleteKeyboardShortcut.Location = New System.Drawing.Point(293, 151)
|
||||
Me.btnDeleteKeyboardShortcut.Name = "btnDeleteKeyboardShortcut"
|
||||
Me.btnDeleteKeyboardShortcut.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnDeleteKeyboardShortcut.TabIndex = 15
|
||||
Me.btnDeleteKeyboardShortcut.Text = "&Delete"
|
||||
Me.btnDeleteKeyboardShortcut.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnNewKeyboardShortcut
|
||||
'
|
||||
Me.btnNewKeyboardShortcut.Location = New System.Drawing.Point(212, 151)
|
||||
Me.btnNewKeyboardShortcut.Name = "btnNewKeyboardShortcut"
|
||||
Me.btnNewKeyboardShortcut.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnNewKeyboardShortcut.TabIndex = 14
|
||||
Me.btnNewKeyboardShortcut.Text = "&New"
|
||||
Me.btnNewKeyboardShortcut.UseVisualStyleBackColor = True
|
||||
'
|
||||
'grpModifyKeyboardShortcut
|
||||
'
|
||||
Me.grpModifyKeyboardShortcut.Controls.Add(Me.hotModifyKeyboardShortcut)
|
||||
Me.grpModifyKeyboardShortcut.Location = New System.Drawing.Point(212, 180)
|
||||
Me.grpModifyKeyboardShortcut.Name = "grpModifyKeyboardShortcut"
|
||||
Me.grpModifyKeyboardShortcut.Size = New System.Drawing.Size(398, 103)
|
||||
Me.grpModifyKeyboardShortcut.TabIndex = 17
|
||||
Me.grpModifyKeyboardShortcut.TabStop = False
|
||||
Me.grpModifyKeyboardShortcut.Text = "Modify Shortcut"
|
||||
'
|
||||
'hotModifyKeyboardShortcut
|
||||
'
|
||||
Me.hotModifyKeyboardShortcut.HotkeyModifiers = System.Windows.Forms.Keys.None
|
||||
Me.hotModifyKeyboardShortcut.KeyCode = System.Windows.Forms.Keys.None
|
||||
Me.hotModifyKeyboardShortcut.Location = New System.Drawing.Point(27, 41)
|
||||
Me.hotModifyKeyboardShortcut.Name = "hotModifyKeyboardShortcut"
|
||||
Me.hotModifyKeyboardShortcut.Size = New System.Drawing.Size(344, 20)
|
||||
Me.hotModifyKeyboardShortcut.TabIndex = 0
|
||||
Me.hotModifyKeyboardShortcut.Text = "None"
|
||||
'
|
||||
'btnResetAllKeyboardShortcuts
|
||||
'
|
||||
Me.btnResetAllKeyboardShortcuts.Location = New System.Drawing.Point(3, 466)
|
||||
Me.btnResetAllKeyboardShortcuts.Name = "btnResetAllKeyboardShortcuts"
|
||||
Me.btnResetAllKeyboardShortcuts.Size = New System.Drawing.Size(120, 23)
|
||||
Me.btnResetAllKeyboardShortcuts.TabIndex = 18
|
||||
Me.btnResetAllKeyboardShortcuts.Text = "Reset &All to Default"
|
||||
Me.btnResetAllKeyboardShortcuts.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnResetKeyboardShortcuts
|
||||
'
|
||||
Me.btnResetKeyboardShortcuts.Location = New System.Drawing.Point(490, 151)
|
||||
Me.btnResetKeyboardShortcuts.Name = "btnResetKeyboardShortcuts"
|
||||
Me.btnResetKeyboardShortcuts.Size = New System.Drawing.Size(120, 23)
|
||||
Me.btnResetKeyboardShortcuts.TabIndex = 16
|
||||
Me.btnResetKeyboardShortcuts.Text = "&Reset to Default"
|
||||
Me.btnResetKeyboardShortcuts.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblKeyboardCommand
|
||||
'
|
||||
Me.lblKeyboardCommand.AutoSize = True
|
||||
Me.lblKeyboardCommand.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.lblKeyboardCommand.Location = New System.Drawing.Point(209, 0)
|
||||
Me.lblKeyboardCommand.Name = "lblKeyboardCommand"
|
||||
Me.lblKeyboardCommand.Size = New System.Drawing.Size(71, 17)
|
||||
Me.lblKeyboardCommand.TabIndex = 11
|
||||
Me.lblKeyboardCommand.Text = "Command"
|
||||
'
|
||||
'lstKeyboardShortcuts
|
||||
'
|
||||
Me.lstKeyboardShortcuts.FormattingEnabled = True
|
||||
Me.lstKeyboardShortcuts.Location = New System.Drawing.Point(212, 50)
|
||||
Me.lstKeyboardShortcuts.Name = "lstKeyboardShortcuts"
|
||||
Me.lstKeyboardShortcuts.Size = New System.Drawing.Size(398, 95)
|
||||
Me.lstKeyboardShortcuts.TabIndex = 13
|
||||
'
|
||||
'lblKeyboardShortcuts
|
||||
'
|
||||
Me.lblKeyboardShortcuts.AutoSize = True
|
||||
Me.lblKeyboardShortcuts.Location = New System.Drawing.Point(209, 34)
|
||||
Me.lblKeyboardShortcuts.Name = "lblKeyboardShortcuts"
|
||||
Me.lblKeyboardShortcuts.Size = New System.Drawing.Size(100, 13)
|
||||
Me.lblKeyboardShortcuts.TabIndex = 12
|
||||
Me.lblKeyboardShortcuts.Text = "Keyboard Shortcuts"
|
||||
'
|
||||
'lvKeyboardCommands
|
||||
'
|
||||
Me.lvKeyboardCommands.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable
|
||||
Me.lvKeyboardCommands.HideSelection = False
|
||||
Me.lvKeyboardCommands.InactiveHighlightBackColor = System.Drawing.SystemColors.Highlight
|
||||
Me.lvKeyboardCommands.InactiveHighlightBorderColor = System.Drawing.SystemColors.HotTrack
|
||||
Me.lvKeyboardCommands.InactiveHighlightForeColor = System.Drawing.SystemColors.HighlightText
|
||||
Alignment1.Horizontal = mRemoteNG.Controls.HorizontalAlignment.Left
|
||||
Alignment1.Vertical = mRemoteNG.Controls.VerticalAlignment.Middle
|
||||
Me.lvKeyboardCommands.LabelAlignment = Alignment1
|
||||
Me.lvKeyboardCommands.LabelWrap = False
|
||||
Me.lvKeyboardCommands.Location = New System.Drawing.Point(3, 0)
|
||||
Me.lvKeyboardCommands.MultiSelect = False
|
||||
Me.lvKeyboardCommands.Name = "lvKeyboardCommands"
|
||||
Me.lvKeyboardCommands.OwnerDraw = True
|
||||
Me.lvKeyboardCommands.Size = New System.Drawing.Size(200, 460)
|
||||
Me.lvKeyboardCommands.TabIndex = 10
|
||||
Me.lvKeyboardCommands.TileSize = New System.Drawing.Size(196, 20)
|
||||
Me.lvKeyboardCommands.UseCompatibleStateImageBehavior = False
|
||||
Me.lvKeyboardCommands.View = System.Windows.Forms.View.Tile
|
||||
'
|
||||
'KeyboardPage
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(LineGroupBox)
|
||||
Me.Controls.Add(Me.btnDeleteKeyboardShortcut)
|
||||
Me.Controls.Add(Me.btnNewKeyboardShortcut)
|
||||
Me.Controls.Add(Me.grpModifyKeyboardShortcut)
|
||||
Me.Controls.Add(Me.btnResetAllKeyboardShortcuts)
|
||||
Me.Controls.Add(Me.btnResetKeyboardShortcuts)
|
||||
Me.Controls.Add(Me.lblKeyboardCommand)
|
||||
Me.Controls.Add(Me.lstKeyboardShortcuts)
|
||||
Me.Controls.Add(Me.lblKeyboardShortcuts)
|
||||
Me.Controls.Add(Me.lvKeyboardCommands)
|
||||
Me.Name = "KeyboardPage"
|
||||
Me.PageIcon = CType(resources.GetObject("$this.PageIcon"), System.Drawing.Icon)
|
||||
Me.Size = New System.Drawing.Size(610, 489)
|
||||
Me.grpModifyKeyboardShortcut.ResumeLayout(False)
|
||||
Me.grpModifyKeyboardShortcut.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents btnDeleteKeyboardShortcut As System.Windows.Forms.Button
|
||||
Friend WithEvents btnNewKeyboardShortcut As System.Windows.Forms.Button
|
||||
Friend WithEvents grpModifyKeyboardShortcut As System.Windows.Forms.GroupBox
|
||||
Friend WithEvents hotModifyKeyboardShortcut As SharedLibraryNG.HotkeyControl
|
||||
Friend WithEvents btnResetAllKeyboardShortcuts As System.Windows.Forms.Button
|
||||
Friend WithEvents btnResetKeyboardShortcuts As System.Windows.Forms.Button
|
||||
Friend WithEvents lblKeyboardCommand As System.Windows.Forms.Label
|
||||
Friend WithEvents lstKeyboardShortcuts As System.Windows.Forms.ListBox
|
||||
Friend WithEvents lblKeyboardShortcuts As System.Windows.Forms.Label
|
||||
Friend WithEvents lvKeyboardCommands As mRemoteNG.Controls.ListView
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
148
mRemoteV1/Forms/OptionsPages/KeyboardPage.resx
Normal file
148
mRemoteV1/Forms/OptionsPages/KeyboardPage.resx
Normal file
@@ -0,0 +1,148 @@
|
||||
<?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="LineGroupBox.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AOrFpOvnwJ//47ya/+C3lf/dso//2a6K/9aphf/TpX//0KB7/82cdv/KmXL/yJZu/8aT
|
||||
a//EkGn/xJBo/8SQaOvuy6v/6NXI/+jUxf/n0sP/5dDB/+XOvv/jzLz/48q5/+LJt//hx7X/4MWz/9/E
|
||||
sf/fxLD/3sKv/97Crv/EkGj/8tCx/+rYzP/8/Pz/2rqk//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8
|
||||
/P/8/Pz/zKGC//z8/P/fw7D/xZJq//XUtv/s3ND/3sOv/92/q//bvaf/2bqj/9i3n//WtJz/1bGX/9Ou
|
||||
lP/Rq4//0KiM/8+miP/No4X/4MWz/8eVbv/42Lv/7d7U//z8/P/8/Pz/3sKu//z8/P/bvKb//Pz8/9i2
|
||||
nv/8/Pz/1bCX//z8/P/8/Pz//Pz8/+HItv/KmXL/+ty//+7g1v/jy7r/4sm4/+DGtP/fxLH/3sKt/9y/
|
||||
qv/avKb/2bmi/9e2nv/Ws5r/6dbK//z8/P/jy7r/zp13//zewf/v4tj//Pz8/+TMvP/8/Pz/4cm3//z8
|
||||
/P/fw7D//Pz8/9y+qf/8/Pz/2bih//z8/P/38/D/5c6+/9Giff/83sH/7+LY/+/i2P/v4tj/7uHX/+7g
|
||||
1v/u39T/7d3S/+zc0f/r2s7/6tjM/+rXyv/o1cf/59PF/+fRwv/VqIP//N7B4/zewf+7ubb/s7Gu//rb
|
||||
vv/42Lv/9tW3//PSs//wzq7/7cmq/+rFpP/nwJ//47ya/+C3lf/dso//2a6K4////wD///8AxMTE/by8
|
||||
vLSzs7MQ////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ANDQ
|
||||
0PjJycn4wsLCZ////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wDZ2dln1NTU9s/Pz+/IyMjlwMDA2Le3t8Ourq6TpKSkfZubm26RkZFJh4eHBP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A//+sQf//rEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEHH/6xBx/+sQcAH
|
||||
rEH//6xB//+sQQ==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
198
mRemoteV1/Forms/OptionsPages/KeyboardPage.vb
Normal file
198
mRemoteV1/Forms/OptionsPages/KeyboardPage.vb
Normal file
@@ -0,0 +1,198 @@
|
||||
Imports mRemoteNG.Config
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Forms.OptionsPages
|
||||
Public Class KeyboardPage
|
||||
Public Overrides Property PageName() As String
|
||||
Get
|
||||
Return Language.strOptionsTabKeyboard
|
||||
End Get
|
||||
Set(value As String)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Overrides Sub ApplyLanguage()
|
||||
MyBase.ApplyLanguage()
|
||||
|
||||
lblKeyboardShortcuts.Text = Language.strOptionsKeyboardLabelKeyboardShortcuts
|
||||
btnNewKeyboardShortcut.Text = Language.strOptionsKeyboardButtonNew
|
||||
btnDeleteKeyboardShortcut.Text = Language.strOptionsKeyboardButtonDelete
|
||||
btnResetKeyboardShortcuts.Text = Language.strOptionsKeyboardButtonReset
|
||||
grpModifyKeyboardShortcut.Text = Language.strOptionsKeyboardGroupModifyShortcut
|
||||
btnResetAllKeyboardShortcuts.Text = Language.strOptionsKeyboardButtonResetAll
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub LoadSettings()
|
||||
_tabsListViewGroup = New ListViewGroup(Language.strOptionsKeyboardCommandsGroupTabs)
|
||||
_previousTabListViewItem = New ListViewItem(Language.strOptionsKeyboardCommandsPreviousTab, _tabsListViewGroup)
|
||||
_nextTabListViewItem = New ListViewItem(Language.strOptionsKeyboardCommandsNextTab, _tabsListViewGroup)
|
||||
|
||||
_keyboardShortcutMap = KeyboardShortcuts.Map.Clone()
|
||||
|
||||
lvKeyboardCommands.Groups.Add(_tabsListViewGroup)
|
||||
lvKeyboardCommands.Items.Add(_previousTabListViewItem)
|
||||
lvKeyboardCommands.Items.Add(_nextTabListViewItem)
|
||||
_previousTabListViewItem.Selected = True
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub SaveSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
If _keyboardShortcutMap IsNot Nothing Then
|
||||
KeyboardShortcuts.Map = _keyboardShortcutMap
|
||||
End If
|
||||
End Sub
|
||||
|
||||
#Region "Private Fields"
|
||||
Private _keyboardShortcutMap As KeyboardShortcutMap
|
||||
Private _tabsListViewGroup As ListViewGroup
|
||||
Private _previousTabListViewItem As ListViewItem
|
||||
Private _nextTabListViewItem As ListViewItem
|
||||
Private _ignoreKeyboardShortcutTextChanged As Boolean = False
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
#Region "Event Handlers"
|
||||
Private Sub lvKeyboardCommands_SelectedIndexChanged(sender As System.Object, e As EventArgs) Handles lvKeyboardCommands.SelectedIndexChanged
|
||||
Dim isItemSelected As Boolean = (lvKeyboardCommands.SelectedItems.Count = 1)
|
||||
EnableKeyboardShortcutControls(isItemSelected)
|
||||
|
||||
If Not isItemSelected Then Return
|
||||
|
||||
Dim selectedItem As ListViewItem = lvKeyboardCommands.SelectedItems(0)
|
||||
|
||||
lblKeyboardCommand.Text = selectedItem.Text
|
||||
lstKeyboardShortcuts.Items.Clear()
|
||||
|
||||
lstKeyboardShortcuts.Items.AddRange(_keyboardShortcutMap.GetShortcutKeys(GetSelectedShortcutCommand()))
|
||||
|
||||
If lstKeyboardShortcuts.Items.Count > 0 Then lstKeyboardShortcuts.SelectedIndex = 0
|
||||
End Sub
|
||||
|
||||
Private Sub lstKeyboardShortcuts_SelectedIndexChanged(sender As System.Object, e As EventArgs) Handles lstKeyboardShortcuts.SelectedIndexChanged
|
||||
Dim isItemSelected As Boolean = (lstKeyboardShortcuts.SelectedItems.Count = 1)
|
||||
|
||||
btnDeleteKeyboardShortcut.Enabled = isItemSelected
|
||||
grpModifyKeyboardShortcut.Enabled = isItemSelected
|
||||
hotModifyKeyboardShortcut.Enabled = isItemSelected
|
||||
|
||||
If Not isItemSelected Then
|
||||
hotModifyKeyboardShortcut.Text = String.Empty
|
||||
Return
|
||||
End If
|
||||
|
||||
Dim selectedItem As Object = lstKeyboardShortcuts.SelectedItems(0)
|
||||
Dim shortcutKey As ShortcutKey = TryCast(selectedItem, ShortcutKey)
|
||||
If shortcutKey Is Nothing Then Return
|
||||
|
||||
Dim keysValue As Keys = shortcutKey
|
||||
Dim keyCode As Keys = keysValue And Keys.KeyCode
|
||||
Dim modifiers As Keys = keysValue And Keys.Modifiers
|
||||
|
||||
_ignoreKeyboardShortcutTextChanged = True
|
||||
hotModifyKeyboardShortcut.KeyCode = keyCode
|
||||
hotModifyKeyboardShortcut.HotkeyModifiers = modifiers
|
||||
_ignoreKeyboardShortcutTextChanged = False
|
||||
End Sub
|
||||
|
||||
Private Sub btnNewKeyboardShortcut_Click(sender As System.Object, e As EventArgs) Handles btnNewKeyboardShortcut.Click
|
||||
For Each item As Object In lstKeyboardShortcuts.Items
|
||||
Dim shortcutKey As ShortcutKey = TryCast(item, ShortcutKey)
|
||||
If shortcutKey Is Nothing Then Continue For
|
||||
If shortcutKey = 0 Then
|
||||
lstKeyboardShortcuts.SelectedItem = item
|
||||
Return
|
||||
End If
|
||||
Next
|
||||
|
||||
lstKeyboardShortcuts.SelectedIndex = lstKeyboardShortcuts.Items.Add(New ShortcutKey(Keys.None))
|
||||
hotModifyKeyboardShortcut.Focus()
|
||||
End Sub
|
||||
|
||||
Private Sub btnDeleteKeyboardShortcut_Click(sender As System.Object, e As EventArgs) Handles btnDeleteKeyboardShortcut.Click
|
||||
Dim selectedIndex As Integer = lstKeyboardShortcuts.SelectedIndex
|
||||
|
||||
Dim command As ShortcutCommand = GetSelectedShortcutCommand()
|
||||
Dim key As ShortcutKey = TryCast(lstKeyboardShortcuts.SelectedItem, ShortcutKey)
|
||||
If Not command = ShortcutCommand.None And key IsNot Nothing Then
|
||||
_keyboardShortcutMap.Remove(GetSelectedShortcutCommand(), key)
|
||||
End If
|
||||
|
||||
lstKeyboardShortcuts.Items.Remove(lstKeyboardShortcuts.SelectedItem)
|
||||
|
||||
If selectedIndex >= lstKeyboardShortcuts.Items.Count Then selectedIndex = lstKeyboardShortcuts.Items.Count - 1
|
||||
lstKeyboardShortcuts.SelectedIndex = selectedIndex
|
||||
End Sub
|
||||
|
||||
Private Sub btnResetAllKeyboardShortcuts_Click(sender As System.Object, e As EventArgs) Handles btnResetAllKeyboardShortcuts.Click
|
||||
_keyboardShortcutMap = KeyboardShortcuts.DefaultMap.Clone()
|
||||
lvKeyboardCommands_SelectedIndexChanged(Me, New EventArgs())
|
||||
End Sub
|
||||
|
||||
Private Sub btnResetKeyboardShortcuts_Click(sender As System.Object, e As EventArgs) Handles btnResetKeyboardShortcuts.Click
|
||||
Dim command As ShortcutCommand = GetSelectedShortcutCommand()
|
||||
If command = ShortcutCommand.None Then Return
|
||||
_keyboardShortcutMap.SetShortcutKeys(command, KeyboardShortcuts.DefaultMap.GetShortcutKeys(command))
|
||||
lvKeyboardCommands_SelectedIndexChanged(Me, New EventArgs())
|
||||
End Sub
|
||||
|
||||
Private Sub hotModifyKeyboardShortcut_TextChanged(sender As System.Object, e As EventArgs) Handles hotModifyKeyboardShortcut.TextChanged
|
||||
If _ignoreKeyboardShortcutTextChanged Or _
|
||||
lstKeyboardShortcuts.SelectedIndex < 0 Or _
|
||||
lstKeyboardShortcuts.SelectedIndex >= lstKeyboardShortcuts.Items.Count Then Return
|
||||
|
||||
Dim keysValue As Keys = (hotModifyKeyboardShortcut.KeyCode And Keys.KeyCode) Or _
|
||||
(hotModifyKeyboardShortcut.HotkeyModifiers And Keys.Modifiers)
|
||||
|
||||
Dim hadFocus As Boolean = hotModifyKeyboardShortcut.ContainsFocus
|
||||
|
||||
Dim command As ShortcutCommand = GetSelectedShortcutCommand()
|
||||
Dim newShortcutKey As New ShortcutKey(keysValue)
|
||||
|
||||
If Not command = ShortcutCommand.None Then
|
||||
Dim oldShortcutKey As ShortcutKey = TryCast(lstKeyboardShortcuts.SelectedItem, ShortcutKey)
|
||||
If oldShortcutKey IsNot Nothing Then
|
||||
_keyboardShortcutMap.Remove(command, oldShortcutKey)
|
||||
End If
|
||||
_keyboardShortcutMap.Add(command, newShortcutKey)
|
||||
End If
|
||||
|
||||
lstKeyboardShortcuts.Items(lstKeyboardShortcuts.SelectedIndex) = newShortcutKey
|
||||
|
||||
If hadFocus Then
|
||||
hotModifyKeyboardShortcut.Focus()
|
||||
hotModifyKeyboardShortcut.Select(hotModifyKeyboardShortcut.TextLength, 0)
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
Private Function GetSelectedShortcutCommand() As ShortcutCommand
|
||||
If Not (lvKeyboardCommands.SelectedItems.Count = 1) Then Return ShortcutCommand.None
|
||||
|
||||
Dim selectedItem As ListViewItem = lvKeyboardCommands.SelectedItems(0)
|
||||
If selectedItem Is _previousTabListViewItem Then
|
||||
Return ShortcutCommand.PreviousTab
|
||||
ElseIf selectedItem Is _nextTabListViewItem Then
|
||||
Return ShortcutCommand.NextTab
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Sub EnableKeyboardShortcutControls(Optional ByVal enable As Boolean = True)
|
||||
lblKeyboardCommand.Visible = enable
|
||||
lblKeyboardShortcuts.Enabled = enable
|
||||
lstKeyboardShortcuts.Enabled = enable
|
||||
btnNewKeyboardShortcut.Enabled = enable
|
||||
btnResetKeyboardShortcuts.Enabled = enable
|
||||
|
||||
If Not enable Then
|
||||
btnDeleteKeyboardShortcut.Enabled = False
|
||||
grpModifyKeyboardShortcut.Enabled = False
|
||||
hotModifyKeyboardShortcut.Enabled = False
|
||||
|
||||
lstKeyboardShortcuts.Items.Clear()
|
||||
hotModifyKeyboardShortcut.Text = String.Empty
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
32
mRemoteV1/Forms/OptionsPages/OptionsPage.vb
Normal file
32
mRemoteV1/Forms/OptionsPages/OptionsPage.vb
Normal file
@@ -0,0 +1,32 @@
|
||||
Imports System.ComponentModel
|
||||
|
||||
Namespace Forms.OptionsPages
|
||||
Public Class OptionsPage
|
||||
Inherits UserControl
|
||||
|
||||
#Region "Public Properties"
|
||||
<Browsable(False)> _
|
||||
Public Overridable Property PageName() As String
|
||||
|
||||
Public Overridable Property PageIcon() As Icon
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Overridable Sub ApplyLanguage()
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub LoadSettings()
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub SaveSettings()
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub RevertSettings()
|
||||
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
191
mRemoteV1/Forms/OptionsPages/SqlServerPage.Designer.vb
generated
Normal file
191
mRemoteV1/Forms/OptionsPages/SqlServerPage.Designer.vb
generated
Normal file
@@ -0,0 +1,191 @@
|
||||
Namespace Forms.OptionsPages
|
||||
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class SqlServerPage
|
||||
Inherits OptionsPage
|
||||
|
||||
'UserControl overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(SqlServerPage))
|
||||
Me.lblSQLDatabaseName = New System.Windows.Forms.Label()
|
||||
Me.txtSQLDatabaseName = New System.Windows.Forms.TextBox()
|
||||
Me.lblExperimental = New System.Windows.Forms.Label()
|
||||
Me.chkUseSQLServer = New System.Windows.Forms.CheckBox()
|
||||
Me.lblSQLUsername = New System.Windows.Forms.Label()
|
||||
Me.txtSQLPassword = New System.Windows.Forms.TextBox()
|
||||
Me.lblSQLInfo = New System.Windows.Forms.Label()
|
||||
Me.lblSQLServer = New System.Windows.Forms.Label()
|
||||
Me.txtSQLUsername = New System.Windows.Forms.TextBox()
|
||||
Me.txtSQLServer = New System.Windows.Forms.TextBox()
|
||||
Me.lblSQLPassword = New System.Windows.Forms.Label()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'lblSQLDatabaseName
|
||||
'
|
||||
Me.lblSQLDatabaseName.Enabled = False
|
||||
Me.lblSQLDatabaseName.Location = New System.Drawing.Point(23, 132)
|
||||
Me.lblSQLDatabaseName.Name = "lblSQLDatabaseName"
|
||||
Me.lblSQLDatabaseName.Size = New System.Drawing.Size(111, 13)
|
||||
Me.lblSQLDatabaseName.TabIndex = 16
|
||||
Me.lblSQLDatabaseName.Text = "Database:"
|
||||
Me.lblSQLDatabaseName.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'txtSQLDatabaseName
|
||||
'
|
||||
Me.txtSQLDatabaseName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtSQLDatabaseName.Enabled = False
|
||||
Me.txtSQLDatabaseName.Location = New System.Drawing.Point(140, 130)
|
||||
Me.txtSQLDatabaseName.Name = "txtSQLDatabaseName"
|
||||
Me.txtSQLDatabaseName.Size = New System.Drawing.Size(153, 20)
|
||||
Me.txtSQLDatabaseName.TabIndex = 17
|
||||
'
|
||||
'lblExperimental
|
||||
'
|
||||
Me.lblExperimental.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.lblExperimental.Font = New System.Drawing.Font("Segoe UI", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.World)
|
||||
Me.lblExperimental.ForeColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer))
|
||||
Me.lblExperimental.Location = New System.Drawing.Point(3, 0)
|
||||
Me.lblExperimental.Name = "lblExperimental"
|
||||
Me.lblExperimental.Size = New System.Drawing.Size(596, 25)
|
||||
Me.lblExperimental.TabIndex = 11
|
||||
Me.lblExperimental.Text = "EXPERIMENTAL"
|
||||
Me.lblExperimental.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
|
||||
'
|
||||
'chkUseSQLServer
|
||||
'
|
||||
Me.chkUseSQLServer.AutoSize = True
|
||||
Me.chkUseSQLServer.Location = New System.Drawing.Point(3, 76)
|
||||
Me.chkUseSQLServer.Name = "chkUseSQLServer"
|
||||
Me.chkUseSQLServer.Size = New System.Drawing.Size(234, 17)
|
||||
Me.chkUseSQLServer.TabIndex = 13
|
||||
Me.chkUseSQLServer.Text = "Use SQL Server to load && save connections"
|
||||
Me.chkUseSQLServer.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblSQLUsername
|
||||
'
|
||||
Me.lblSQLUsername.Enabled = False
|
||||
Me.lblSQLUsername.Location = New System.Drawing.Point(23, 158)
|
||||
Me.lblSQLUsername.Name = "lblSQLUsername"
|
||||
Me.lblSQLUsername.Size = New System.Drawing.Size(111, 13)
|
||||
Me.lblSQLUsername.TabIndex = 18
|
||||
Me.lblSQLUsername.Text = "Username:"
|
||||
Me.lblSQLUsername.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'txtSQLPassword
|
||||
'
|
||||
Me.txtSQLPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtSQLPassword.Enabled = False
|
||||
Me.txtSQLPassword.Location = New System.Drawing.Point(140, 182)
|
||||
Me.txtSQLPassword.Name = "txtSQLPassword"
|
||||
Me.txtSQLPassword.Size = New System.Drawing.Size(153, 20)
|
||||
Me.txtSQLPassword.TabIndex = 21
|
||||
Me.txtSQLPassword.UseSystemPasswordChar = True
|
||||
'
|
||||
'lblSQLInfo
|
||||
'
|
||||
Me.lblSQLInfo.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.lblSQLInfo.Font = New System.Drawing.Font("Segoe UI", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.World)
|
||||
Me.lblSQLInfo.ForeColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer))
|
||||
Me.lblSQLInfo.Location = New System.Drawing.Point(3, 25)
|
||||
Me.lblSQLInfo.Name = "lblSQLInfo"
|
||||
Me.lblSQLInfo.Size = New System.Drawing.Size(596, 25)
|
||||
Me.lblSQLInfo.TabIndex = 12
|
||||
Me.lblSQLInfo.Text = "Please see Help - Getting started - SQL Configuration for more Info!"
|
||||
Me.lblSQLInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
|
||||
'
|
||||
'lblSQLServer
|
||||
'
|
||||
Me.lblSQLServer.Enabled = False
|
||||
Me.lblSQLServer.Location = New System.Drawing.Point(23, 106)
|
||||
Me.lblSQLServer.Name = "lblSQLServer"
|
||||
Me.lblSQLServer.Size = New System.Drawing.Size(111, 13)
|
||||
Me.lblSQLServer.TabIndex = 14
|
||||
Me.lblSQLServer.Text = "SQL Server:"
|
||||
Me.lblSQLServer.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'txtSQLUsername
|
||||
'
|
||||
Me.txtSQLUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtSQLUsername.Enabled = False
|
||||
Me.txtSQLUsername.Location = New System.Drawing.Point(140, 156)
|
||||
Me.txtSQLUsername.Name = "txtSQLUsername"
|
||||
Me.txtSQLUsername.Size = New System.Drawing.Size(153, 20)
|
||||
Me.txtSQLUsername.TabIndex = 19
|
||||
'
|
||||
'txtSQLServer
|
||||
'
|
||||
Me.txtSQLServer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtSQLServer.Enabled = False
|
||||
Me.txtSQLServer.Location = New System.Drawing.Point(140, 103)
|
||||
Me.txtSQLServer.Name = "txtSQLServer"
|
||||
Me.txtSQLServer.Size = New System.Drawing.Size(153, 20)
|
||||
Me.txtSQLServer.TabIndex = 15
|
||||
'
|
||||
'lblSQLPassword
|
||||
'
|
||||
Me.lblSQLPassword.Enabled = False
|
||||
Me.lblSQLPassword.Location = New System.Drawing.Point(23, 184)
|
||||
Me.lblSQLPassword.Name = "lblSQLPassword"
|
||||
Me.lblSQLPassword.Size = New System.Drawing.Size(111, 13)
|
||||
Me.lblSQLPassword.TabIndex = 20
|
||||
Me.lblSQLPassword.Text = "Password:"
|
||||
Me.lblSQLPassword.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'SqlServerPage
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(Me.lblSQLDatabaseName)
|
||||
Me.Controls.Add(Me.txtSQLDatabaseName)
|
||||
Me.Controls.Add(Me.lblExperimental)
|
||||
Me.Controls.Add(Me.chkUseSQLServer)
|
||||
Me.Controls.Add(Me.lblSQLUsername)
|
||||
Me.Controls.Add(Me.txtSQLPassword)
|
||||
Me.Controls.Add(Me.lblSQLInfo)
|
||||
Me.Controls.Add(Me.lblSQLServer)
|
||||
Me.Controls.Add(Me.txtSQLUsername)
|
||||
Me.Controls.Add(Me.txtSQLServer)
|
||||
Me.Controls.Add(Me.lblSQLPassword)
|
||||
Me.Name = "SqlServerPage"
|
||||
Me.PageIcon = CType(resources.GetObject("$this.PageIcon"), System.Drawing.Icon)
|
||||
Me.Size = New System.Drawing.Size(610, 489)
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents lblSQLDatabaseName As System.Windows.Forms.Label
|
||||
Friend WithEvents txtSQLDatabaseName As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblExperimental As System.Windows.Forms.Label
|
||||
Friend WithEvents chkUseSQLServer As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents lblSQLUsername As System.Windows.Forms.Label
|
||||
Friend WithEvents txtSQLPassword As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblSQLInfo As System.Windows.Forms.Label
|
||||
Friend WithEvents lblSQLServer As System.Windows.Forms.Label
|
||||
Friend WithEvents txtSQLUsername As System.Windows.Forms.TextBox
|
||||
Friend WithEvents txtSQLServer As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblSQLPassword As System.Windows.Forms.Label
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
145
mRemoteV1/Forms/OptionsPages/SqlServerPage.resx
Normal file
145
mRemoteV1/Forms/OptionsPages/SqlServerPage.resx
Normal file
@@ -0,0 +1,145 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAD///8A////AP///wD///8A////AP///wCZmZkNlZWVMZGRkS+MjIwH////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8Ao6OjIaGhoZ2fn5/woaGh/6urq/+np6f/lZWV/42NjeeJiYmKhoaGFv//
|
||||
/wD///8A////AP///wD///8Ap6enSqWlpfTOzs7/7e3t//T09P/19fX/9PT0/+/v7//i4uL/urq6/4qK
|
||||
iueGhoY1////AP///wD///8A////AKmpqere3t7/8/Pz/9vb2//S0tL/29vb/9bW1v/AwMD/ycnJ/+bm
|
||||
5v/ExMT/i4uL6v///wD///8A////AP///wCsrKzq8PDw/97e3v/U1NT/0tLS/9vb2//W1tb/v7+//7Cw
|
||||
sP+zs7P/3t7e/5CQkOr///8A////AP///wD///8Arq6u6vLy8v/i4uL/2NjY/9XV1f/c3Nz/2NjY/8DA
|
||||
wP+zs7P/t7e3/+Dg4P+Wlpbq////AP///wD///8A////ALCwsOrz8/P/5+fn/93d3f/Z2dn/4ODg/9vb
|
||||
2//ExMT/uLi4/7u7u//h4eH/m5ub6v///wD///8A////AP///wCysrLq9PT0/+rq6v/h4eH/3d3d/+Pj
|
||||
4//e3t7/ycnJ/729vf+/v7//4uLi/56enur///8A////AP///wD///8AtLS06vX19f/u7u7/5ubm/+Li
|
||||
4v/m5ub/4eHh/83Nzf/CwsL/wsLC/+Pj4/+goKDq////AP///wD///8A////ALW1ter29vb/6+vr/97e
|
||||
3v/W1tb/1dXV/9HR0f/Dw8P/vLy8/8DAwP/l5eX/o6Oj6v///wD///8A////AP///wC3t7fq9/f3/+fn
|
||||
5//v7+//9vb2//v7+//6+vr/8PDw/97e3v/Dw8P/5ubm/6Wlper///8A////AP///wD///8Aubm56vj4
|
||||
+P/+/v7/////////////////////////////////+/v7/+rq6v+np6fq////AP///wD///8A////ALq6
|
||||
ur/h4eH//v7+//////////////////////////////////v7+//Pz8//qampof///wD///8A////AP//
|
||||
/wC8vLwqu7u70dDQ0P/o6Oj/8/Pz//39/f/8/Pz/7e3t/+Dg4P/CwsL/ra2tw6ysrBv///8A////AP//
|
||||
/wD///8A////ALy8vAe7u7tVurq6rri4uNa3t7f7tra2+bS0tM2zs7OpsbGxRq+vrwP///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A/D+sQeAHrEHAA6xBwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQcAD
|
||||
rEHgB6xB//+sQQ==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
66
mRemoteV1/Forms/OptionsPages/SqlServerPage.vb
Normal file
66
mRemoteV1/Forms/OptionsPages/SqlServerPage.vb
Normal file
@@ -0,0 +1,66 @@
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.App
|
||||
Imports mRemoteNG.App.Info
|
||||
Imports mRemoteNG.Security
|
||||
|
||||
Namespace Forms.OptionsPages
|
||||
Public Class SqlServerPage
|
||||
Public Overrides Property PageName() As String
|
||||
Get
|
||||
Return Language.strSQLServer.TrimEnd(":")
|
||||
End Get
|
||||
Set(value As String)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Overrides Sub ApplyLanguage()
|
||||
MyBase.ApplyLanguage()
|
||||
|
||||
lblExperimental.Text = Language.strExperimental.ToUpper
|
||||
lblSQLInfo.Text = Language.strSQLInfo
|
||||
|
||||
chkUseSQLServer.Text = Language.strUseSQLServer
|
||||
lblSQLServer.Text = Language.strLabelHostname
|
||||
lblSQLDatabaseName.Text = Language.strLabelSQLServerDatabaseName
|
||||
lblSQLUsername.Text = Language.strLabelUsername
|
||||
lblSQLPassword.Text = Language.strLabelPassword
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub LoadSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
chkUseSQLServer.Checked = My.Settings.UseSQLServer
|
||||
txtSQLServer.Text = My.Settings.SQLHost
|
||||
txtSQLDatabaseName.Text = My.Settings.SQLDatabaseName
|
||||
txtSQLUsername.Text = My.Settings.SQLUser
|
||||
txtSQLPassword.Text = Crypt.Decrypt(My.Settings.SQLPass, General.EncryptionKey)
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub SaveSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
My.Settings.UseSQLServer = chkUseSQLServer.Checked
|
||||
My.Settings.SQLHost = txtSQLServer.Text
|
||||
My.Settings.SQLDatabaseName = txtSQLDatabaseName.Text
|
||||
My.Settings.SQLUser = txtSQLUsername.Text
|
||||
My.Settings.SQLPass = Crypt.Encrypt(txtSQLPassword.Text, General.EncryptionKey)
|
||||
|
||||
Runtime.Startup.DestroySQLUpdateHandlerAndStopTimer()
|
||||
frmMain.UsingSqlServer = My.Settings.UseSQLServer
|
||||
If My.Settings.UseSQLServer Then
|
||||
Runtime.Startup.CreateSQLUpdateHandlerAndStartTimer()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub chkUseSQLServer_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkUseSQLServer.CheckedChanged
|
||||
lblSQLServer.Enabled = chkUseSQLServer.Checked
|
||||
lblSQLDatabaseName.Enabled = chkUseSQLServer.Checked
|
||||
lblSQLUsername.Enabled = chkUseSQLServer.Checked
|
||||
lblSQLPassword.Enabled = chkUseSQLServer.Checked
|
||||
txtSQLServer.Enabled = chkUseSQLServer.Checked
|
||||
txtSQLDatabaseName.Enabled = chkUseSQLServer.Checked
|
||||
txtSQLUsername.Enabled = chkUseSQLServer.Checked
|
||||
txtSQLPassword.Enabled = chkUseSQLServer.Checked
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
94
mRemoteV1/Forms/OptionsPages/StartupExitPage.Designer.vb
generated
Normal file
94
mRemoteV1/Forms/OptionsPages/StartupExitPage.Designer.vb
generated
Normal file
@@ -0,0 +1,94 @@
|
||||
Namespace Forms.OptionsPages
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class StartupExitPage
|
||||
Inherits OptionsPage
|
||||
|
||||
'UserControl overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(StartupExitPage))
|
||||
Me.chkReconnectOnStart = New System.Windows.Forms.CheckBox()
|
||||
Me.chkSaveConsOnExit = New System.Windows.Forms.CheckBox()
|
||||
Me.chkSingleInstance = New System.Windows.Forms.CheckBox()
|
||||
Me.chkProperInstallationOfComponentsAtStartup = New System.Windows.Forms.CheckBox()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'chkReconnectOnStart
|
||||
'
|
||||
Me.chkReconnectOnStart.AutoSize = True
|
||||
Me.chkReconnectOnStart.Location = New System.Drawing.Point(3, 24)
|
||||
Me.chkReconnectOnStart.Name = "chkReconnectOnStart"
|
||||
Me.chkReconnectOnStart.Size = New System.Drawing.Size(273, 17)
|
||||
Me.chkReconnectOnStart.TabIndex = 7
|
||||
Me.chkReconnectOnStart.Text = "Reconnect to previously opened sessions on startup"
|
||||
Me.chkReconnectOnStart.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkSaveConsOnExit
|
||||
'
|
||||
Me.chkSaveConsOnExit.AutoSize = True
|
||||
Me.chkSaveConsOnExit.Location = New System.Drawing.Point(3, 0)
|
||||
Me.chkSaveConsOnExit.Name = "chkSaveConsOnExit"
|
||||
Me.chkSaveConsOnExit.Size = New System.Drawing.Size(146, 17)
|
||||
Me.chkSaveConsOnExit.TabIndex = 6
|
||||
Me.chkSaveConsOnExit.Text = "Save connections on exit"
|
||||
Me.chkSaveConsOnExit.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkSingleInstance
|
||||
'
|
||||
Me.chkSingleInstance.AutoSize = True
|
||||
Me.chkSingleInstance.Location = New System.Drawing.Point(3, 48)
|
||||
Me.chkSingleInstance.Name = "chkSingleInstance"
|
||||
Me.chkSingleInstance.Size = New System.Drawing.Size(366, 17)
|
||||
Me.chkSingleInstance.TabIndex = 8
|
||||
Me.chkSingleInstance.Text = "Allow only a single instance of the application (mRemote restart required)"
|
||||
Me.chkSingleInstance.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkProperInstallationOfComponentsAtStartup
|
||||
'
|
||||
Me.chkProperInstallationOfComponentsAtStartup.AutoSize = True
|
||||
Me.chkProperInstallationOfComponentsAtStartup.Location = New System.Drawing.Point(3, 72)
|
||||
Me.chkProperInstallationOfComponentsAtStartup.Name = "chkProperInstallationOfComponentsAtStartup"
|
||||
Me.chkProperInstallationOfComponentsAtStartup.Size = New System.Drawing.Size(262, 17)
|
||||
Me.chkProperInstallationOfComponentsAtStartup.TabIndex = 9
|
||||
Me.chkProperInstallationOfComponentsAtStartup.Text = "Check proper installation of components at startup"
|
||||
Me.chkProperInstallationOfComponentsAtStartup.UseVisualStyleBackColor = True
|
||||
'
|
||||
'StartupExitPage
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(Me.chkReconnectOnStart)
|
||||
Me.Controls.Add(Me.chkSaveConsOnExit)
|
||||
Me.Controls.Add(Me.chkSingleInstance)
|
||||
Me.Controls.Add(Me.chkProperInstallationOfComponentsAtStartup)
|
||||
Me.Name = "StartupExitPage"
|
||||
Me.PageIcon = CType(resources.GetObject("$this.PageIcon"), System.Drawing.Icon)
|
||||
Me.Size = New System.Drawing.Size(610, 489)
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents chkReconnectOnStart As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkSaveConsOnExit As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkSingleInstance As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkProperInstallationOfComponentsAtStartup As System.Windows.Forms.CheckBox
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
145
mRemoteV1/Forms/OptionsPages/StartupExitPage.resx
Normal file
145
mRemoteV1/Forms/OptionsPages/StartupExitPage.resx
Normal file
@@ -0,0 +1,145 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAeRUXA3seswB9IawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAALe3t/+cqJ7/EndS/zySdP8Oe1L/JGig/yFmnv8dY5v/GmGZ/xdfl/8UXJT/EVuT/2xs
|
||||
bP9sbGz/AAAAAAAAAAAAeRkdAH0fokGVeP+Cvqr/UKWC/zGXav80mW//OJlz/zydeP92qtL/dKjR/xVd
|
||||
lf8AAAAAAAAAAAAAAAAAeRsiAH0hpEilZrNtrJ//dLee/367rP9+u67/f7uw/4C8s/83mnv/VJXH/3er
|
||||
0/8ZYJj/AAAAAAAAAAAAAAAAAH8lsTygXLODwpizXKSR/2+2m/9ospv/arKe/2yzof+Fv7b/Pp6C/1mZ
|
||||
yf97rdT/HmSc/wAAAAAAAAAAAAAAAAGDLQsHhzWyRqVos3ayqP99vaf/h8G1/4bBtv+Hwbf/iMG5/0Si
|
||||
iP9enMv/f7DV/yNnn/8AAAAAAAAAAAAAAAAAAAAAEYs9CBePRbJPoIr/k8m6/1+vl/9EooP/RaOH/0ek
|
||||
i/9GqpL/VMLt/4G01/8oa6P/AAAAAAAAAAAAAAAAAAAAAAAAAAAflU8GNZR3/265nv9Jpon/ebHV/3Wt
|
||||
1P9xq9L/X7rk/xiZaf8njlj/KnCa/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFiOxP9SrIv/T6qP/361
|
||||
2P96stb/d6/V/3Os0/8kkGL/WaiE/xN4U/8AeRkbAAAAAAAAAAAAAAAAAAAAAAAAAABekcn/pMzk/4e7
|
||||
2/8/oXr/OZx0/zSacP8vlmr/S6OB/4TAq/9Clnn/AH0fogB5GR0AAAAAAAAAAAAAAAAAAAAAY5XN/6jP
|
||||
5f+Mv93/RaWB/43FuP+Jw7T/hsGx/4S/r/93uZ//bq2g/0ilZrMAfSGkAHkbIgAAAAAAAAAAAAAAAGeY
|
||||
0P+r0ef/kMLf/0ypiP+Rybv/drql/3K4of9utp7/crid/12lkv+DwpizPKBcswB/JbEAAAAAAAAAAAAA
|
||||
AABrm9P/rtTo/6vT6P9ZsZD/m87A/5nNvf+Wy7v/lcq5/4C/qP93s6n/RqVosweHNbIBgy0LAAAAAAAA
|
||||
AAAAAAAAbp3V/2yb0/9pmtL/SaGM/0Sfiv9BnYX/PZmA/1alkv9/uLH/UKGL/xePRbIRiz0IAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxn2OsWrOBsyiYV7MflU8GAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6NrrDGfZbMtnV8GAAAAAAAA
|
||||
AAAAAAAA4/+cQYABnEGAB5xBAAecQQAHnEEAB5xBgAecQcAHnEHgA5xB4AGcQeAAnEHgAJxB4ACcQeAB
|
||||
nEH/w5xB/8ecQQ==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
38
mRemoteV1/Forms/OptionsPages/StartupExitPage.vb
Normal file
38
mRemoteV1/Forms/OptionsPages/StartupExitPage.vb
Normal file
@@ -0,0 +1,38 @@
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Forms.OptionsPages
|
||||
Public Class StartupExitPage
|
||||
Public Overrides Property PageName() As String
|
||||
Get
|
||||
Return Language.strStartupExit
|
||||
End Get
|
||||
Set(value As String)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Overrides Sub ApplyLanguage()
|
||||
MyBase.ApplyLanguage()
|
||||
|
||||
chkSaveConsOnExit.Text = Language.strSaveConsOnExit
|
||||
chkReconnectOnStart.Text = Language.strReconnectAtStartup
|
||||
chkSingleInstance.Text = Language.strAllowOnlySingleInstance
|
||||
chkProperInstallationOfComponentsAtStartup.Text = Language.strCheckProperInstallationOfComponentsAtStartup
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub SaveSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
Settings.SaveConsOnExit = chkSaveConsOnExit.Checked
|
||||
Settings.OpenConsFromLastSession = chkReconnectOnStart.Checked
|
||||
Settings.SingleInstance = chkSingleInstance.Checked
|
||||
Settings.StartupComponentsCheck = chkProperInstallationOfComponentsAtStartup.Checked
|
||||
End Sub
|
||||
|
||||
Private Sub StartupExitPage_Load(sender As System.Object, e As EventArgs) Handles MyBase.Load
|
||||
chkSaveConsOnExit.Checked = Settings.SaveConsOnExit
|
||||
chkReconnectOnStart.Checked = Settings.OpenConsFromLastSession
|
||||
chkSingleInstance.Checked = Settings.SingleInstance
|
||||
chkProperInstallationOfComponentsAtStartup.Checked = Settings.StartupComponentsCheck
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
201
mRemoteV1/Forms/OptionsPages/TabsPanelsPage.Designer.vb
generated
Normal file
201
mRemoteV1/Forms/OptionsPages/TabsPanelsPage.Designer.vb
generated
Normal file
@@ -0,0 +1,201 @@
|
||||
Namespace Forms.OptionsPages
|
||||
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Public Class TabsPanelsPage
|
||||
Inherits OptionsPage
|
||||
|
||||
'UserControl overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(TabsPanelsPage))
|
||||
Me.chkAlwaysShowPanelTabs = New System.Windows.Forms.CheckBox()
|
||||
Me.chkIdentifyQuickConnectTabs = New System.Windows.Forms.CheckBox()
|
||||
Me.chkUseOnlyErrorsAndInfosPanel = New System.Windows.Forms.CheckBox()
|
||||
Me.chkOpenNewTabRightOfSelected = New System.Windows.Forms.CheckBox()
|
||||
Me.lblSwitchToErrorsAndInfos = New System.Windows.Forms.Label()
|
||||
Me.chkAlwaysShowPanelSelectionDlg = New System.Windows.Forms.CheckBox()
|
||||
Me.chkMCInformation = New System.Windows.Forms.CheckBox()
|
||||
Me.chkShowLogonInfoOnTabs = New System.Windows.Forms.CheckBox()
|
||||
Me.chkMCErrors = New System.Windows.Forms.CheckBox()
|
||||
Me.chkDoubleClickClosesTab = New System.Windows.Forms.CheckBox()
|
||||
Me.chkMCWarnings = New System.Windows.Forms.CheckBox()
|
||||
Me.chkShowProtocolOnTabs = New System.Windows.Forms.CheckBox()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'chkAlwaysShowPanelTabs
|
||||
'
|
||||
Me.chkAlwaysShowPanelTabs.AutoSize = True
|
||||
Me.chkAlwaysShowPanelTabs.Location = New System.Drawing.Point(3, 0)
|
||||
Me.chkAlwaysShowPanelTabs.Name = "chkAlwaysShowPanelTabs"
|
||||
Me.chkAlwaysShowPanelTabs.Size = New System.Drawing.Size(139, 17)
|
||||
Me.chkAlwaysShowPanelTabs.TabIndex = 12
|
||||
Me.chkAlwaysShowPanelTabs.Text = "Always show panel tabs"
|
||||
Me.chkAlwaysShowPanelTabs.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkIdentifyQuickConnectTabs
|
||||
'
|
||||
Me.chkIdentifyQuickConnectTabs.AutoSize = True
|
||||
Me.chkIdentifyQuickConnectTabs.Location = New System.Drawing.Point(3, 92)
|
||||
Me.chkIdentifyQuickConnectTabs.Name = "chkIdentifyQuickConnectTabs"
|
||||
Me.chkIdentifyQuickConnectTabs.Size = New System.Drawing.Size(293, 17)
|
||||
Me.chkIdentifyQuickConnectTabs.TabIndex = 16
|
||||
Me.chkIdentifyQuickConnectTabs.Text = Global.mRemoteNG.My.Language.strIdentifyQuickConnectTabs
|
||||
Me.chkIdentifyQuickConnectTabs.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkUseOnlyErrorsAndInfosPanel
|
||||
'
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.AutoSize = True
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Location = New System.Drawing.Point(3, 185)
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Name = "chkUseOnlyErrorsAndInfosPanel"
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Size = New System.Drawing.Size(278, 17)
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.TabIndex = 19
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Text = "Use only Notifications panel (no messagebox popups)"
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkOpenNewTabRightOfSelected
|
||||
'
|
||||
Me.chkOpenNewTabRightOfSelected.AutoSize = True
|
||||
Me.chkOpenNewTabRightOfSelected.Location = New System.Drawing.Point(3, 23)
|
||||
Me.chkOpenNewTabRightOfSelected.Name = "chkOpenNewTabRightOfSelected"
|
||||
Me.chkOpenNewTabRightOfSelected.Size = New System.Drawing.Size(280, 17)
|
||||
Me.chkOpenNewTabRightOfSelected.TabIndex = 13
|
||||
Me.chkOpenNewTabRightOfSelected.Text = "Open new tab to the right of the currently selected tab"
|
||||
Me.chkOpenNewTabRightOfSelected.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblSwitchToErrorsAndInfos
|
||||
'
|
||||
Me.lblSwitchToErrorsAndInfos.AutoSize = True
|
||||
Me.lblSwitchToErrorsAndInfos.Location = New System.Drawing.Point(3, 210)
|
||||
Me.lblSwitchToErrorsAndInfos.Name = "lblSwitchToErrorsAndInfos"
|
||||
Me.lblSwitchToErrorsAndInfos.Size = New System.Drawing.Size(159, 13)
|
||||
Me.lblSwitchToErrorsAndInfos.TabIndex = 20
|
||||
Me.lblSwitchToErrorsAndInfos.Text = "Switch to Notifications panel on:"
|
||||
'
|
||||
'chkAlwaysShowPanelSelectionDlg
|
||||
'
|
||||
Me.chkAlwaysShowPanelSelectionDlg.AutoSize = True
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Location = New System.Drawing.Point(3, 138)
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Name = "chkAlwaysShowPanelSelectionDlg"
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Size = New System.Drawing.Size(317, 17)
|
||||
Me.chkAlwaysShowPanelSelectionDlg.TabIndex = 18
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Text = "Always show panel selection dialog when opening connectins"
|
||||
Me.chkAlwaysShowPanelSelectionDlg.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkMCInformation
|
||||
'
|
||||
Me.chkMCInformation.AutoSize = True
|
||||
Me.chkMCInformation.Enabled = False
|
||||
Me.chkMCInformation.Location = New System.Drawing.Point(19, 230)
|
||||
Me.chkMCInformation.Name = "chkMCInformation"
|
||||
Me.chkMCInformation.Size = New System.Drawing.Size(83, 17)
|
||||
Me.chkMCInformation.TabIndex = 21
|
||||
Me.chkMCInformation.Text = "Informations"
|
||||
Me.chkMCInformation.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkShowLogonInfoOnTabs
|
||||
'
|
||||
Me.chkShowLogonInfoOnTabs.AutoSize = True
|
||||
Me.chkShowLogonInfoOnTabs.Location = New System.Drawing.Point(3, 46)
|
||||
Me.chkShowLogonInfoOnTabs.Name = "chkShowLogonInfoOnTabs"
|
||||
Me.chkShowLogonInfoOnTabs.Size = New System.Drawing.Size(203, 17)
|
||||
Me.chkShowLogonInfoOnTabs.TabIndex = 14
|
||||
Me.chkShowLogonInfoOnTabs.Text = "Show logon information on tab names"
|
||||
Me.chkShowLogonInfoOnTabs.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkMCErrors
|
||||
'
|
||||
Me.chkMCErrors.AutoSize = True
|
||||
Me.chkMCErrors.Enabled = False
|
||||
Me.chkMCErrors.Location = New System.Drawing.Point(19, 276)
|
||||
Me.chkMCErrors.Name = "chkMCErrors"
|
||||
Me.chkMCErrors.Size = New System.Drawing.Size(53, 17)
|
||||
Me.chkMCErrors.TabIndex = 23
|
||||
Me.chkMCErrors.Text = "Errors"
|
||||
Me.chkMCErrors.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkDoubleClickClosesTab
|
||||
'
|
||||
Me.chkDoubleClickClosesTab.AutoSize = True
|
||||
Me.chkDoubleClickClosesTab.Location = New System.Drawing.Point(3, 115)
|
||||
Me.chkDoubleClickClosesTab.Name = "chkDoubleClickClosesTab"
|
||||
Me.chkDoubleClickClosesTab.Size = New System.Drawing.Size(159, 17)
|
||||
Me.chkDoubleClickClosesTab.TabIndex = 17
|
||||
Me.chkDoubleClickClosesTab.Text = "Double click on tab closes it"
|
||||
Me.chkDoubleClickClosesTab.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkMCWarnings
|
||||
'
|
||||
Me.chkMCWarnings.AutoSize = True
|
||||
Me.chkMCWarnings.Enabled = False
|
||||
Me.chkMCWarnings.Location = New System.Drawing.Point(19, 253)
|
||||
Me.chkMCWarnings.Name = "chkMCWarnings"
|
||||
Me.chkMCWarnings.Size = New System.Drawing.Size(71, 17)
|
||||
Me.chkMCWarnings.TabIndex = 22
|
||||
Me.chkMCWarnings.Text = "Warnings"
|
||||
Me.chkMCWarnings.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkShowProtocolOnTabs
|
||||
'
|
||||
Me.chkShowProtocolOnTabs.AutoSize = True
|
||||
Me.chkShowProtocolOnTabs.Location = New System.Drawing.Point(3, 69)
|
||||
Me.chkShowProtocolOnTabs.Name = "chkShowProtocolOnTabs"
|
||||
Me.chkShowProtocolOnTabs.Size = New System.Drawing.Size(166, 17)
|
||||
Me.chkShowProtocolOnTabs.TabIndex = 15
|
||||
Me.chkShowProtocolOnTabs.Text = "Show protocols on tab names"
|
||||
Me.chkShowProtocolOnTabs.UseVisualStyleBackColor = True
|
||||
'
|
||||
'TabsPanelsPage
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(Me.chkAlwaysShowPanelTabs)
|
||||
Me.Controls.Add(Me.chkIdentifyQuickConnectTabs)
|
||||
Me.Controls.Add(Me.chkUseOnlyErrorsAndInfosPanel)
|
||||
Me.Controls.Add(Me.chkOpenNewTabRightOfSelected)
|
||||
Me.Controls.Add(Me.lblSwitchToErrorsAndInfos)
|
||||
Me.Controls.Add(Me.chkAlwaysShowPanelSelectionDlg)
|
||||
Me.Controls.Add(Me.chkMCInformation)
|
||||
Me.Controls.Add(Me.chkShowLogonInfoOnTabs)
|
||||
Me.Controls.Add(Me.chkMCErrors)
|
||||
Me.Controls.Add(Me.chkDoubleClickClosesTab)
|
||||
Me.Controls.Add(Me.chkMCWarnings)
|
||||
Me.Controls.Add(Me.chkShowProtocolOnTabs)
|
||||
Me.Name = "TabsPanelsPage"
|
||||
Me.PageIcon = CType(resources.GetObject("$this.PageIcon"), System.Drawing.Icon)
|
||||
Me.Size = New System.Drawing.Size(610, 489)
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents chkAlwaysShowPanelTabs As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkIdentifyQuickConnectTabs As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkUseOnlyErrorsAndInfosPanel As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkOpenNewTabRightOfSelected As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents lblSwitchToErrorsAndInfos As System.Windows.Forms.Label
|
||||
Friend WithEvents chkAlwaysShowPanelSelectionDlg As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkMCInformation As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkShowLogonInfoOnTabs As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkMCErrors As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkDoubleClickClosesTab As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkMCWarnings As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkShowProtocolOnTabs As System.Windows.Forms.CheckBox
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
145
mRemoteV1/Forms/OptionsPages/TabsPanelsPage.resx
Normal file
145
mRemoteV1/Forms/OptionsPages/TabsPanelsPage.resx
Normal file
@@ -0,0 +1,145 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAnZ2d/52dnf+dnZ3/nZ2d/52dnf+dnZ3/nZ2d/52dnf+dnZ3/nZ2d/52d
|
||||
nf+dnZ3/nZ2d/52dnf+dnZ3/nZ2d/52dnf+6vb3/5uzs/+bt7f/n7e3/6O7u/+nv7//p7+//6u/v/+rw
|
||||
8P/r8PD/6/Hx/+zx8f/s8fH/vb+//52dnf8AAAAAnZ2d6tvi4v/Nz8//y8vL/8zMzP/Ozs7/z8/P/9DQ
|
||||
0P/S0tL/09PT/9XV1f/X2Nj/5+zs/52dnfcAAAAAAAAAAJ2dnerZ4eH/y8zM/8fHx//IyMj/ysrK/8vL
|
||||
y//Nzc3/zs7O/9DQ0P/R0dH/09TU/+Xr6/+dnZ33AAAAAAAAAACdnZ3q19/f/8fJyf/CwsL/xMTE/8XF
|
||||
xf/IyMj/ycnJ/8rKyv/MzMz/zc3N/9DR0f/j6ur/nZ2d9wAAAAAAAAAAnZ2d6tbf3//DxcX/wMDA/8DA
|
||||
wP/CwsL/w8PD/8TExP/FxcX/yMjI/8nJyf/Nzc3/4Ojo/52dnfcAAAAAAAAAAJ2dndbHzc3/2+Tk/9vk
|
||||
5P/b5eX/3OXl/9zl5f/d5ub/3ebm/97n5//f6Oj/4Ojo/83T0/+dnZ3jAAAAAAAAAACdnZ1DnZ2dyJ2d
|
||||
nf+dnZ3/nZ2d/52dnf+dnZ3/nZ2d/52dnf+dnZ3/nZ2d/52dnf+dnZ3dnZ2dTgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA//+cQf//nEH//5xB//+cQQAAnEEAAJxBgAGcQYABnEGAAZxBgAGcQYABnEGAAZxB//+cQf//
|
||||
nEH//5xB//+cQQ==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
73
mRemoteV1/Forms/OptionsPages/TabsPanelsPage.vb
Normal file
73
mRemoteV1/Forms/OptionsPages/TabsPanelsPage.vb
Normal file
@@ -0,0 +1,73 @@
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Forms.OptionsPages
|
||||
Public Class TabsPanelsPage
|
||||
Public Overrides Property PageName() As String
|
||||
Get
|
||||
Return Language.strTabsAndPanels.Replace("&&", "&")
|
||||
End Get
|
||||
Set(value As String)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Overrides Sub ApplyLanguage()
|
||||
MyBase.ApplyLanguage()
|
||||
|
||||
chkAlwaysShowPanelTabs.Text = Language.strAlwaysShowPanelTabs
|
||||
chkOpenNewTabRightOfSelected.Text = Language.strOpenNewTabRight
|
||||
chkShowLogonInfoOnTabs.Text = Language.strShowLogonInfoOnTabs
|
||||
chkShowProtocolOnTabs.Text = Language.strShowProtocolOnTabs
|
||||
chkIdentifyQuickConnectTabs.Text = Language.strIdentifyQuickConnectTabs
|
||||
chkDoubleClickClosesTab.Text = Language.strDoubleClickTabClosesIt
|
||||
chkAlwaysShowPanelSelectionDlg.Text = Language.strAlwaysShowPanelSelection
|
||||
|
||||
chkUseOnlyErrorsAndInfosPanel.Text = Language.strUseOnlyErrorsAndInfosPanel
|
||||
lblSwitchToErrorsAndInfos.Text = Language.strSwitchToErrorsAndInfos
|
||||
chkMCInformation.Text = Language.strInformations
|
||||
chkMCWarnings.Text = Language.strWarnings
|
||||
chkMCErrors.Text = Language.strErrors
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub LoadSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
chkAlwaysShowPanelTabs.Checked = Settings.AlwaysShowPanelTabs
|
||||
chkOpenNewTabRightOfSelected.Checked = Settings.OpenTabsRightOfSelected
|
||||
chkShowLogonInfoOnTabs.Checked = Settings.ShowLogonInfoOnTabs
|
||||
chkShowProtocolOnTabs.Checked = Settings.ShowProtocolOnTabs
|
||||
chkIdentifyQuickConnectTabs.Checked = Settings.IdentifyQuickConnectTabs
|
||||
chkDoubleClickClosesTab.Checked = Settings.DoubleClickOnTabClosesIt
|
||||
chkAlwaysShowPanelSelectionDlg.Checked = Settings.AlwaysShowPanelSelectionDlg
|
||||
|
||||
chkUseOnlyErrorsAndInfosPanel.Checked = Settings.ShowNoMessageBoxes
|
||||
chkMCInformation.Checked = Settings.SwitchToMCOnInformation
|
||||
chkMCWarnings.Checked = Settings.SwitchToMCOnWarning
|
||||
chkMCErrors.Checked = Settings.SwitchToMCOnError
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub SaveSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
Settings.AlwaysShowPanelTabs = chkAlwaysShowPanelTabs.Checked
|
||||
frmMain.ShowHidePanelTabs()
|
||||
|
||||
Settings.OpenTabsRightOfSelected = chkOpenNewTabRightOfSelected.Checked
|
||||
Settings.ShowLogonInfoOnTabs = chkShowLogonInfoOnTabs.Checked
|
||||
Settings.ShowProtocolOnTabs = chkShowProtocolOnTabs.Checked
|
||||
Settings.IdentifyQuickConnectTabs = chkIdentifyQuickConnectTabs.Checked
|
||||
Settings.DoubleClickOnTabClosesIt = chkDoubleClickClosesTab.Checked
|
||||
Settings.AlwaysShowPanelSelectionDlg = chkAlwaysShowPanelSelectionDlg.Checked
|
||||
|
||||
Settings.ShowNoMessageBoxes = chkUseOnlyErrorsAndInfosPanel.Checked
|
||||
Settings.SwitchToMCOnInformation = chkMCInformation.Checked
|
||||
Settings.SwitchToMCOnWarning = chkMCWarnings.Checked
|
||||
Settings.SwitchToMCOnError = chkMCErrors.Checked
|
||||
End Sub
|
||||
|
||||
Private Sub chkUseOnlyErrorsAndInfosPanel_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkUseOnlyErrorsAndInfosPanel.CheckedChanged
|
||||
chkMCInformation.Enabled = chkUseOnlyErrorsAndInfosPanel.Checked
|
||||
chkMCWarnings.Enabled = chkUseOnlyErrorsAndInfosPanel.Checked
|
||||
chkMCErrors.Enabled = chkUseOnlyErrorsAndInfosPanel.Checked
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
90
mRemoteV1/Forms/OptionsPages/ThemePage.Designer.vb
generated
Normal file
90
mRemoteV1/Forms/OptionsPages/ThemePage.Designer.vb
generated
Normal file
@@ -0,0 +1,90 @@
|
||||
Namespace Forms.OptionsPages
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class ThemePage
|
||||
Inherits OptionsPage
|
||||
|
||||
'UserControl overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ThemePage))
|
||||
Me.btnThemeDelete = New System.Windows.Forms.Button()
|
||||
Me.btnThemeNew = New System.Windows.Forms.Button()
|
||||
Me.cboTheme = New System.Windows.Forms.ComboBox()
|
||||
Me.ThemePropertyGrid = New System.Windows.Forms.PropertyGrid()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'btnThemeDelete
|
||||
'
|
||||
Me.btnThemeDelete.Location = New System.Drawing.Point(535, 0)
|
||||
Me.btnThemeDelete.Name = "btnThemeDelete"
|
||||
Me.btnThemeDelete.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnThemeDelete.TabIndex = 6
|
||||
Me.btnThemeDelete.Text = "&Delete"
|
||||
Me.btnThemeDelete.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnThemeNew
|
||||
'
|
||||
Me.btnThemeNew.Location = New System.Drawing.Point(454, 0)
|
||||
Me.btnThemeNew.Name = "btnThemeNew"
|
||||
Me.btnThemeNew.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnThemeNew.TabIndex = 5
|
||||
Me.btnThemeNew.Text = "&New"
|
||||
Me.btnThemeNew.UseVisualStyleBackColor = True
|
||||
'
|
||||
'cboTheme
|
||||
'
|
||||
Me.cboTheme.FormattingEnabled = True
|
||||
Me.cboTheme.Location = New System.Drawing.Point(3, 1)
|
||||
Me.cboTheme.Name = "cboTheme"
|
||||
Me.cboTheme.Size = New System.Drawing.Size(445, 21)
|
||||
Me.cboTheme.TabIndex = 4
|
||||
'
|
||||
'ThemePropertyGrid
|
||||
'
|
||||
Me.ThemePropertyGrid.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.ThemePropertyGrid.Location = New System.Drawing.Point(3, 29)
|
||||
Me.ThemePropertyGrid.Name = "ThemePropertyGrid"
|
||||
Me.ThemePropertyGrid.Size = New System.Drawing.Size(607, 460)
|
||||
Me.ThemePropertyGrid.TabIndex = 7
|
||||
Me.ThemePropertyGrid.UseCompatibleTextRendering = True
|
||||
'
|
||||
'ThemePage
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(Me.btnThemeDelete)
|
||||
Me.Controls.Add(Me.btnThemeNew)
|
||||
Me.Controls.Add(Me.cboTheme)
|
||||
Me.Controls.Add(Me.ThemePropertyGrid)
|
||||
Me.Name = "ThemePage"
|
||||
Me.PageIcon = CType(resources.GetObject("$this.PageIcon"), System.Drawing.Icon)
|
||||
Me.Size = New System.Drawing.Size(610, 489)
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
Friend WithEvents btnThemeDelete As System.Windows.Forms.Button
|
||||
Friend WithEvents btnThemeNew As System.Windows.Forms.Button
|
||||
Friend WithEvents cboTheme As System.Windows.Forms.ComboBox
|
||||
Friend WithEvents ThemePropertyGrid As System.Windows.Forms.PropertyGrid
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
145
mRemoteV1/Forms/OptionsPages/ThemePage.resx
Normal file
145
mRemoteV1/Forms/OptionsPages/ThemePage.resx
Normal file
@@ -0,0 +1,145 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGaichxkn/MZYp3PFmCakBNemDMAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGyoMCRqpfyGreH/fqjc/1+Syf8wcqv/FF+ZsRNd
|
||||
ly0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxvrKttndH/mbzr/3Gg4/+Wuer/lLjq/2CT
|
||||
yv8VX5n8E12XeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADV2sy0xc7D8nb/s/2mc4v9bk9//WJHf/1+U
|
||||
4P+VuOr/hq3h/0mDu/8TXpiQAAAAAAAAAABFgb9CQX68hD58ubc6ebfzdqTX/6HC7f+fwO3/nb/t/3Sj
|
||||
5P9akt//WJDe/3un5v+Stuj/Q3+3/xRfmVpOh8eTZJfP/3uo2f+NtOL/o8Tt/6fH7v9kl83/NHWy/1+T
|
||||
yf+fwO3/eJaj/56WSP98lJH/jbPp/3ml2P8YYZzYUorL9q7N8P+wz/D/mL/s/36u5/+qyu//PXu4/wAA
|
||||
AAA1drP/osPt/6iXMf/EtVr/rJcm/1uT3/+Yu+v/HGSf/1eNzt6oye3/hKft/1hq7f9qjun/rc3w/22d
|
||||
0v8+fLn/Z5nO/6XF7v+Vmmn/rZcm/52XTf9mm+L/mLvq/yFnovZbkNGckrnl/2509v+BhPX/QEDw/5C7
|
||||
6/+uzfD/rMzw/6rK8P+Fsun/XqnB/0Szjf9WqLb/cKHk/5e66P8laqbtX5PVM1yR0vySpPX/WVr2/1GG
|
||||
9P87pvv/XKvy/36v5/97ref/eKrm/z+2gP9gyJf/O7d6/32s5/+PteP/Km6q1QAAAABgk9WHhq/h/7nX
|
||||
8/8ypv7/bL///yuj//9mvvD/Os77/1q+8f9Ss6D/O7d5/0ezkP+nyO7/d6XW/y9xrpwAAAAAY5bYBmGU
|
||||
1p+FruH/WrL5/yuj//9Aqfv/MNP+/2zi//8r1f//f7Do/3yt5/+pyu//pcXt/zd3tfw0dbIwAAAAAAAA
|
||||
AAAAAAAAYZXXdV+T1faOtuP/udfz/13V+/8q1f//QdH7/7PS8v+x0PH/krji/2KVzP89e7iKAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABildceYJPVrnaj3P+RuOT/qMrs/6XH7P+NteL/aJrS/0mDwttFgb9OAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhlNZCXpLUkFuQ0dJYjs/PVIzMmVGJykUAAAAAAAAAAAAA
|
||||
AAAAAAAA//+cQfwfnEH4B5xB+AOcQfABnEGAAJxBAACcQQEAnEEAAJxBAACcQQAAnEGAAJxBgACcQeAB
|
||||
nEHwA5xB/A+cQQ==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
100
mRemoteV1/Forms/OptionsPages/ThemePage.vb
Normal file
100
mRemoteV1/Forms/OptionsPages/ThemePage.vb
Normal file
@@ -0,0 +1,100 @@
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.Themes
|
||||
|
||||
Namespace Forms.OptionsPages
|
||||
Public Class ThemePage
|
||||
Public Overrides Property PageName() As String
|
||||
Get
|
||||
Return Language.strOptionsTabTheme
|
||||
End Get
|
||||
Set(value As String)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Overrides Sub ApplyLanguage()
|
||||
MyBase.ApplyLanguage()
|
||||
|
||||
btnThemeDelete.Text = Language.strOptionsThemeButtonDelete
|
||||
btnThemeNew.Text = Language.strOptionsThemeButtonNew
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub LoadSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
_themeList = New BindingList(Of ThemeInfo)(ThemeManager.LoadThemes())
|
||||
cboTheme.DataSource = _themeList
|
||||
cboTheme.SelectedItem = ThemeManager.ActiveTheme
|
||||
cboTheme_SelectionChangeCommitted(Me, New EventArgs())
|
||||
|
||||
ThemePropertyGrid.PropertySort = PropertySort.Categorized
|
||||
|
||||
_originalTheme = ThemeManager.ActiveTheme
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub SaveSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
ThemeManager.SaveThemes(_themeList)
|
||||
Settings.ThemeName = ThemeManager.ActiveTheme.Name
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub RevertSettings()
|
||||
ThemeManager.ActiveTheme = _originalTheme
|
||||
End Sub
|
||||
|
||||
#Region "Private Fields"
|
||||
Private _themeList As BindingList(Of ThemeInfo)
|
||||
Private _originalTheme As ThemeInfo
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
#Region "Event Handlers"
|
||||
Private Sub cboTheme_DropDown(ByVal sender As Object, ByVal e As EventArgs) Handles cboTheme.DropDown
|
||||
If ThemeManager.ActiveTheme Is ThemeManager.DefaultTheme Then Return
|
||||
ThemeManager.ActiveTheme.Name = cboTheme.Text
|
||||
End Sub
|
||||
|
||||
Private Sub cboTheme_SelectionChangeCommitted(ByVal sender As Object, ByVal e As EventArgs) Handles cboTheme.SelectionChangeCommitted
|
||||
If cboTheme.SelectedItem Is Nothing Then cboTheme.SelectedItem = ThemeManager.DefaultTheme
|
||||
|
||||
If cboTheme.SelectedItem Is ThemeManager.DefaultTheme Then
|
||||
cboTheme.DropDownStyle = ComboBoxStyle.DropDownList
|
||||
btnThemeDelete.Enabled = False
|
||||
ThemePropertyGrid.Enabled = False
|
||||
Else
|
||||
cboTheme.DropDownStyle = ComboBoxStyle.DropDown
|
||||
btnThemeDelete.Enabled = True
|
||||
ThemePropertyGrid.Enabled = True
|
||||
End If
|
||||
|
||||
ThemeManager.ActiveTheme = cboTheme.SelectedItem
|
||||
ThemePropertyGrid.SelectedObject = ThemeManager.ActiveTheme
|
||||
ThemePropertyGrid.Refresh()
|
||||
End Sub
|
||||
|
||||
Private Sub btnThemeNew_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnThemeNew.Click
|
||||
Dim newTheme As ThemeInfo = ThemeManager.ActiveTheme.Clone()
|
||||
newTheme.Name = Language.strUnnamedTheme
|
||||
|
||||
_themeList.Add(newTheme)
|
||||
|
||||
cboTheme.SelectedItem = newTheme
|
||||
cboTheme_SelectionChangeCommitted(Me, New EventArgs())
|
||||
|
||||
cboTheme.Focus()
|
||||
End Sub
|
||||
|
||||
Private Sub btnThemeDelete_Click(sender As Object, e As EventArgs) Handles btnThemeDelete.Click
|
||||
Dim theme As ThemeInfo = cboTheme.SelectedItem
|
||||
If theme Is Nothing Then Return
|
||||
|
||||
_themeList.Remove(theme)
|
||||
|
||||
cboTheme.SelectedItem = ThemeManager.DefaultTheme
|
||||
cboTheme_SelectionChangeCommitted(Me, New EventArgs())
|
||||
End Sub
|
||||
#End Region
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
281
mRemoteV1/Forms/OptionsPages/UpdatesPage.Designer.vb
generated
Normal file
281
mRemoteV1/Forms/OptionsPages/UpdatesPage.Designer.vb
generated
Normal file
@@ -0,0 +1,281 @@
|
||||
Namespace Forms.OptionsPages
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class UpdatesPage
|
||||
Inherits OptionsPage
|
||||
|
||||
'UserControl overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(UpdatesPage))
|
||||
Me.lblUpdatesExplanation = New System.Windows.Forms.Label()
|
||||
Me.pnlUpdateCheck = New System.Windows.Forms.Panel()
|
||||
Me.btnUpdateCheckNow = New System.Windows.Forms.Button()
|
||||
Me.chkCheckForUpdatesOnStartup = New System.Windows.Forms.CheckBox()
|
||||
Me.cboUpdateCheckFrequency = New System.Windows.Forms.ComboBox()
|
||||
Me.pnlProxy = New System.Windows.Forms.Panel()
|
||||
Me.pnlProxyBasic = New System.Windows.Forms.Panel()
|
||||
Me.lblProxyAddress = New System.Windows.Forms.Label()
|
||||
Me.txtProxyAddress = New System.Windows.Forms.TextBox()
|
||||
Me.lblProxyPort = New System.Windows.Forms.Label()
|
||||
Me.numProxyPort = New System.Windows.Forms.NumericUpDown()
|
||||
Me.chkUseProxyForAutomaticUpdates = New System.Windows.Forms.CheckBox()
|
||||
Me.chkUseProxyAuthentication = New System.Windows.Forms.CheckBox()
|
||||
Me.pnlProxyAuthentication = New System.Windows.Forms.Panel()
|
||||
Me.lblProxyUsername = New System.Windows.Forms.Label()
|
||||
Me.txtProxyUsername = New System.Windows.Forms.TextBox()
|
||||
Me.lblProxyPassword = New System.Windows.Forms.Label()
|
||||
Me.txtProxyPassword = New System.Windows.Forms.TextBox()
|
||||
Me.btnTestProxy = New System.Windows.Forms.Button()
|
||||
Me.pnlUpdateCheck.SuspendLayout()
|
||||
Me.pnlProxy.SuspendLayout()
|
||||
Me.pnlProxyBasic.SuspendLayout()
|
||||
CType(Me.numProxyPort, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.pnlProxyAuthentication.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'lblUpdatesExplanation
|
||||
'
|
||||
Me.lblUpdatesExplanation.Location = New System.Drawing.Point(3, 0)
|
||||
Me.lblUpdatesExplanation.Name = "lblUpdatesExplanation"
|
||||
Me.lblUpdatesExplanation.Size = New System.Drawing.Size(536, 40)
|
||||
Me.lblUpdatesExplanation.TabIndex = 3
|
||||
Me.lblUpdatesExplanation.Text = "mRemoteNG can periodically connect to the mRemoteNG website to check for updates " & _
|
||||
"and product announcements."
|
||||
'
|
||||
'pnlUpdateCheck
|
||||
'
|
||||
Me.pnlUpdateCheck.Controls.Add(Me.btnUpdateCheckNow)
|
||||
Me.pnlUpdateCheck.Controls.Add(Me.chkCheckForUpdatesOnStartup)
|
||||
Me.pnlUpdateCheck.Controls.Add(Me.cboUpdateCheckFrequency)
|
||||
Me.pnlUpdateCheck.Location = New System.Drawing.Point(0, 48)
|
||||
Me.pnlUpdateCheck.Name = "pnlUpdateCheck"
|
||||
Me.pnlUpdateCheck.Size = New System.Drawing.Size(610, 120)
|
||||
Me.pnlUpdateCheck.TabIndex = 4
|
||||
'
|
||||
'btnUpdateCheckNow
|
||||
'
|
||||
Me.btnUpdateCheckNow.Location = New System.Drawing.Point(3, 80)
|
||||
Me.btnUpdateCheckNow.Name = "btnUpdateCheckNow"
|
||||
Me.btnUpdateCheckNow.Size = New System.Drawing.Size(120, 32)
|
||||
Me.btnUpdateCheckNow.TabIndex = 2
|
||||
Me.btnUpdateCheckNow.Text = "Check Now"
|
||||
Me.btnUpdateCheckNow.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkCheckForUpdatesOnStartup
|
||||
'
|
||||
Me.chkCheckForUpdatesOnStartup.AutoSize = True
|
||||
Me.chkCheckForUpdatesOnStartup.Location = New System.Drawing.Point(3, 8)
|
||||
Me.chkCheckForUpdatesOnStartup.Name = "chkCheckForUpdatesOnStartup"
|
||||
Me.chkCheckForUpdatesOnStartup.Size = New System.Drawing.Size(213, 17)
|
||||
Me.chkCheckForUpdatesOnStartup.TabIndex = 0
|
||||
Me.chkCheckForUpdatesOnStartup.Text = "Check for updates and announcements"
|
||||
Me.chkCheckForUpdatesOnStartup.UseVisualStyleBackColor = True
|
||||
'
|
||||
'cboUpdateCheckFrequency
|
||||
'
|
||||
Me.cboUpdateCheckFrequency.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.cboUpdateCheckFrequency.FormattingEnabled = True
|
||||
Me.cboUpdateCheckFrequency.Location = New System.Drawing.Point(48, 40)
|
||||
Me.cboUpdateCheckFrequency.Name = "cboUpdateCheckFrequency"
|
||||
Me.cboUpdateCheckFrequency.Size = New System.Drawing.Size(128, 21)
|
||||
Me.cboUpdateCheckFrequency.TabIndex = 1
|
||||
'
|
||||
'pnlProxy
|
||||
'
|
||||
Me.pnlProxy.Controls.Add(Me.pnlProxyBasic)
|
||||
Me.pnlProxy.Controls.Add(Me.chkUseProxyForAutomaticUpdates)
|
||||
Me.pnlProxy.Controls.Add(Me.chkUseProxyAuthentication)
|
||||
Me.pnlProxy.Controls.Add(Me.pnlProxyAuthentication)
|
||||
Me.pnlProxy.Controls.Add(Me.btnTestProxy)
|
||||
Me.pnlProxy.Location = New System.Drawing.Point(0, 200)
|
||||
Me.pnlProxy.Name = "pnlProxy"
|
||||
Me.pnlProxy.Size = New System.Drawing.Size(610, 224)
|
||||
Me.pnlProxy.TabIndex = 5
|
||||
'
|
||||
'pnlProxyBasic
|
||||
'
|
||||
Me.pnlProxyBasic.Controls.Add(Me.lblProxyAddress)
|
||||
Me.pnlProxyBasic.Controls.Add(Me.txtProxyAddress)
|
||||
Me.pnlProxyBasic.Controls.Add(Me.lblProxyPort)
|
||||
Me.pnlProxyBasic.Controls.Add(Me.numProxyPort)
|
||||
Me.pnlProxyBasic.Enabled = False
|
||||
Me.pnlProxyBasic.Location = New System.Drawing.Point(3, 32)
|
||||
Me.pnlProxyBasic.Name = "pnlProxyBasic"
|
||||
Me.pnlProxyBasic.Size = New System.Drawing.Size(604, 40)
|
||||
Me.pnlProxyBasic.TabIndex = 1
|
||||
'
|
||||
'lblProxyAddress
|
||||
'
|
||||
Me.lblProxyAddress.Location = New System.Drawing.Point(8, 4)
|
||||
Me.lblProxyAddress.Name = "lblProxyAddress"
|
||||
Me.lblProxyAddress.Size = New System.Drawing.Size(96, 24)
|
||||
Me.lblProxyAddress.TabIndex = 0
|
||||
Me.lblProxyAddress.Text = "Address:"
|
||||
Me.lblProxyAddress.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'txtProxyAddress
|
||||
'
|
||||
Me.txtProxyAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtProxyAddress.Location = New System.Drawing.Point(104, 8)
|
||||
Me.txtProxyAddress.Name = "txtProxyAddress"
|
||||
Me.txtProxyAddress.Size = New System.Drawing.Size(240, 20)
|
||||
Me.txtProxyAddress.TabIndex = 1
|
||||
'
|
||||
'lblProxyPort
|
||||
'
|
||||
Me.lblProxyPort.Location = New System.Drawing.Point(350, 5)
|
||||
Me.lblProxyPort.Name = "lblProxyPort"
|
||||
Me.lblProxyPort.Size = New System.Drawing.Size(64, 23)
|
||||
Me.lblProxyPort.TabIndex = 2
|
||||
Me.lblProxyPort.Text = "Port:"
|
||||
Me.lblProxyPort.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'numProxyPort
|
||||
'
|
||||
Me.numProxyPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.numProxyPort.Location = New System.Drawing.Point(420, 8)
|
||||
Me.numProxyPort.Maximum = New Decimal(New Integer() {65535, 0, 0, 0})
|
||||
Me.numProxyPort.Minimum = New Decimal(New Integer() {1, 0, 0, 0})
|
||||
Me.numProxyPort.Name = "numProxyPort"
|
||||
Me.numProxyPort.Size = New System.Drawing.Size(64, 20)
|
||||
Me.numProxyPort.TabIndex = 3
|
||||
Me.numProxyPort.Value = New Decimal(New Integer() {80, 0, 0, 0})
|
||||
'
|
||||
'chkUseProxyForAutomaticUpdates
|
||||
'
|
||||
Me.chkUseProxyForAutomaticUpdates.AutoSize = True
|
||||
Me.chkUseProxyForAutomaticUpdates.Location = New System.Drawing.Point(3, 8)
|
||||
Me.chkUseProxyForAutomaticUpdates.Name = "chkUseProxyForAutomaticUpdates"
|
||||
Me.chkUseProxyForAutomaticUpdates.Size = New System.Drawing.Size(168, 17)
|
||||
Me.chkUseProxyForAutomaticUpdates.TabIndex = 0
|
||||
Me.chkUseProxyForAutomaticUpdates.Text = "Use a proxy server to connect"
|
||||
Me.chkUseProxyForAutomaticUpdates.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkUseProxyAuthentication
|
||||
'
|
||||
Me.chkUseProxyAuthentication.AutoSize = True
|
||||
Me.chkUseProxyAuthentication.Enabled = False
|
||||
Me.chkUseProxyAuthentication.Location = New System.Drawing.Point(27, 80)
|
||||
Me.chkUseProxyAuthentication.Name = "chkUseProxyAuthentication"
|
||||
Me.chkUseProxyAuthentication.Size = New System.Drawing.Size(216, 17)
|
||||
Me.chkUseProxyAuthentication.TabIndex = 2
|
||||
Me.chkUseProxyAuthentication.Text = "This proxy server requires authentication"
|
||||
Me.chkUseProxyAuthentication.UseVisualStyleBackColor = True
|
||||
'
|
||||
'pnlProxyAuthentication
|
||||
'
|
||||
Me.pnlProxyAuthentication.Controls.Add(Me.lblProxyUsername)
|
||||
Me.pnlProxyAuthentication.Controls.Add(Me.txtProxyUsername)
|
||||
Me.pnlProxyAuthentication.Controls.Add(Me.lblProxyPassword)
|
||||
Me.pnlProxyAuthentication.Controls.Add(Me.txtProxyPassword)
|
||||
Me.pnlProxyAuthentication.Enabled = False
|
||||
Me.pnlProxyAuthentication.Location = New System.Drawing.Point(3, 104)
|
||||
Me.pnlProxyAuthentication.Name = "pnlProxyAuthentication"
|
||||
Me.pnlProxyAuthentication.Size = New System.Drawing.Size(604, 72)
|
||||
Me.pnlProxyAuthentication.TabIndex = 3
|
||||
'
|
||||
'lblProxyUsername
|
||||
'
|
||||
Me.lblProxyUsername.Location = New System.Drawing.Point(8, 4)
|
||||
Me.lblProxyUsername.Name = "lblProxyUsername"
|
||||
Me.lblProxyUsername.Size = New System.Drawing.Size(96, 24)
|
||||
Me.lblProxyUsername.TabIndex = 0
|
||||
Me.lblProxyUsername.Text = "Username:"
|
||||
Me.lblProxyUsername.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'txtProxyUsername
|
||||
'
|
||||
Me.txtProxyUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtProxyUsername.Location = New System.Drawing.Point(104, 8)
|
||||
Me.txtProxyUsername.Name = "txtProxyUsername"
|
||||
Me.txtProxyUsername.Size = New System.Drawing.Size(240, 20)
|
||||
Me.txtProxyUsername.TabIndex = 1
|
||||
'
|
||||
'lblProxyPassword
|
||||
'
|
||||
Me.lblProxyPassword.Location = New System.Drawing.Point(8, 36)
|
||||
Me.lblProxyPassword.Name = "lblProxyPassword"
|
||||
Me.lblProxyPassword.Size = New System.Drawing.Size(96, 24)
|
||||
Me.lblProxyPassword.TabIndex = 2
|
||||
Me.lblProxyPassword.Text = "Password:"
|
||||
Me.lblProxyPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'txtProxyPassword
|
||||
'
|
||||
Me.txtProxyPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtProxyPassword.Location = New System.Drawing.Point(104, 40)
|
||||
Me.txtProxyPassword.Name = "txtProxyPassword"
|
||||
Me.txtProxyPassword.Size = New System.Drawing.Size(240, 20)
|
||||
Me.txtProxyPassword.TabIndex = 3
|
||||
Me.txtProxyPassword.UseSystemPasswordChar = True
|
||||
'
|
||||
'btnTestProxy
|
||||
'
|
||||
Me.btnTestProxy.Location = New System.Drawing.Point(3, 184)
|
||||
Me.btnTestProxy.Name = "btnTestProxy"
|
||||
Me.btnTestProxy.Size = New System.Drawing.Size(120, 32)
|
||||
Me.btnTestProxy.TabIndex = 4
|
||||
Me.btnTestProxy.Text = "Test Proxy"
|
||||
Me.btnTestProxy.UseVisualStyleBackColor = True
|
||||
'
|
||||
'UpdatesPage
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(Me.lblUpdatesExplanation)
|
||||
Me.Controls.Add(Me.pnlUpdateCheck)
|
||||
Me.Controls.Add(Me.pnlProxy)
|
||||
Me.Name = "UpdatesPage"
|
||||
Me.PageIcon = CType(resources.GetObject("$this.PageIcon"), System.Drawing.Icon)
|
||||
Me.Size = New System.Drawing.Size(610, 489)
|
||||
Me.pnlUpdateCheck.ResumeLayout(False)
|
||||
Me.pnlUpdateCheck.PerformLayout()
|
||||
Me.pnlProxy.ResumeLayout(False)
|
||||
Me.pnlProxy.PerformLayout()
|
||||
Me.pnlProxyBasic.ResumeLayout(False)
|
||||
Me.pnlProxyBasic.PerformLayout()
|
||||
CType(Me.numProxyPort, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.pnlProxyAuthentication.ResumeLayout(False)
|
||||
Me.pnlProxyAuthentication.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
Friend WithEvents lblUpdatesExplanation As System.Windows.Forms.Label
|
||||
Friend WithEvents pnlUpdateCheck As System.Windows.Forms.Panel
|
||||
Friend WithEvents btnUpdateCheckNow As System.Windows.Forms.Button
|
||||
Friend WithEvents chkCheckForUpdatesOnStartup As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents cboUpdateCheckFrequency As System.Windows.Forms.ComboBox
|
||||
Friend WithEvents pnlProxy As System.Windows.Forms.Panel
|
||||
Friend WithEvents pnlProxyBasic As System.Windows.Forms.Panel
|
||||
Friend WithEvents lblProxyAddress As System.Windows.Forms.Label
|
||||
Friend WithEvents txtProxyAddress As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblProxyPort As System.Windows.Forms.Label
|
||||
Friend WithEvents numProxyPort As System.Windows.Forms.NumericUpDown
|
||||
Friend WithEvents chkUseProxyForAutomaticUpdates As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkUseProxyAuthentication As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents pnlProxyAuthentication As System.Windows.Forms.Panel
|
||||
Friend WithEvents lblProxyUsername As System.Windows.Forms.Label
|
||||
Friend WithEvents txtProxyUsername As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblProxyPassword As System.Windows.Forms.Label
|
||||
Friend WithEvents txtProxyPassword As System.Windows.Forms.TextBox
|
||||
Friend WithEvents btnTestProxy As System.Windows.Forms.Button
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
145
mRemoteV1/Forms/OptionsPages/UpdatesPage.resx
Normal file
145
mRemoteV1/Forms/OptionsPages/UpdatesPage.resx
Normal file
@@ -0,0 +1,145 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACjo6O3n5+f/5qamv+Wlpb/kZGR/42Njf+JiYn/hISE/4CAgP98fHz/eHh4/3R0dP9xcXH/bW1t/2pq
|
||||
av9nZ2e3qKio/+np6f/T09P/0tLS/9HR0f/Q0ND/zs7O/83Nzf/Nzc3/y8vL/8vLy//Kysr/ycnJ/8jI
|
||||
yP/i4uL/ampq/62trf/W1tb/urq6/7i4uP+1tbX/s7Oz/7Gxsf+wsLD/ra2t/6urq/+qqqr/qKio/6en
|
||||
p/+mpqb/yMjI/25ubv+xsbH/2dnZ/729vf+6urr/uLi4/7a2tv+1tbX/s7Oz/7CwsP+vr6//ra2t/6ur
|
||||
q/+pqan/qKio/8rKyv9ycnL/tra2/93d3f/BwcH/vb29/7y8vP+6urr/uLi4/7W1tf+0tLT/srKy/7Cw
|
||||
sP+tra3/rKys/6ysrP/Pz8//dnZ2/7q6ur3a2tr/yMjI/8DAwP+/v7//vb29/7q6uv+4uLj/t7e3/7W1
|
||||
tf+zs7P/sLCw/6+vr/+zs7P/wsLC/3t7e72+vr694+Pj/+fn5//h4eH/4ODg/+Dg4P/f39//39/f/97e
|
||||
3v/d3d3/3d3d/9zc3P/b29v/4ODg/9DQ0P9/f3+9w8PDP87Ozv/s7Oz/3t7e/9jY2P/S0tL/zMzM/8jI
|
||||
yP/Hx8f/yMjI/8vLy//Q0ND/3d3d/+jo6P+kpKT/hISEQgAAAADDw8O94+Pj/9vb2//i4uL/t9C4/2St
|
||||
aP92qmT/cK9o/1alYv+sxaz/wsLC/9HR0f/T09P/jY2NvQAAAAAAAAAAyMjIP9HR0f/z8/P/x97K/2TJ
|
||||
hf+z3KT/58d8/9y/c/92zI//T61o/7jQuP/x8fH/r6+v/5KSkkIAAAAAAAAAAAAAAADIyMi9xMTE/3bO
|
||||
i/+Z5Kv/sMVd/+q1SP/hojn/pZ1A/4LFj/9Jmlb/oKCg/5ubm70AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACI46n8oumV/9bPaf/is0f/0btP/8KuQv+CvWz/Xbh4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAj+Ws/KLwn//Y7a//3sVo/7TiZf9g5zn/a9dr/2i8gPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAG7Xh9zI99T/2PbK/+fjqf/bz2z/r9xo/53qq/9OrF/gAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABbw2hFkuau+tv46f/n8tj/7eWz/9/Zpv+F1I/7QqNOUAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFvDaEdz2IrZmuKl/Jvdmvxw0n/dUbddUAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAACcQQAAnEEAAJxBAACcQQAAnEEAAJxBAACcQQAAnEGAAZxBgAGcQcADnEHwD5xB8A+cQfAP
|
||||
nEHwD5xB+B+cQQ==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
192
mRemoteV1/Forms/OptionsPages/UpdatesPage.vb
Normal file
192
mRemoteV1/Forms/OptionsPages/UpdatesPage.vb
Normal file
@@ -0,0 +1,192 @@
|
||||
Imports System.ComponentModel
|
||||
Imports mRemoteNG.My
|
||||
Imports mRemoteNG.App
|
||||
Imports mRemoteNG.App.Info
|
||||
Imports mRemoteNG.Security
|
||||
Imports mRemoteNG.Tools
|
||||
Imports mRemoteNG.UI.Window
|
||||
Imports PSTaskDialog
|
||||
|
||||
Namespace Forms.OptionsPages
|
||||
Public Class UpdatesPage
|
||||
#Region "Public Methods"
|
||||
Public Overrides Property PageName() As String
|
||||
Get
|
||||
Return Language.strTabUpdates
|
||||
End Get
|
||||
Set(value As String)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Overrides Sub ApplyLanguage()
|
||||
MyBase.ApplyLanguage()
|
||||
|
||||
#If Not PORTABLE Then
|
||||
lblUpdatesExplanation.Text = Language.strUpdateCheck
|
||||
#Else
|
||||
lblUpdatesExplanation.Text = Language.strUpdateCheckPortableEdition
|
||||
#End If
|
||||
|
||||
chkCheckForUpdatesOnStartup.Text = Language.strCheckForUpdatesOnStartup
|
||||
btnUpdateCheckNow.Text = Language.strCheckNow
|
||||
|
||||
chkUseProxyForAutomaticUpdates.Text = Language.strCheckboxUpdateUseProxy
|
||||
lblProxyAddress.Text = Language.strLabelAddress
|
||||
lblProxyPort.Text = Language.strLabelPort
|
||||
|
||||
chkUseProxyAuthentication.Text = Language.strCheckboxProxyAuthentication
|
||||
lblProxyUsername.Text = Language.strLabelUsername
|
||||
lblProxyPassword.Text = Language.strLabelPassword
|
||||
|
||||
btnTestProxy.Text = Language.strButtonTestProxy
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub LoadSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
chkCheckForUpdatesOnStartup.Checked = My.Settings.CheckForUpdatesOnStartup
|
||||
cboUpdateCheckFrequency.Enabled = chkCheckForUpdatesOnStartup.Checked
|
||||
cboUpdateCheckFrequency.Items.Clear()
|
||||
Dim nDaily As Integer = cboUpdateCheckFrequency.Items.Add(Language.strUpdateFrequencyDaily)
|
||||
Dim nWeekly As Integer = cboUpdateCheckFrequency.Items.Add(Language.strUpdateFrequencyWeekly)
|
||||
Dim nMonthly As Integer = cboUpdateCheckFrequency.Items.Add(Language.strUpdateFrequencyMonthly)
|
||||
Select Case My.Settings.CheckForUpdatesFrequencyDays
|
||||
Case Is < 1
|
||||
chkCheckForUpdatesOnStartup.Checked = False
|
||||
cboUpdateCheckFrequency.SelectedIndex = nDaily
|
||||
Case 1 ' Daily
|
||||
cboUpdateCheckFrequency.SelectedIndex = nDaily
|
||||
Case 7 ' Weekly
|
||||
cboUpdateCheckFrequency.SelectedIndex = nWeekly
|
||||
Case 31 ' Monthly
|
||||
cboUpdateCheckFrequency.SelectedIndex = nMonthly
|
||||
Case Else
|
||||
Dim nCustom As Integer = cboUpdateCheckFrequency.Items.Add(String.Format(Language.strUpdateFrequencyCustom, My.Settings.CheckForUpdatesFrequencyDays))
|
||||
cboUpdateCheckFrequency.SelectedIndex = nCustom
|
||||
End Select
|
||||
|
||||
chkUseProxyForAutomaticUpdates.Checked = My.Settings.UpdateUseProxy
|
||||
pnlProxyBasic.Enabled = My.Settings.UpdateUseProxy
|
||||
txtProxyAddress.Text = My.Settings.UpdateProxyAddress
|
||||
numProxyPort.Value = My.Settings.UpdateProxyPort
|
||||
|
||||
chkUseProxyAuthentication.Checked = My.Settings.UpdateProxyUseAuthentication
|
||||
pnlProxyAuthentication.Enabled = My.Settings.UpdateProxyUseAuthentication
|
||||
txtProxyUsername.Text = My.Settings.UpdateProxyAuthUser
|
||||
txtProxyPassword.Text = Crypt.Decrypt(My.Settings.UpdateProxyAuthPass, General.EncryptionKey)
|
||||
|
||||
btnTestProxy.Enabled = My.Settings.UpdateUseProxy
|
||||
|
||||
#If PORTABLE Then
|
||||
For Each Control As Control In Controls
|
||||
If Control IsNot lblUpdatesExplanation Then
|
||||
Control.Visible = False
|
||||
End If
|
||||
Next
|
||||
#End If
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub SaveSettings()
|
||||
MyBase.SaveSettings()
|
||||
|
||||
My.Settings.CheckForUpdatesOnStartup = chkCheckForUpdatesOnStartup.Checked
|
||||
Select Case cboUpdateCheckFrequency.SelectedItem.ToString()
|
||||
Case Language.strUpdateFrequencyDaily
|
||||
My.Settings.CheckForUpdatesFrequencyDays = 1
|
||||
Case Language.strUpdateFrequencyWeekly
|
||||
My.Settings.CheckForUpdatesFrequencyDays = 7
|
||||
Case Language.strUpdateFrequencyMonthly
|
||||
My.Settings.CheckForUpdatesFrequencyDays = 31
|
||||
End Select
|
||||
|
||||
My.Settings.UpdateUseProxy = chkUseProxyForAutomaticUpdates.Checked
|
||||
My.Settings.UpdateProxyAddress = txtProxyAddress.Text
|
||||
My.Settings.UpdateProxyPort = numProxyPort.Value
|
||||
|
||||
My.Settings.UpdateProxyUseAuthentication = chkUseProxyAuthentication.Checked
|
||||
My.Settings.UpdateProxyAuthUser = txtProxyUsername.Text
|
||||
My.Settings.UpdateProxyAuthPass = Crypt.Encrypt(txtProxyPassword.Text, General.EncryptionKey)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Fields"
|
||||
Private _appUpdate As App.Update
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
#Region "Event Handlers"
|
||||
Private Sub chkCheckForUpdatesOnStartup_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkCheckForUpdatesOnStartup.CheckedChanged
|
||||
cboUpdateCheckFrequency.Enabled = chkCheckForUpdatesOnStartup.Checked
|
||||
End Sub
|
||||
|
||||
Private Sub btnUpdateCheckNow_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnUpdateCheckNow.Click
|
||||
Runtime.Windows.Show(Type.Update)
|
||||
End Sub
|
||||
|
||||
Private Sub chkUseProxyForAutomaticUpdates_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkUseProxyForAutomaticUpdates.CheckedChanged
|
||||
pnlProxyBasic.Enabled = chkUseProxyForAutomaticUpdates.Checked
|
||||
btnTestProxy.Enabled = chkUseProxyForAutomaticUpdates.Checked
|
||||
|
||||
If chkUseProxyForAutomaticUpdates.Checked Then
|
||||
chkUseProxyAuthentication.Enabled = True
|
||||
|
||||
If chkUseProxyAuthentication.Checked Then
|
||||
pnlProxyAuthentication.Enabled = True
|
||||
End If
|
||||
Else
|
||||
chkUseProxyAuthentication.Enabled = False
|
||||
pnlProxyAuthentication.Enabled = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub btnTestProxy_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnTestProxy.Click
|
||||
If _appUpdate IsNot Nothing Then
|
||||
If _appUpdate.IsGetUpdateInfoRunning Then Return
|
||||
End If
|
||||
|
||||
_appUpdate = New App.Update
|
||||
_appUpdate.SetProxySettings(chkUseProxyForAutomaticUpdates.Checked, txtProxyAddress.Text, numProxyPort.Value, chkUseProxyAuthentication.Checked, txtProxyUsername.Text, txtProxyPassword.Text)
|
||||
|
||||
btnTestProxy.Enabled = False
|
||||
btnTestProxy.Text = Language.strOptionsProxyTesting
|
||||
|
||||
AddHandler _appUpdate.GetUpdateInfoCompletedEvent, AddressOf GetUpdateInfoCompleted
|
||||
|
||||
_appUpdate.GetUpdateInfoAsync()
|
||||
End Sub
|
||||
|
||||
Private Sub chkUseProxyAuthentication_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkUseProxyAuthentication.CheckedChanged
|
||||
If chkUseProxyForAutomaticUpdates.Checked Then
|
||||
If chkUseProxyAuthentication.Checked Then
|
||||
pnlProxyAuthentication.Enabled = True
|
||||
Else
|
||||
pnlProxyAuthentication.Enabled = False
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
Private Sub GetUpdateInfoCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
|
||||
If InvokeRequired Then
|
||||
Dim myDelegate As New AsyncCompletedEventHandler(AddressOf GetUpdateInfoCompleted)
|
||||
Invoke(myDelegate, New Object() {sender, e})
|
||||
Return
|
||||
End If
|
||||
|
||||
Try
|
||||
RemoveHandler _appUpdate.GetUpdateInfoCompletedEvent, AddressOf GetUpdateInfoCompleted
|
||||
|
||||
btnTestProxy.Enabled = True
|
||||
btnTestProxy.Text = Language.strButtonTestProxy
|
||||
|
||||
If e.Cancelled Then Return
|
||||
If e.Error IsNot Nothing Then Throw e.Error
|
||||
|
||||
cTaskDialog.ShowCommandBox(Me, Application.Info.ProductName, Language.strProxyTestSucceeded, "", Language.strButtonOK, False)
|
||||
Catch ex As Exception
|
||||
cTaskDialog.ShowCommandBox(Me, Application.Info.ProductName, Language.strProxyTestFailed, Misc.GetExceptionMessageRecursive(ex), "", "", "", Language.strButtonOK, False, eSysIcons.Error, 0)
|
||||
End Try
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
159
mRemoteV1/Forms/PasswordForm.Designer.vb
generated
Normal file
159
mRemoteV1/Forms/PasswordForm.Designer.vb
generated
Normal file
@@ -0,0 +1,159 @@
|
||||
Namespace Forms
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class PasswordForm
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.lblPassword = New System.Windows.Forms.Label()
|
||||
Me.lblVerify = New System.Windows.Forms.Label()
|
||||
Me.btnOK = New System.Windows.Forms.Button()
|
||||
Me.btnCancel = New System.Windows.Forms.Button()
|
||||
Me.lblStatus = New System.Windows.Forms.Label()
|
||||
Me.pbLock = New System.Windows.Forms.PictureBox()
|
||||
Me.txtVerify = New mRemoteNG.Controls.TextBox()
|
||||
Me.txtPassword = New mRemoteNG.Controls.TextBox()
|
||||
CType(Me.pbLock, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'lblPassword
|
||||
'
|
||||
Me.lblPassword.AutoSize = True
|
||||
Me.lblPassword.Location = New System.Drawing.Point(82, 12)
|
||||
Me.lblPassword.Name = "lblPassword"
|
||||
Me.lblPassword.Size = New System.Drawing.Size(56, 13)
|
||||
Me.lblPassword.TabIndex = 1
|
||||
Me.lblPassword.Text = "Password:"
|
||||
'
|
||||
'lblVerify
|
||||
'
|
||||
Me.lblVerify.AutoSize = True
|
||||
Me.lblVerify.Location = New System.Drawing.Point(82, 51)
|
||||
Me.lblVerify.Name = "lblVerify"
|
||||
Me.lblVerify.Size = New System.Drawing.Size(36, 13)
|
||||
Me.lblVerify.TabIndex = 3
|
||||
Me.lblVerify.Text = "Verify:"
|
||||
'
|
||||
'btnOK
|
||||
'
|
||||
Me.btnOK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnOK.Location = New System.Drawing.Point(291, 119)
|
||||
Me.btnOK.Name = "btnOK"
|
||||
Me.btnOK.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnOK.TabIndex = 7
|
||||
Me.btnOK.Text = Global.mRemoteNG.My.Language.strButtonOK
|
||||
Me.btnOK.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnCancel
|
||||
'
|
||||
Me.btnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
||||
Me.btnCancel.Location = New System.Drawing.Point(210, 119)
|
||||
Me.btnCancel.Name = "btnCancel"
|
||||
Me.btnCancel.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnCancel.TabIndex = 6
|
||||
Me.btnCancel.Text = Global.mRemoteNG.My.Language.strButtonCancel
|
||||
Me.btnCancel.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblStatus
|
||||
'
|
||||
Me.lblStatus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.lblStatus.ForeColor = System.Drawing.Color.Red
|
||||
Me.lblStatus.Location = New System.Drawing.Point(85, 90)
|
||||
Me.lblStatus.Name = "lblStatus"
|
||||
Me.lblStatus.Size = New System.Drawing.Size(281, 13)
|
||||
Me.lblStatus.TabIndex = 5
|
||||
Me.lblStatus.Text = "Status"
|
||||
Me.lblStatus.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
Me.lblStatus.Visible = False
|
||||
'
|
||||
'pbLock
|
||||
'
|
||||
Me.pbLock.Image = Global.mRemoteNG.My.Resources.Resources.Lock
|
||||
Me.pbLock.Location = New System.Drawing.Point(12, 12)
|
||||
Me.pbLock.Name = "pbLock"
|
||||
Me.pbLock.Size = New System.Drawing.Size(64, 64)
|
||||
Me.pbLock.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
|
||||
Me.pbLock.TabIndex = 7
|
||||
Me.pbLock.TabStop = False
|
||||
'
|
||||
'txtVerify
|
||||
'
|
||||
Me.txtVerify.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.txtVerify.Location = New System.Drawing.Point(85, 67)
|
||||
Me.txtVerify.Name = "txtVerify"
|
||||
Me.txtVerify.SelectAllOnFocus = True
|
||||
Me.txtVerify.Size = New System.Drawing.Size(281, 20)
|
||||
Me.txtVerify.TabIndex = 4
|
||||
Me.txtVerify.UseSystemPasswordChar = True
|
||||
'
|
||||
'txtPassword
|
||||
'
|
||||
Me.txtPassword.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.txtPassword.Location = New System.Drawing.Point(85, 28)
|
||||
Me.txtPassword.Name = "txtPassword"
|
||||
Me.txtPassword.SelectAllOnFocus = True
|
||||
Me.txtPassword.Size = New System.Drawing.Size(281, 20)
|
||||
Me.txtPassword.TabIndex = 2
|
||||
Me.txtPassword.UseSystemPasswordChar = True
|
||||
'
|
||||
'frmPassword
|
||||
'
|
||||
Me.AcceptButton = Me.btnOK
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.CancelButton = Me.btnCancel
|
||||
Me.ClientSize = New System.Drawing.Size(378, 154)
|
||||
Me.ControlBox = False
|
||||
Me.Controls.Add(Me.pbLock)
|
||||
Me.Controls.Add(Me.txtVerify)
|
||||
Me.Controls.Add(Me.txtPassword)
|
||||
Me.Controls.Add(Me.lblStatus)
|
||||
Me.Controls.Add(Me.lblVerify)
|
||||
Me.Controls.Add(Me.lblPassword)
|
||||
Me.Controls.Add(Me.btnCancel)
|
||||
Me.Controls.Add(Me.btnOK)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "PasswordForm"
|
||||
Me.ShowIcon = False
|
||||
Me.ShowInTaskbar = False
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
|
||||
Me.Text = "Password"
|
||||
CType(Me.pbLock, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Private WithEvents txtPassword As Controls.TextBox
|
||||
Private WithEvents txtVerify As Controls.TextBox
|
||||
Private WithEvents lblPassword As System.Windows.Forms.Label
|
||||
Private WithEvents lblVerify As System.Windows.Forms.Label
|
||||
Private WithEvents btnOK As System.Windows.Forms.Button
|
||||
Private WithEvents btnCancel As System.Windows.Forms.Button
|
||||
Private WithEvents lblStatus As System.Windows.Forms.Label
|
||||
Private WithEvents pbLock As System.Windows.Forms.PictureBox
|
||||
End Class
|
||||
End Namespace
|
||||
102
mRemoteV1/Forms/PasswordForm.vb
Normal file
102
mRemoteV1/Forms/PasswordForm.vb
Normal file
@@ -0,0 +1,102 @@
|
||||
Imports mRemoteNG.My
|
||||
|
||||
Namespace Forms
|
||||
Public Class PasswordForm
|
||||
#Region "Public Properties"
|
||||
Public Property Verify As Boolean = True
|
||||
|
||||
Public ReadOnly Property Password As String
|
||||
Get
|
||||
If Verify Then
|
||||
Return txtVerify.Text
|
||||
Else
|
||||
Return txtPassword.Text
|
||||
End If
|
||||
End Get
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
|
||||
#Region "Constructors"
|
||||
Public Sub New(Optional ByVal passwordName As String = Nothing, Optional ByVal verify As Boolean = True)
|
||||
' This call is required by the designer.
|
||||
InitializeComponent()
|
||||
|
||||
' Add any initialization after the InitializeComponent() call.
|
||||
_passwordName = passwordName
|
||||
Me.Verify = verify
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Event Handlers"
|
||||
Private Sub frmPassword_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
|
||||
ApplyLanguage()
|
||||
|
||||
If Not Verify Then
|
||||
Height = Height - (txtVerify.Top - txtPassword.Top)
|
||||
lblVerify.Visible = False
|
||||
txtVerify.Visible = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnCancel.Click
|
||||
DialogResult = DialogResult.Cancel
|
||||
End Sub
|
||||
|
||||
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnOK.Click
|
||||
If Verify Then
|
||||
If VerifyPassword() Then DialogResult = DialogResult.OK
|
||||
Else
|
||||
DialogResult = DialogResult.OK
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub txtPassword_TextChanged(sender As System.Object, e As EventArgs) Handles txtPassword.TextChanged, txtVerify.TextChanged
|
||||
HideStatus()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Fields"
|
||||
Private ReadOnly _passwordName As String
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Sub ApplyLanguage()
|
||||
If String.IsNullOrEmpty(_passwordName) Then
|
||||
Text = Language.strTitlePassword
|
||||
Else
|
||||
Text = String.Format(Language.strTitlePasswordWithName, _passwordName)
|
||||
End If
|
||||
|
||||
lblPassword.Text = Language.strLabelPassword
|
||||
lblVerify.Text = Language.strLabelVerify
|
||||
|
||||
btnCancel.Text = Language.strButtonCancel
|
||||
btnOK.Text = Language.strButtonOK
|
||||
End Sub
|
||||
|
||||
Private Function VerifyPassword() As Boolean
|
||||
If txtPassword.Text.Length >= 3 Then
|
||||
If txtPassword.Text = txtVerify.Text Then
|
||||
Return True
|
||||
Else
|
||||
ShowStatus(Language.strPasswordStatusMustMatch)
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
ShowStatus(Language.strPasswordStatusTooShort)
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Sub ShowStatus(ByVal status As String)
|
||||
lblStatus.Visible = True
|
||||
lblStatus.Text = status
|
||||
End Sub
|
||||
|
||||
Private Sub HideStatus()
|
||||
lblStatus.Visible = False
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
524
mRemoteV1/Forms/frmMain.Designer.vb
generated
524
mRemoteV1/Forms/frmMain.Designer.vb
generated
@@ -22,111 +22,111 @@ Partial Class frmMain
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container
|
||||
Dim DockPanelSkin1 As WeifenLuo.WinFormsUI.Docking.DockPanelSkin = New WeifenLuo.WinFormsUI.Docking.DockPanelSkin
|
||||
Dim AutoHideStripSkin1 As WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin = New WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin
|
||||
Dim DockPanelGradient1 As WeifenLuo.WinFormsUI.Docking.DockPanelGradient = New WeifenLuo.WinFormsUI.Docking.DockPanelGradient
|
||||
Dim TabGradient1 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient
|
||||
Dim DockPaneStripSkin1 As WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin = New WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin
|
||||
Dim DockPaneStripGradient1 As WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient = New WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient
|
||||
Dim TabGradient2 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient
|
||||
Dim DockPanelGradient2 As WeifenLuo.WinFormsUI.Docking.DockPanelGradient = New WeifenLuo.WinFormsUI.Docking.DockPanelGradient
|
||||
Dim TabGradient3 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient
|
||||
Dim DockPaneStripToolWindowGradient1 As WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient = New WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient
|
||||
Dim TabGradient4 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient
|
||||
Dim TabGradient5 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient
|
||||
Dim DockPanelGradient3 As WeifenLuo.WinFormsUI.Docking.DockPanelGradient = New WeifenLuo.WinFormsUI.Docking.DockPanelGradient
|
||||
Dim TabGradient6 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient
|
||||
Dim TabGradient7 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim DockPanelSkin2 As WeifenLuo.WinFormsUI.Docking.DockPanelSkin = New WeifenLuo.WinFormsUI.Docking.DockPanelSkin()
|
||||
Dim AutoHideStripSkin2 As WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin = New WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin()
|
||||
Dim DockPanelGradient4 As WeifenLuo.WinFormsUI.Docking.DockPanelGradient = New WeifenLuo.WinFormsUI.Docking.DockPanelGradient()
|
||||
Dim TabGradient8 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient()
|
||||
Dim DockPaneStripSkin2 As WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin = New WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin()
|
||||
Dim DockPaneStripGradient2 As WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient = New WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient()
|
||||
Dim TabGradient9 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient()
|
||||
Dim DockPanelGradient5 As WeifenLuo.WinFormsUI.Docking.DockPanelGradient = New WeifenLuo.WinFormsUI.Docking.DockPanelGradient()
|
||||
Dim TabGradient10 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient()
|
||||
Dim DockPaneStripToolWindowGradient2 As WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient = New WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient()
|
||||
Dim TabGradient11 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient()
|
||||
Dim TabGradient12 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient()
|
||||
Dim DockPanelGradient6 As WeifenLuo.WinFormsUI.Docking.DockPanelGradient = New WeifenLuo.WinFormsUI.Docking.DockPanelGradient()
|
||||
Dim TabGradient13 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient()
|
||||
Dim TabGradient14 As WeifenLuo.WinFormsUI.Docking.TabGradient = New WeifenLuo.WinFormsUI.Docking.TabGradient()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain))
|
||||
Me.pnlDock = New WeifenLuo.WinFormsUI.Docking.DockPanel
|
||||
Me.msMain = New System.Windows.Forms.MenuStrip
|
||||
Me.mMenFile = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileNewConnection = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileNewFolder = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileSep1 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenFileNew = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileLoad = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileSave = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileSaveAs = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileSep2 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenFileImportExport = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.ImportFromXMLFileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.ImportFromRDPFileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.ImportFromActiveDirectoryToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.ImportFromPortScanToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.ExportToXMLFileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileSep3 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenFileDelete = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileRename = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileDuplicate = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenFileSep4 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenFileExit = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenView = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewAddConnectionPanel = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewConnectionPanels = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewSep1 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenViewConnections = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewConfig = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewSessions = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewErrorsAndInfos = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewScreenshotManager = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenViewJumpTo = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewJumpToConnectionsConfig = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewJumpToSessionsScreenshots = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewJumpToErrorsInfos = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewResetLayout = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewSep2 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenViewQuickConnectToolbar = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewExtAppsToolbar = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewSep3 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenViewFullscreen = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenTools = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenToolsSSHTransfer = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenToolsUVNCSC = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenToolsExternalApps = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenToolsPortScan = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenToolsSep1 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenToolsComponentsCheck = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenToolsOptions = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenInfo = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenInfoHelp = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenInfoSep1 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenInfoWebsite = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenInfoDonate = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenInfoForum = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenInfoBugReport = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenInfoAnnouncements = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenToolsUpdate = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenInfoSep2 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.mMenInfoAbout = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenSep3 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.lblQuickConnect = New System.Windows.Forms.ToolStripLabel
|
||||
Me.cmbQuickConnect = New System.Windows.Forms.ToolStripComboBox
|
||||
Me.tsContainer = New System.Windows.Forms.ToolStripContainer
|
||||
Me.tsExternalTools = New System.Windows.Forms.ToolStrip
|
||||
Me.pnlDock = New WeifenLuo.WinFormsUI.Docking.DockPanel()
|
||||
Me.msMain = New System.Windows.Forms.MenuStrip()
|
||||
Me.mMenFile = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileNewConnection = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileNewFolder = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileSep1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenFileNew = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileLoad = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileSave = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileSaveAs = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileSep2 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenFileImport = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileImportFromFile = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileImportFromActiveDirectory = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileImportFromPortScan = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileExport = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileSep3 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenFileDelete = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileRename = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileDuplicate = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenFileSep4 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenFileExit = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenView = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewAddConnectionPanel = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewConnectionPanels = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewSep1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenViewConnections = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewConfig = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewSessions = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewErrorsAndInfos = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewScreenshotManager = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenViewJumpTo = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewJumpToConnectionsConfig = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewJumpToSessionsScreenshots = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewJumpToErrorsInfos = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewResetLayout = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewSep2 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenViewQuickConnectToolbar = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewExtAppsToolbar = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewSep3 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenViewFullscreen = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenTools = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenToolsSSHTransfer = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenToolsUVNCSC = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenToolsExternalApps = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenToolsPortScan = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenToolsSep1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenToolsComponentsCheck = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenToolsOptions = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenInfo = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenInfoHelp = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenInfoSep1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenInfoWebsite = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenInfoDonate = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenInfoForum = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenInfoBugReport = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenInfoAnnouncements = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenToolsUpdate = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenInfoSep2 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.mMenInfoAbout = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenSep3 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.lblQuickConnect = New System.Windows.Forms.ToolStripLabel()
|
||||
Me.cmbQuickConnect = New mRemoteNG.Controls.QuickConnectComboBox()
|
||||
Me.tsContainer = New System.Windows.Forms.ToolStripContainer()
|
||||
Me.tsQuickConnect = New System.Windows.Forms.ToolStrip()
|
||||
Me.btnQuickConnect = New mRemoteNG.Controls.ToolStripSplitButton()
|
||||
Me.mnuQuickConnectProtocol = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||
Me.btnConnections = New System.Windows.Forms.ToolStripDropDownButton()
|
||||
Me.mnuConnections = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||
Me.tsExternalTools = New System.Windows.Forms.ToolStrip()
|
||||
Me.cMenExtAppsToolbar = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||
Me.cMenToolbarShowText = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.tsQuickConnect = New System.Windows.Forms.ToolStrip
|
||||
Me.btnQuickyPlay = New System.Windows.Forms.ToolStripSplitButton
|
||||
Me.mMenQuickyCon = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip
|
||||
Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton
|
||||
Me.ToolStripButton2 = New System.Windows.Forms.ToolStripButton
|
||||
Me.ToolStripButton3 = New System.Windows.Forms.ToolStripButton
|
||||
Me.ToolStripSplitButton1 = New System.Windows.Forms.ToolStripDropDownButton
|
||||
Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenToolbarShowText = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip()
|
||||
Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripButton2 = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripButton3 = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripSplitButton1 = New System.Windows.Forms.ToolStripDropDownButton()
|
||||
Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.tmrAutoSave = New System.Windows.Forms.Timer(Me.components)
|
||||
Me.msMain.SuspendLayout()
|
||||
Me.tsContainer.ContentPanel.SuspendLayout()
|
||||
Me.tsContainer.TopToolStripPanel.SuspendLayout()
|
||||
Me.tsContainer.SuspendLayout()
|
||||
Me.cMenExtAppsToolbar.SuspendLayout()
|
||||
Me.tsQuickConnect.SuspendLayout()
|
||||
Me.cMenExtAppsToolbar.SuspendLayout()
|
||||
Me.ToolStrip1.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
@@ -135,56 +135,58 @@ Partial Class frmMain
|
||||
Me.pnlDock.ActiveAutoHideContent = Nothing
|
||||
Me.pnlDock.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.pnlDock.DockBackColor = System.Drawing.SystemColors.Control
|
||||
Me.pnlDock.DockLeftPortion = 230
|
||||
Me.pnlDock.DockRightPortion = 230
|
||||
Me.pnlDock.DockLeftPortion = 230.0R
|
||||
Me.pnlDock.DockRightPortion = 230.0R
|
||||
Me.pnlDock.DocumentStyle = WeifenLuo.WinFormsUI.Docking.DocumentStyle.DockingSdi
|
||||
Me.pnlDock.Location = New System.Drawing.Point(0, 0)
|
||||
Me.pnlDock.Name = "pnlDock"
|
||||
Me.pnlDock.Size = New System.Drawing.Size(842, 424)
|
||||
DockPanelGradient1.EndColor = System.Drawing.SystemColors.ControlLight
|
||||
DockPanelGradient1.StartColor = System.Drawing.SystemColors.ControlLight
|
||||
AutoHideStripSkin1.DockStripGradient = DockPanelGradient1
|
||||
TabGradient1.EndColor = System.Drawing.SystemColors.Control
|
||||
TabGradient1.StartColor = System.Drawing.SystemColors.Control
|
||||
TabGradient1.TextColor = System.Drawing.SystemColors.ControlDarkDark
|
||||
AutoHideStripSkin1.TabGradient = TabGradient1
|
||||
DockPanelSkin1.AutoHideStripSkin = AutoHideStripSkin1
|
||||
TabGradient2.EndColor = System.Drawing.SystemColors.ControlLightLight
|
||||
TabGradient2.StartColor = System.Drawing.SystemColors.ControlLightLight
|
||||
TabGradient2.TextColor = System.Drawing.SystemColors.ControlText
|
||||
DockPaneStripGradient1.ActiveTabGradient = TabGradient2
|
||||
DockPanelGradient2.EndColor = System.Drawing.SystemColors.Control
|
||||
DockPanelGradient2.StartColor = System.Drawing.SystemColors.Control
|
||||
DockPaneStripGradient1.DockStripGradient = DockPanelGradient2
|
||||
TabGradient3.EndColor = System.Drawing.SystemColors.ControlLight
|
||||
TabGradient3.StartColor = System.Drawing.SystemColors.ControlLight
|
||||
TabGradient3.TextColor = System.Drawing.SystemColors.ControlText
|
||||
DockPaneStripGradient1.InactiveTabGradient = TabGradient3
|
||||
DockPaneStripSkin1.DocumentGradient = DockPaneStripGradient1
|
||||
TabGradient4.EndColor = System.Drawing.SystemColors.ActiveCaption
|
||||
TabGradient4.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical
|
||||
TabGradient4.StartColor = System.Drawing.SystemColors.GradientActiveCaption
|
||||
TabGradient4.TextColor = System.Drawing.SystemColors.ActiveCaptionText
|
||||
DockPaneStripToolWindowGradient1.ActiveCaptionGradient = TabGradient4
|
||||
TabGradient5.EndColor = System.Drawing.SystemColors.Control
|
||||
TabGradient5.StartColor = System.Drawing.SystemColors.Control
|
||||
TabGradient5.TextColor = System.Drawing.SystemColors.ControlText
|
||||
DockPaneStripToolWindowGradient1.ActiveTabGradient = TabGradient5
|
||||
DockPanelGradient3.EndColor = System.Drawing.SystemColors.ControlLight
|
||||
DockPanelGradient3.StartColor = System.Drawing.SystemColors.ControlLight
|
||||
DockPaneStripToolWindowGradient1.DockStripGradient = DockPanelGradient3
|
||||
TabGradient6.EndColor = System.Drawing.SystemColors.GradientInactiveCaption
|
||||
TabGradient6.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical
|
||||
TabGradient6.StartColor = System.Drawing.SystemColors.GradientInactiveCaption
|
||||
TabGradient6.TextColor = System.Drawing.SystemColors.ControlText
|
||||
DockPaneStripToolWindowGradient1.InactiveCaptionGradient = TabGradient6
|
||||
TabGradient7.EndColor = System.Drawing.Color.Transparent
|
||||
TabGradient7.StartColor = System.Drawing.Color.Transparent
|
||||
TabGradient7.TextColor = System.Drawing.SystemColors.ControlDarkDark
|
||||
DockPaneStripToolWindowGradient1.InactiveTabGradient = TabGradient7
|
||||
DockPaneStripSkin1.ToolWindowGradient = DockPaneStripToolWindowGradient1
|
||||
DockPanelSkin1.DockPaneStripSkin = DockPaneStripSkin1
|
||||
Me.pnlDock.Skin = DockPanelSkin1
|
||||
Me.pnlDock.Size = New System.Drawing.Size(842, 449)
|
||||
DockPanelGradient4.EndColor = System.Drawing.SystemColors.ControlLight
|
||||
DockPanelGradient4.StartColor = System.Drawing.SystemColors.ControlLight
|
||||
AutoHideStripSkin2.DockStripGradient = DockPanelGradient4
|
||||
TabGradient8.EndColor = System.Drawing.SystemColors.Control
|
||||
TabGradient8.StartColor = System.Drawing.SystemColors.Control
|
||||
TabGradient8.TextColor = System.Drawing.SystemColors.ControlDarkDark
|
||||
AutoHideStripSkin2.TabGradient = TabGradient8
|
||||
AutoHideStripSkin2.TextFont = New System.Drawing.Font("Segoe UI", 9.0!)
|
||||
DockPanelSkin2.AutoHideStripSkin = AutoHideStripSkin2
|
||||
TabGradient9.EndColor = System.Drawing.SystemColors.ControlLightLight
|
||||
TabGradient9.StartColor = System.Drawing.SystemColors.ControlLightLight
|
||||
TabGradient9.TextColor = System.Drawing.SystemColors.ControlText
|
||||
DockPaneStripGradient2.ActiveTabGradient = TabGradient9
|
||||
DockPanelGradient5.EndColor = System.Drawing.SystemColors.Control
|
||||
DockPanelGradient5.StartColor = System.Drawing.SystemColors.Control
|
||||
DockPaneStripGradient2.DockStripGradient = DockPanelGradient5
|
||||
TabGradient10.EndColor = System.Drawing.SystemColors.ControlLight
|
||||
TabGradient10.StartColor = System.Drawing.SystemColors.ControlLight
|
||||
TabGradient10.TextColor = System.Drawing.SystemColors.ControlText
|
||||
DockPaneStripGradient2.InactiveTabGradient = TabGradient10
|
||||
DockPaneStripSkin2.DocumentGradient = DockPaneStripGradient2
|
||||
DockPaneStripSkin2.TextFont = New System.Drawing.Font("Segoe UI", 9.0!)
|
||||
TabGradient11.EndColor = System.Drawing.SystemColors.ActiveCaption
|
||||
TabGradient11.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical
|
||||
TabGradient11.StartColor = System.Drawing.SystemColors.GradientActiveCaption
|
||||
TabGradient11.TextColor = System.Drawing.SystemColors.ActiveCaptionText
|
||||
DockPaneStripToolWindowGradient2.ActiveCaptionGradient = TabGradient11
|
||||
TabGradient12.EndColor = System.Drawing.SystemColors.Control
|
||||
TabGradient12.StartColor = System.Drawing.SystemColors.Control
|
||||
TabGradient12.TextColor = System.Drawing.SystemColors.ControlText
|
||||
DockPaneStripToolWindowGradient2.ActiveTabGradient = TabGradient12
|
||||
DockPanelGradient6.EndColor = System.Drawing.SystemColors.ControlLight
|
||||
DockPanelGradient6.StartColor = System.Drawing.SystemColors.ControlLight
|
||||
DockPaneStripToolWindowGradient2.DockStripGradient = DockPanelGradient6
|
||||
TabGradient13.EndColor = System.Drawing.SystemColors.GradientInactiveCaption
|
||||
TabGradient13.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical
|
||||
TabGradient13.StartColor = System.Drawing.SystemColors.GradientInactiveCaption
|
||||
TabGradient13.TextColor = System.Drawing.SystemColors.ControlText
|
||||
DockPaneStripToolWindowGradient2.InactiveCaptionGradient = TabGradient13
|
||||
TabGradient14.EndColor = System.Drawing.Color.Transparent
|
||||
TabGradient14.StartColor = System.Drawing.Color.Transparent
|
||||
TabGradient14.TextColor = System.Drawing.SystemColors.ControlDarkDark
|
||||
DockPaneStripToolWindowGradient2.InactiveTabGradient = TabGradient14
|
||||
DockPaneStripSkin2.ToolWindowGradient = DockPaneStripToolWindowGradient2
|
||||
DockPanelSkin2.DockPaneStripSkin = DockPaneStripSkin2
|
||||
Me.pnlDock.Skin = DockPanelSkin2
|
||||
Me.pnlDock.TabIndex = 13
|
||||
'
|
||||
'msMain
|
||||
@@ -203,7 +205,7 @@ Partial Class frmMain
|
||||
'
|
||||
'mMenFile
|
||||
'
|
||||
Me.mMenFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mMenFileNewConnection, Me.mMenFileNewFolder, Me.mMenFileSep1, Me.mMenFileNew, Me.mMenFileLoad, Me.mMenFileSave, Me.mMenFileSaveAs, Me.mMenFileSep2, Me.mMenFileImportExport, Me.mMenFileSep3, Me.mMenFileDelete, Me.mMenFileRename, Me.mMenFileDuplicate, Me.mMenFileSep4, Me.mMenFileExit})
|
||||
Me.mMenFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mMenFileNewConnection, Me.mMenFileNewFolder, Me.mMenFileSep1, Me.mMenFileNew, Me.mMenFileLoad, Me.mMenFileSave, Me.mMenFileSaveAs, Me.mMenFileSep2, Me.mMenFileDelete, Me.mMenFileRename, Me.mMenFileDuplicate, Me.mMenFileSep3, Me.mMenFileImport, Me.mMenFileExport, Me.mMenFileSep4, Me.mMenFileExit})
|
||||
Me.mMenFile.Name = "mMenFile"
|
||||
Me.mMenFile.Size = New System.Drawing.Size(37, 20)
|
||||
Me.mMenFile.Text = "&File"
|
||||
@@ -212,29 +214,29 @@ Partial Class frmMain
|
||||
'
|
||||
Me.mMenFileNewConnection.Image = Global.mRemoteNG.My.Resources.Resources.Connection_Add
|
||||
Me.mMenFileNewConnection.Name = "mMenFileNewConnection"
|
||||
Me.mMenFileNewConnection.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F4), System.Windows.Forms.Keys)
|
||||
Me.mMenFileNewConnection.Size = New System.Drawing.Size(334, 22)
|
||||
Me.mMenFileNewConnection.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys)
|
||||
Me.mMenFileNewConnection.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileNewConnection.Text = "New Connection"
|
||||
'
|
||||
'mMenFileNewFolder
|
||||
'
|
||||
Me.mMenFileNewFolder.Image = Global.mRemoteNG.My.Resources.Resources.Folder_Add
|
||||
Me.mMenFileNewFolder.Name = "mMenFileNewFolder"
|
||||
Me.mMenFileNewFolder.ShortcutKeys = System.Windows.Forms.Keys.F7
|
||||
Me.mMenFileNewFolder.Size = New System.Drawing.Size(334, 22)
|
||||
Me.mMenFileNewFolder.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _
|
||||
Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys)
|
||||
Me.mMenFileNewFolder.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileNewFolder.Text = "New Folder"
|
||||
'
|
||||
'mMenFileSep1
|
||||
'
|
||||
Me.mMenFileSep1.Name = "mMenFileSep1"
|
||||
Me.mMenFileSep1.Size = New System.Drawing.Size(331, 6)
|
||||
Me.mMenFileSep1.Size = New System.Drawing.Size(278, 6)
|
||||
'
|
||||
'mMenFileNew
|
||||
'
|
||||
Me.mMenFileNew.Image = Global.mRemoteNG.My.Resources.Resources.Connections_New
|
||||
Me.mMenFileNew.Name = "mMenFileNew"
|
||||
Me.mMenFileNew.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.N), System.Windows.Forms.Keys)
|
||||
Me.mMenFileNew.Size = New System.Drawing.Size(334, 22)
|
||||
Me.mMenFileNew.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileNew.Text = "New Connection File"
|
||||
'
|
||||
'mMenFileLoad
|
||||
@@ -242,7 +244,7 @@ Partial Class frmMain
|
||||
Me.mMenFileLoad.Image = Global.mRemoteNG.My.Resources.Resources.Connections_Load
|
||||
Me.mMenFileLoad.Name = "mMenFileLoad"
|
||||
Me.mMenFileLoad.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys)
|
||||
Me.mMenFileLoad.Size = New System.Drawing.Size(334, 22)
|
||||
Me.mMenFileLoad.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileLoad.Text = "Open Connection File..."
|
||||
'
|
||||
'mMenFileSave
|
||||
@@ -250,7 +252,7 @@ Partial Class frmMain
|
||||
Me.mMenFileSave.Image = Global.mRemoteNG.My.Resources.Resources.Connections_Save
|
||||
Me.mMenFileSave.Name = "mMenFileSave"
|
||||
Me.mMenFileSave.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys)
|
||||
Me.mMenFileSave.Size = New System.Drawing.Size(334, 22)
|
||||
Me.mMenFileSave.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileSave.Text = "Save Connection File"
|
||||
'
|
||||
'mMenFileSaveAs
|
||||
@@ -258,96 +260,83 @@ Partial Class frmMain
|
||||
Me.mMenFileSaveAs.Image = Global.mRemoteNG.My.Resources.Resources.Connections_SaveAs
|
||||
Me.mMenFileSaveAs.Name = "mMenFileSaveAs"
|
||||
Me.mMenFileSaveAs.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _
|
||||
Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys)
|
||||
Me.mMenFileSaveAs.Size = New System.Drawing.Size(334, 22)
|
||||
Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys)
|
||||
Me.mMenFileSaveAs.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileSaveAs.Text = "Save Connection File As..."
|
||||
'
|
||||
'mMenFileSep2
|
||||
'
|
||||
Me.mMenFileSep2.Name = "mMenFileSep2"
|
||||
Me.mMenFileSep2.Size = New System.Drawing.Size(331, 6)
|
||||
Me.mMenFileSep2.Size = New System.Drawing.Size(278, 6)
|
||||
'
|
||||
'mMenFileImportExport
|
||||
'mMenFileImport
|
||||
'
|
||||
Me.mMenFileImportExport.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ImportFromXMLFileToolStripMenuItem, Me.ImportFromRDPFileToolStripMenuItem, Me.ImportFromActiveDirectoryToolStripMenuItem, Me.ImportFromPortScanToolStripMenuItem, Me.ToolStripSeparator6, Me.ExportToXMLFileToolStripMenuItem})
|
||||
Me.mMenFileImportExport.Name = "mMenFileImportExport"
|
||||
Me.mMenFileImportExport.Size = New System.Drawing.Size(334, 22)
|
||||
Me.mMenFileImportExport.Text = "Import/Export Folder"
|
||||
Me.mMenFileImportExport.Visible = False
|
||||
Me.mMenFileImport.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mMenFileImportFromFile, Me.mMenFileImportFromActiveDirectory, Me.mMenFileImportFromPortScan})
|
||||
Me.mMenFileImport.Name = "mMenFileImport"
|
||||
Me.mMenFileImport.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileImport.Text = "&Import"
|
||||
'
|
||||
'ImportFromXMLFileToolStripMenuItem
|
||||
'mMenFileImportFromFile
|
||||
'
|
||||
Me.ImportFromXMLFileToolStripMenuItem.Name = "ImportFromXMLFileToolStripMenuItem"
|
||||
Me.ImportFromXMLFileToolStripMenuItem.Size = New System.Drawing.Size(235, 22)
|
||||
Me.ImportFromXMLFileToolStripMenuItem.Text = "Import from XML File..."
|
||||
Me.mMenFileImportFromFile.Name = "mMenFileImportFromFile"
|
||||
Me.mMenFileImportFromFile.Size = New System.Drawing.Size(235, 22)
|
||||
Me.mMenFileImportFromFile.Text = "Import from &File..."
|
||||
'
|
||||
'ImportFromRDPFileToolStripMenuItem
|
||||
'mMenFileImportFromActiveDirectory
|
||||
'
|
||||
Me.ImportFromRDPFileToolStripMenuItem.Name = "ImportFromRDPFileToolStripMenuItem"
|
||||
Me.ImportFromRDPFileToolStripMenuItem.Size = New System.Drawing.Size(235, 22)
|
||||
Me.ImportFromRDPFileToolStripMenuItem.Text = "Import from RDP File..."
|
||||
Me.mMenFileImportFromActiveDirectory.Name = "mMenFileImportFromActiveDirectory"
|
||||
Me.mMenFileImportFromActiveDirectory.Size = New System.Drawing.Size(235, 22)
|
||||
Me.mMenFileImportFromActiveDirectory.Text = "Import from &Active Directory..."
|
||||
'
|
||||
'ImportFromActiveDirectoryToolStripMenuItem
|
||||
'mMenFileImportFromPortScan
|
||||
'
|
||||
Me.ImportFromActiveDirectoryToolStripMenuItem.Name = "ImportFromActiveDirectoryToolStripMenuItem"
|
||||
Me.ImportFromActiveDirectoryToolStripMenuItem.Size = New System.Drawing.Size(235, 22)
|
||||
Me.ImportFromActiveDirectoryToolStripMenuItem.Text = "Import from Active Directory..."
|
||||
Me.mMenFileImportFromPortScan.Name = "mMenFileImportFromPortScan"
|
||||
Me.mMenFileImportFromPortScan.Size = New System.Drawing.Size(235, 22)
|
||||
Me.mMenFileImportFromPortScan.Text = "Import from &Port Scan..."
|
||||
'
|
||||
'ImportFromPortScanToolStripMenuItem
|
||||
'mMenFileExport
|
||||
'
|
||||
Me.ImportFromPortScanToolStripMenuItem.Name = "ImportFromPortScanToolStripMenuItem"
|
||||
Me.ImportFromPortScanToolStripMenuItem.Size = New System.Drawing.Size(235, 22)
|
||||
Me.ImportFromPortScanToolStripMenuItem.Text = "Import from Port Scan..."
|
||||
'
|
||||
'ToolStripSeparator6
|
||||
'
|
||||
Me.ToolStripSeparator6.Name = "ToolStripSeparator6"
|
||||
Me.ToolStripSeparator6.Size = New System.Drawing.Size(232, 6)
|
||||
'
|
||||
'ExportToXMLFileToolStripMenuItem
|
||||
'
|
||||
Me.ExportToXMLFileToolStripMenuItem.Name = "ExportToXMLFileToolStripMenuItem"
|
||||
Me.ExportToXMLFileToolStripMenuItem.Size = New System.Drawing.Size(235, 22)
|
||||
Me.ExportToXMLFileToolStripMenuItem.Text = "Export to XML File..."
|
||||
Me.mMenFileExport.Name = "mMenFileExport"
|
||||
Me.mMenFileExport.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileExport.Text = "&Export to File..."
|
||||
'
|
||||
'mMenFileSep3
|
||||
'
|
||||
Me.mMenFileSep3.Name = "mMenFileSep3"
|
||||
Me.mMenFileSep3.Size = New System.Drawing.Size(331, 6)
|
||||
Me.mMenFileSep3.Visible = False
|
||||
Me.mMenFileSep3.Size = New System.Drawing.Size(278, 6)
|
||||
'
|
||||
'mMenFileDelete
|
||||
'
|
||||
Me.mMenFileDelete.Image = Global.mRemoteNG.My.Resources.Resources.Delete
|
||||
Me.mMenFileDelete.Name = "mMenFileDelete"
|
||||
Me.mMenFileDelete.Size = New System.Drawing.Size(334, 22)
|
||||
Me.mMenFileDelete.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileDelete.Text = "Delete..."
|
||||
'
|
||||
'mMenFileRename
|
||||
'
|
||||
Me.mMenFileRename.Image = Global.mRemoteNG.My.Resources.Resources.Rename
|
||||
Me.mMenFileRename.Name = "mMenFileRename"
|
||||
Me.mMenFileRename.Size = New System.Drawing.Size(334, 22)
|
||||
Me.mMenFileRename.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileRename.Text = "Rename"
|
||||
'
|
||||
'mMenFileDuplicate
|
||||
'
|
||||
Me.mMenFileDuplicate.Image = Global.mRemoteNG.My.Resources.Resources.Connection_Duplicate
|
||||
Me.mMenFileDuplicate.Image = Global.mRemoteNG.My.Resources.Resources.page_copy
|
||||
Me.mMenFileDuplicate.Name = "mMenFileDuplicate"
|
||||
Me.mMenFileDuplicate.Size = New System.Drawing.Size(334, 22)
|
||||
Me.mMenFileDuplicate.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileDuplicate.Text = "Duplicate"
|
||||
'
|
||||
'mMenFileSep4
|
||||
'
|
||||
Me.mMenFileSep4.Name = "mMenFileSep4"
|
||||
Me.mMenFileSep4.Size = New System.Drawing.Size(331, 6)
|
||||
Me.mMenFileSep4.Size = New System.Drawing.Size(278, 6)
|
||||
'
|
||||
'mMenFileExit
|
||||
'
|
||||
Me.mMenFileExit.Image = Global.mRemoteNG.My.Resources.Resources.Quit
|
||||
Me.mMenFileExit.Name = "mMenFileExit"
|
||||
Me.mMenFileExit.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.F4), System.Windows.Forms.Keys)
|
||||
Me.mMenFileExit.Size = New System.Drawing.Size(334, 22)
|
||||
Me.mMenFileExit.Size = New System.Drawing.Size(281, 22)
|
||||
Me.mMenFileExit.Text = "Exit"
|
||||
'
|
||||
'mMenView
|
||||
@@ -389,7 +378,7 @@ Partial Class frmMain
|
||||
'
|
||||
Me.mMenViewConfig.Checked = True
|
||||
Me.mMenViewConfig.CheckState = System.Windows.Forms.CheckState.Checked
|
||||
Me.mMenViewConfig.Image = CType(resources.GetObject("mMenViewConfig.Image"), System.Drawing.Image)
|
||||
Me.mMenViewConfig.Image = Global.mRemoteNG.My.Resources.Resources.cog
|
||||
Me.mMenViewConfig.Name = "mMenViewConfig"
|
||||
Me.mMenViewConfig.Size = New System.Drawing.Size(228, 22)
|
||||
Me.mMenViewConfig.Text = "Config"
|
||||
@@ -434,30 +423,34 @@ Partial Class frmMain
|
||||
'
|
||||
'mMenViewJumpToConnectionsConfig
|
||||
'
|
||||
Me.mMenViewJumpToConnectionsConfig.Image = Global.mRemoteNG.My.Resources.Resources.Root
|
||||
Me.mMenViewJumpToConnectionsConfig.Name = "mMenViewJumpToConnectionsConfig"
|
||||
Me.mMenViewJumpToConnectionsConfig.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _
|
||||
Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys)
|
||||
Me.mMenViewJumpToConnectionsConfig.Size = New System.Drawing.Size(262, 22)
|
||||
Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys)
|
||||
Me.mMenViewJumpToConnectionsConfig.Size = New System.Drawing.Size(260, 22)
|
||||
Me.mMenViewJumpToConnectionsConfig.Text = "Connections && Config"
|
||||
'
|
||||
'mMenViewJumpToSessionsScreenshots
|
||||
'
|
||||
Me.mMenViewJumpToSessionsScreenshots.Image = Global.mRemoteNG.My.Resources.Resources.Sessions
|
||||
Me.mMenViewJumpToSessionsScreenshots.Name = "mMenViewJumpToSessionsScreenshots"
|
||||
Me.mMenViewJumpToSessionsScreenshots.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _
|
||||
Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys)
|
||||
Me.mMenViewJumpToSessionsScreenshots.Size = New System.Drawing.Size(262, 22)
|
||||
Or System.Windows.Forms.Keys.S), System.Windows.Forms.Keys)
|
||||
Me.mMenViewJumpToSessionsScreenshots.Size = New System.Drawing.Size(260, 22)
|
||||
Me.mMenViewJumpToSessionsScreenshots.Text = "Sessions && Screenshots"
|
||||
'
|
||||
'mMenViewJumpToErrorsInfos
|
||||
'
|
||||
Me.mMenViewJumpToErrorsInfos.Image = Global.mRemoteNG.My.Resources.Resources.InformationSmall
|
||||
Me.mMenViewJumpToErrorsInfos.Name = "mMenViewJumpToErrorsInfos"
|
||||
Me.mMenViewJumpToErrorsInfos.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Alt) _
|
||||
Or System.Windows.Forms.Keys.E), System.Windows.Forms.Keys)
|
||||
Me.mMenViewJumpToErrorsInfos.Size = New System.Drawing.Size(262, 22)
|
||||
Or System.Windows.Forms.Keys.E), System.Windows.Forms.Keys)
|
||||
Me.mMenViewJumpToErrorsInfos.Size = New System.Drawing.Size(260, 22)
|
||||
Me.mMenViewJumpToErrorsInfos.Text = "Errors && Infos"
|
||||
'
|
||||
'mMenViewResetLayout
|
||||
'
|
||||
Me.mMenViewResetLayout.Image = Global.mRemoteNG.My.Resources.Resources.application_side_tree
|
||||
Me.mMenViewResetLayout.Name = "mMenViewResetLayout"
|
||||
Me.mMenViewResetLayout.Size = New System.Drawing.Size(228, 22)
|
||||
Me.mMenViewResetLayout.Text = "Reset Layout"
|
||||
@@ -476,7 +469,7 @@ Partial Class frmMain
|
||||
'
|
||||
'mMenViewExtAppsToolbar
|
||||
'
|
||||
Me.mMenViewExtAppsToolbar.Image = CType(resources.GetObject("mMenViewExtAppsToolbar.Image"), System.Drawing.Image)
|
||||
Me.mMenViewExtAppsToolbar.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp
|
||||
Me.mMenViewExtAppsToolbar.Name = "mMenViewExtAppsToolbar"
|
||||
Me.mMenViewExtAppsToolbar.Size = New System.Drawing.Size(228, 22)
|
||||
Me.mMenViewExtAppsToolbar.Text = "External Applications Toolbar"
|
||||
@@ -488,7 +481,7 @@ Partial Class frmMain
|
||||
'
|
||||
'mMenViewFullscreen
|
||||
'
|
||||
Me.mMenViewFullscreen.Image = Global.mRemoteNG.My.Resources.Resources.Fullscreen
|
||||
Me.mMenViewFullscreen.Image = Global.mRemoteNG.My.Resources.Resources.arrow_out
|
||||
Me.mMenViewFullscreen.Name = "mMenViewFullscreen"
|
||||
Me.mMenViewFullscreen.ShortcutKeys = System.Windows.Forms.Keys.F11
|
||||
Me.mMenViewFullscreen.Size = New System.Drawing.Size(228, 22)
|
||||
@@ -518,7 +511,7 @@ Partial Class frmMain
|
||||
'
|
||||
'mMenToolsExternalApps
|
||||
'
|
||||
Me.mMenToolsExternalApps.Image = CType(resources.GetObject("mMenToolsExternalApps.Image"), System.Drawing.Image)
|
||||
Me.mMenToolsExternalApps.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp
|
||||
Me.mMenToolsExternalApps.Name = "mMenToolsExternalApps"
|
||||
Me.mMenToolsExternalApps.Size = New System.Drawing.Size(184, 22)
|
||||
Me.mMenToolsExternalApps.Text = "External Applications"
|
||||
@@ -537,7 +530,7 @@ Partial Class frmMain
|
||||
'
|
||||
'mMenToolsComponentsCheck
|
||||
'
|
||||
Me.mMenToolsComponentsCheck.Image = Global.mRemoteNG.My.Resources.Resources.ComponentsCheck
|
||||
Me.mMenToolsComponentsCheck.Image = Global.mRemoteNG.My.Resources.Resources.cog_error
|
||||
Me.mMenToolsComponentsCheck.Name = "mMenToolsComponentsCheck"
|
||||
Me.mMenToolsComponentsCheck.Size = New System.Drawing.Size(184, 22)
|
||||
Me.mMenToolsComponentsCheck.Text = "Components Check"
|
||||
@@ -586,6 +579,7 @@ Partial Class frmMain
|
||||
'
|
||||
'mMenInfoForum
|
||||
'
|
||||
Me.mMenInfoForum.Image = Global.mRemoteNG.My.Resources.Resources.user_comment
|
||||
Me.mMenInfoForum.Name = "mMenInfoForum"
|
||||
Me.mMenInfoForum.Size = New System.Drawing.Size(190, 22)
|
||||
Me.mMenInfoForum.Text = "Support Forum"
|
||||
@@ -643,6 +637,7 @@ Partial Class frmMain
|
||||
'
|
||||
Me.cmbQuickConnect.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend
|
||||
Me.cmbQuickConnect.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems
|
||||
Me.cmbQuickConnect.Margin = New System.Windows.Forms.Padding(1, 0, 3, 0)
|
||||
Me.cmbQuickConnect.Name = "cmbQuickConnect"
|
||||
Me.cmbQuickConnect.Size = New System.Drawing.Size(200, 25)
|
||||
'
|
||||
@@ -657,7 +652,7 @@ Partial Class frmMain
|
||||
'
|
||||
Me.tsContainer.ContentPanel.Controls.Add(Me.pnlDock)
|
||||
Me.tsContainer.ContentPanel.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional
|
||||
Me.tsContainer.ContentPanel.Size = New System.Drawing.Size(842, 424)
|
||||
Me.tsContainer.ContentPanel.Size = New System.Drawing.Size(842, 449)
|
||||
Me.tsContainer.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
'
|
||||
'tsContainer.LeftToolStripPanel
|
||||
@@ -681,14 +676,59 @@ Partial Class frmMain
|
||||
Me.tsContainer.TopToolStripPanel.Controls.Add(Me.ToolStrip1)
|
||||
Me.tsContainer.TopToolStripPanel.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional
|
||||
'
|
||||
'tsExtAppsToolbar
|
||||
'tsQuickConnect
|
||||
'
|
||||
Me.tsQuickConnect.Dock = System.Windows.Forms.DockStyle.None
|
||||
Me.tsQuickConnect.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.lblQuickConnect, Me.cmbQuickConnect, Me.btnQuickConnect, Me.btnConnections})
|
||||
Me.tsQuickConnect.Location = New System.Drawing.Point(3, 24)
|
||||
Me.tsQuickConnect.MaximumSize = New System.Drawing.Size(0, 25)
|
||||
Me.tsQuickConnect.Name = "tsQuickConnect"
|
||||
Me.tsQuickConnect.Size = New System.Drawing.Size(387, 25)
|
||||
Me.tsQuickConnect.TabIndex = 18
|
||||
'
|
||||
'btnQuickConnect
|
||||
'
|
||||
Me.btnQuickConnect.DropDown = Me.mnuQuickConnectProtocol
|
||||
Me.btnQuickConnect.Image = Global.mRemoteNG.My.Resources.Resources.Play_Quick
|
||||
Me.btnQuickConnect.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.btnQuickConnect.Margin = New System.Windows.Forms.Padding(0, 1, 3, 2)
|
||||
Me.btnQuickConnect.Name = "btnQuickConnect"
|
||||
Me.btnQuickConnect.Size = New System.Drawing.Size(84, 22)
|
||||
Me.btnQuickConnect.Text = "Connect"
|
||||
'
|
||||
'mnuQuickConnectProtocol
|
||||
'
|
||||
Me.mnuQuickConnectProtocol.Name = "mnuQuickConnectProtocol"
|
||||
Me.mnuQuickConnectProtocol.OwnerItem = Me.btnQuickConnect
|
||||
Me.mnuQuickConnectProtocol.ShowCheckMargin = True
|
||||
Me.mnuQuickConnectProtocol.ShowImageMargin = False
|
||||
Me.mnuQuickConnectProtocol.Size = New System.Drawing.Size(61, 4)
|
||||
'
|
||||
'btnConnections
|
||||
'
|
||||
Me.btnConnections.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
|
||||
Me.btnConnections.DropDown = Me.mnuConnections
|
||||
Me.btnConnections.Image = Global.mRemoteNG.My.Resources.Resources.Root
|
||||
Me.btnConnections.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None
|
||||
Me.btnConnections.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.btnConnections.Name = "btnConnections"
|
||||
Me.btnConnections.Size = New System.Drawing.Size(29, 22)
|
||||
Me.btnConnections.Text = "Connections"
|
||||
'
|
||||
'mnuConnections
|
||||
'
|
||||
Me.mnuConnections.Name = "mnuConnections"
|
||||
Me.mnuConnections.OwnerItem = Me.btnConnections
|
||||
Me.mnuConnections.Size = New System.Drawing.Size(61, 4)
|
||||
'
|
||||
'tsExternalTools
|
||||
'
|
||||
Me.tsExternalTools.ContextMenuStrip = Me.cMenExtAppsToolbar
|
||||
Me.tsExternalTools.Dock = System.Windows.Forms.DockStyle.None
|
||||
Me.tsExternalTools.Location = New System.Drawing.Point(39, 49)
|
||||
Me.tsExternalTools.Name = "tsExtAppsToolbar"
|
||||
Me.tsExternalTools.Size = New System.Drawing.Size(111, 25)
|
||||
Me.tsExternalTools.MaximumSize = New System.Drawing.Size(0, 25)
|
||||
Me.tsExternalTools.Name = "tsExternalTools"
|
||||
Me.tsExternalTools.Size = New System.Drawing.Size(111, 25)
|
||||
Me.tsExternalTools.TabIndex = 17
|
||||
'
|
||||
'cMenExtAppsToolbar
|
||||
@@ -705,44 +745,14 @@ Partial Class frmMain
|
||||
Me.cMenToolbarShowText.Size = New System.Drawing.Size(128, 22)
|
||||
Me.cMenToolbarShowText.Text = "Show Text"
|
||||
'
|
||||
'tsQuickConnect
|
||||
'
|
||||
Me.tsQuickConnect.Dock = System.Windows.Forms.DockStyle.None
|
||||
Me.tsQuickConnect.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.lblQuickConnect, Me.cmbQuickConnect, Me.btnQuickyPlay, Me.mMenQuickyCon})
|
||||
Me.tsQuickConnect.Location = New System.Drawing.Point(3, 24)
|
||||
Me.tsQuickConnect.Name = "tsQuickConnect"
|
||||
Me.tsQuickConnect.Size = New System.Drawing.Size(331, 25)
|
||||
Me.tsQuickConnect.MaximumSize = New System.Drawing.Size(0, 25)
|
||||
Me.tsQuickConnect.TabIndex = 18
|
||||
'
|
||||
'btnQuickyPlay
|
||||
'
|
||||
Me.btnQuickyPlay.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
|
||||
Me.btnQuickyPlay.Image = Global.mRemoteNG.My.Resources.Resources.Play_Quick
|
||||
Me.btnQuickyPlay.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.btnQuickyPlay.Name = "btnQuickyPlay"
|
||||
Me.btnQuickyPlay.Size = New System.Drawing.Size(32, 22)
|
||||
Me.btnQuickyPlay.Text = "Connect"
|
||||
'
|
||||
'mMenQuickyCon
|
||||
'
|
||||
Me.mMenQuickyCon.AutoSize = False
|
||||
Me.mMenQuickyCon.AutoToolTip = True
|
||||
Me.mMenQuickyCon.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
|
||||
Me.mMenQuickyCon.Image = Global.mRemoteNG.My.Resources.Resources.Root
|
||||
Me.mMenQuickyCon.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.mMenQuickyCon.Name = "mMenQuickyCon"
|
||||
Me.mMenQuickyCon.Size = New System.Drawing.Size(30, 22)
|
||||
Me.mMenQuickyCon.Text = "Connections"
|
||||
'
|
||||
'ToolStrip1
|
||||
'
|
||||
Me.ToolStrip1.Dock = System.Windows.Forms.DockStyle.None
|
||||
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripButton1, Me.ToolStripButton2, Me.ToolStripButton3, Me.ToolStripSplitButton1})
|
||||
Me.ToolStrip1.Location = New System.Drawing.Point(3, 74)
|
||||
Me.ToolStrip1.Name = "ToolStrip1"
|
||||
Me.ToolStrip1.Size = New System.Drawing.Size(264, 25)
|
||||
Me.ToolStrip1.MaximumSize = New System.Drawing.Size(0, 25)
|
||||
Me.ToolStrip1.Name = "ToolStrip1"
|
||||
Me.ToolStrip1.Size = New System.Drawing.Size(0, 25)
|
||||
Me.ToolStrip1.TabIndex = 19
|
||||
Me.ToolStrip1.Visible = False
|
||||
'
|
||||
@@ -805,7 +815,7 @@ Partial Class frmMain
|
||||
Me.Icon = Global.mRemoteNG.My.Resources.Resources.mRemote_Icon
|
||||
Me.MainMenuStrip = Me.msMain
|
||||
Me.Name = "frmMain"
|
||||
Me.Opacity = 0
|
||||
Me.Opacity = 0.0R
|
||||
Me.Text = "mRemoteNG"
|
||||
Me.msMain.ResumeLayout(False)
|
||||
Me.msMain.PerformLayout()
|
||||
@@ -814,9 +824,9 @@ Partial Class frmMain
|
||||
Me.tsContainer.TopToolStripPanel.PerformLayout()
|
||||
Me.tsContainer.ResumeLayout(False)
|
||||
Me.tsContainer.PerformLayout()
|
||||
Me.cMenExtAppsToolbar.ResumeLayout(False)
|
||||
Me.tsQuickConnect.ResumeLayout(False)
|
||||
Me.tsQuickConnect.PerformLayout()
|
||||
Me.cMenExtAppsToolbar.ResumeLayout(False)
|
||||
Me.ToolStrip1.ResumeLayout(False)
|
||||
Me.ToolStrip1.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
@@ -849,7 +859,7 @@ Partial Class frmMain
|
||||
Friend WithEvents mMenViewErrorsAndInfos As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenViewScreenshotManager As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenViewAddConnectionPanel As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents cmbQuickConnect As System.Windows.Forms.ToolStripComboBox
|
||||
Friend WithEvents cmbQuickConnect As Controls.QuickConnectComboBox
|
||||
Friend WithEvents mMenViewSep2 As System.Windows.Forms.ToolStripSeparator
|
||||
Friend WithEvents mMenViewFullscreen As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenToolsSSHTransfer As System.Windows.Forms.ToolStripMenuItem
|
||||
@@ -866,8 +876,7 @@ Partial Class frmMain
|
||||
Friend WithEvents mMenSep3 As System.Windows.Forms.ToolStripSeparator
|
||||
Friend WithEvents mMenInfoDonate As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenViewSep3 As System.Windows.Forms.ToolStripSeparator
|
||||
Friend WithEvents btnQuickyPlay As System.Windows.Forms.ToolStripSplitButton
|
||||
Friend WithEvents mMenQuickyCon As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents btnQuickConnect As Controls.ToolStripSplitButton
|
||||
Friend WithEvents mMenViewJumpTo As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenViewJumpToConnectionsConfig As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenViewJumpToSessionsScreenshots As System.Windows.Forms.ToolStripMenuItem
|
||||
@@ -886,13 +895,6 @@ Partial Class frmMain
|
||||
Friend WithEvents mMenFileSep2 As System.Windows.Forms.ToolStripSeparator
|
||||
Friend WithEvents mMenFileNewConnection As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenFileNewFolder As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenFileImportExport As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents ImportFromXMLFileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents ImportFromRDPFileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents ImportFromActiveDirectoryToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents ImportFromPortScanToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator
|
||||
Friend WithEvents ExportToXMLFileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenFileSep3 As System.Windows.Forms.ToolStripSeparator
|
||||
Friend WithEvents mMenFileDelete As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenFileRename As System.Windows.Forms.ToolStripMenuItem
|
||||
@@ -904,5 +906,13 @@ Partial Class frmMain
|
||||
Friend WithEvents ToolStripSplitButton1 As System.Windows.Forms.ToolStripDropDownButton
|
||||
Friend WithEvents ToolStripMenuItem1 As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents ToolStripMenuItem2 As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuQuickConnectProtocol As System.Windows.Forms.ContextMenuStrip
|
||||
Friend WithEvents btnConnections As System.Windows.Forms.ToolStripDropDownButton
|
||||
Friend WithEvents mnuConnections As System.Windows.Forms.ContextMenuStrip
|
||||
Friend WithEvents mMenFileExport As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenFileImportFromFile As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenFileImportFromActiveDirectory As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenFileImportFromPortScan As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mMenFileImport As System.Windows.Forms.ToolStripMenuItem
|
||||
|
||||
End Class
|
||||
|
||||
@@ -118,168 +118,121 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="msMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
<value>150, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="mMenViewConfig.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK/wAA
|
||||
Cv8BNGKaggAAArhJREFUOE91U91LU3EYnt0GjUYSgv+EoDeCgXkhiuBAL7swoTWUEryYF2JXQlebTIlK
|
||||
pA1bmfODND+DpqUzt5Vfm7NtZx9n52xnui9zm/m5p9/vlINcHnjhnPf83ud5n/d9fhIAkv9FQ0NDrU6n
|
||||
29fr9cnS0tKqq87lFQ8MDNxqaWm5oVKpjPFEEql0Gp2dnYb29vbrGo3m9mWgHIDBYGh7PzmZ1en1gtE4
|
||||
kgoLEYTCAmLxOE5OTzExMXHw2mAQTCZT9vmLF8oLIBFAJpNde/N2iGP5EOKJhBh70SjYIAchEsHu3h4O
|
||||
UimkMxkcHZ9geHjY/w8A/airq9MGSAHj88EfYGGzfcOXpWWsra/DS3LJ/X0xMoeHqK6ufpoHoO3tXfOR
|
||||
QueOC7OzcyKI3e44D3L8OS1aWFxEZPdPJ5qeHksOQKlU1mq12qjL7T5jvD5YrTaEQmEQvaxUKpUXFhbe
|
||||
m5ufj8aILNoVnYuHYc76+vqi5eXlVZLKyruqSDSGHZcbm3YHls0rYBgf6uvlTy5YHigU/R7GC/PKKplL
|
||||
EH6WJcNNoKLiTpukrKzsEcfz2Hb+wMbmFpaWzYjG4lCr1R8vAF7pdN/pVqamZ2DfdiLAEpBAACUlJQoJ
|
||||
eaRNTU3TZHUC0Yv1jU1xWOPj4xgaevfTaDQejIyOituw2mzw+gPQDw7ytIbW5nxAnPcsnTkET/R/Mi2I
|
||||
a9wikhyEkSWMH6am4HDukPaDqKmpUedtobu7W/h1fIxEMgm3xwOLxYqVVQu+/g0LYafgQeKVrq6uUB6A
|
||||
qqPDTJLURFnivmxYEES9lJX6gzBnibHOw5FdtLa2fs4DoHoaGxvHioqK7hcXFz8mXRzRdqkfGK83RfIP
|
||||
SV4hl8vH6Nk8gMuX5GV/v4sn2+E4Ds3NzTnGKy/T5R8FBQUyMukZGuT95lXX+Tf6O+vwZDVeqgAAAABJ
|
||||
RU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="mMenViewSessions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK/wAA
|
||||
Cv8BNGKaggAAA4RJREFUOE9lk21MU3cUh/9L5pxabCoz2YsmLiwbDp0TddMU1sLo7e3LtZTSQim2ILft
|
||||
ENoKtIVSXksEKRStwwoVDSZGCGPIyDbYCG5s02TZFudCtiDIjNFszjiWrFmZWf3tln2Z8uHJOV/Oc345
|
||||
ySEAyP9hd24gcUo4zKmJrzRlJk6HVIJol4IfrcsQ3M1LfaaUShE8KdnKJ3EeGY6LatIEy7iFG/i+DP6V
|
||||
EPMUAsrVCKr5aFcKYN2bEMnf94KqlE4mVurllYJgFo/EOZ6xZkso+zl80KDExVoanqxE2IU8FO5YjSbd
|
||||
a63DzTpywZu9UtCbm0jidCvXbRryMLG/Fi7j/mdBjHexuNTrxIcnnRiuTPV9f8ZMvu0pIuQdtvg/zAef
|
||||
sBYZ9LXSF282ini/udN49xyKbX/PTPYjcm0ID2aGsTQ7jltjdQ+LNVo2WX2WbFefIKSs5MAypezB3dW6
|
||||
9LmANgl+ZiP8uVtwSLge9SUy3JnowB9fdGPx02b4bfro2j1HLeszz5C1oh5CnPLty1TJdtQ1MUmopzbC
|
||||
q9iMcm64QvI8lMlPo9XnQEeXD6G+MPq/iuF17dSNVXtPv80Tc4IKYQKpFK4jZXtWeZsL0zB5qgrvt5rg
|
||||
L34Dvc5sWCRJqPr4KgyfAzljQMs0cPyjJbykGFngi04IiUm+m2jpdMJKtllmhpqwND+JpR+G8PvlMKKz
|
||||
E5jqMsHcP4eCwYfQnI2BOgmYTy9i4lwYAxXUdULJFGSf1EB2ifMV75ZLIn9eCSE2y61a+AS/TgXgtmqg
|
||||
Cf+C/POAbgAoHOSS1F7FdF8LbnXs+ofI5XIikyuS00RZl+q9NTGvy4732krQXWNAjasCNpsdstJ25Pbd
|
||||
Rt6F+xAf+RlC5tSd8XrpN7P9RS4iZXI2HbI5plX798PpdIE1WzA6OopQKIQDRhMchw8jT6fDm7LKyFbF
|
||||
+dubqZEf03Xhsi+72WfnB8rXEK8pcyQcaISv5Qj0ej0KCgoQDAbR3u6HUqmEWq2Gy12NYw1lcOtF5x7/
|
||||
HXI3sBPfDTaisroOnZ2dXGQbGIYBTdOwWq1wubhUFivujTdgoTnlwQrBXI/m4piXQo6+CB6PB21tbcvV
|
||||
aDTC7/fDbrdDSsvw9VEKP/Xkc2d89HvJ/KAtYaLTkPJWlszHHfSmVqtdVKlUUa6PajSaiFgsvkHTcvZa
|
||||
2Pjq9QFHwuOCfwHdFSeIQMKMzwAAAABJRU5ErkJggg==
|
||||
Cv8BNGKaggAAA31JREFUOE9lkm1MU3cUh/9L5pxabCozmU4TF5YNh86JumkKa2H09vblWkppoRRbkNt2
|
||||
CG0F2kIpryWCFIrWYYWKBhMjhDFkZBtsBDfcNFnm4lzIFgSZMZrNGceSNSszq7/ddZ+UD0/O+XKe88vJ
|
||||
IQCegN25Lk4Jhzk18bWmzMTpkEoQ7VLwo3UZgvt5qS+UUimCZyVb+eQ/lglq0gRx3MJ1fF8G/2qIeQ4B
|
||||
5UoE1Xy0KwWw7k2I5O97SVVKJxMr9epyQTCLF+d4xqotoewN+KhBiYu1NDxZibALeSjcsRJNujdah5t1
|
||||
5II3e7mgNzcxTrdyzaYhDxP7a+EKHn4RxHgXi0u9Tnx80onhylTf92fM5FpPESHvscX/Yz74jLXIoK+V
|
||||
vny7UcT7zZ3Ge+BQbPt7ZrIfkRtDeDQzjKXZcdwZq3tcrNGyyeqzZLv6BCFlJQfilLIHd1fr0ucC2iT4
|
||||
mfXw527BIeFa1JfIcG+iA39c7sbi583w2/TR1XuOWtZmniGrRT2EOOXb41TJdtQ1MUmop9bDq9iMcm64
|
||||
QrIRyuTn0epzoKPLh1BfGP1fx/CmdurWir2n3+WJOUGFMIFUCteQsj0rvM2FaZg8VYUPW03wF7+FXmc2
|
||||
LJIkVH16HYYvgZwxoGUaOP7JEl5RjCzwRSeExCTfTbR0OmEl2ywzQ01Ymp/E0g9D+P1KGNHZCUx1mWDu
|
||||
n0PB4GNozsZAnQTMpxcxcS6MgQrqJqFkCrJPaiC7xPmK98slkT+vhhCb5VYtfIZfpwJwWzXQhH9B/nlA
|
||||
NwAUDnJJaq9juq8Fdzp2/UPkcjmRyRXJaaKsS/XempjXZccHbSXorjGgxlUBm80OWWk7cvvuIu/CQ4iP
|
||||
/Awhc+reeL3029n+IheRMjmbDtkc06r9++F0usCaLRgdHUUoFMIBowmOw4eRp9PhbVllZKvi/N3N1MiP
|
||||
6bpw2Vfd7IvzA+WriNeUORIONMLXcgR6vR4FBQUIBoNob/dDqVRCrVbD5a7GsYYyuPWic08/Hrkf2Inv
|
||||
BhtRWV2Hzs5OLrINDMOApmlYrVa4XFwqixUPxhuw0JzyaJlgrkdzccxLIUdfBI/Hg7a2tng1Go3w+/2w
|
||||
2+2Q0jJ8c5TCTz353BmfEswP2hImOg0p72TJfNxBb2u12kWVShXl+qhGo4mIxeJbNC1nb4SNr98ccCQ8
|
||||
KQD5F90VJ4irTWosAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="mMenViewScreenshotManager.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAjpJREFUOE+lk91P
|
||||
UnEYx/2numu9bF21Vps1ZxfRGjEXtVrLpcNMROcxiRc9CgoSkQUKJSWKJmEFo2TKW241nbWaxcsAzwGO
|
||||
HK/69jvngkBYXXjx3X5vz+f57nmeXxOApsNIDLZ5ohrrq1h6zBVhtY4GspOzKtHOCGt2R3RCrAiwzsUy
|
||||
2Vzud4njwO3x/1SuxCPDFGF8EWUqACFzscRhbH4Hmvk4lAszsK3TcCb6YY+rMBpQ49ojE+5YguiwfEa2
|
||||
yGPUFWMrAB2xLWQ2LuyAWlyCbY3G9Kd2mNfaYFyVYjwsh9rXB/nEMyisX5BhGwCKBDCx+BNK7xQcJOt4
|
||||
WIbhD5egDlwE9b4V2sBtXB55iO4nm0izZeIgWuuAJQDz0i/0eGx4HOmGPiQB9a4FvSvNuP+mGZT/BiT6
|
||||
B+h9uoUUs1cPYDgeltdJUB4v6MAgdCEplCvnoVg+hx5/K+697ITcMIV+xzZSuw0c7JLqWn0p0N4EOp1W
|
||||
UHO3MOSXgfJdQZfrOq7Sw8R+CIMzX+sBQu/zpLI2f1qEjHjiuKuSYEB7CpT6JJR9LVDZP0I7+x3q59+Q
|
||||
POhAAOQKPBTOs+iYPoN2+2mYuo5gw3oBCSL3wHG0mU5ANn4MUsPReoDGvs7mCSCw/bai0IYb4dVJJNw3
|
||||
EdxcrrlL5sugnVVd0IqAcs2jatjBdTLP1wIMrsiPPFNAgRSywO2DFcWDJXumTvvIiqMc+zvKk+7okGk2
|
||||
FhSGQ7D2P5F/wJIYfWWUD/Od/wAx6RUqGJsn2QAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="mMenViewExtAppsToolbar.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAmlJREFUOE+lVN1L
|
||||
k1EcPv9Ft06mzOF0m27qdHOb040cRpubc3PEyKQhTktbVuJAWkUKUr5FkWXSh5pObKTmJK1WYFdjBnVR
|
||||
7MXogwIvkurCi552DpwoCBK8eC6f3/PFOQQA2Q3IjVv3ri6vJrdXn61h5ekaEo+fYz7xBPcXHmE6voQ7
|
||||
M/MYm5jDlZvTuHjtLgYvjSM6PIq+s8J2e3d/iGTJP1/u24t3sT0wzxnw6s3Gf/H67QY+fdlE6NTgCFlN
|
||||
vsDX5Yf48V7Agw9xfPy8uSNsffuO4PEzAqGWVSoV1Go1SkpKUFpaCo1GA61Wi7KyMlRUVKCyshJVVVXQ
|
||||
6/Worq6GyWRCTU0NWrsiAllaSTJSTk4OJBIJcnNzIZVKkZeXh/z8fMhkMsjlchQWFkKhUKC4uJgJ1tXV
|
||||
oTsyLBBaGD+QSqUwOTm54wPZDgQSX1xhNrliJpNBT0/PP1VpTB6xvr4eh8NRgczEEyxbQUEB0uk0YrEY
|
||||
ioqKflvlJN5JeXk5dDodGhoacLCzXyATswswm82MoFQqWT5eJiVRcBItk4pROBwOHGjvFcj4VBxWq/Uv
|
||||
Em+fKvEFDAYDW8BoNLIVXC4XfG3dAhm9PQuah6rQLijpz8n4bNQlhcViQW1tLZqamuAOhARyeWyK5eHW
|
||||
uBJVoQS6NyfR6ShsNhu8Xi+c/qBAzo9c36J5nE4nGhsbmTW3280UKDweD5qbmxnB5/OhpaWFwe/3w+4O
|
||||
DJHO3oHOvuiF9b7oiBgeGBaP9g+JHSfOicFjp8VDXREx0HFS9AfDorf1iJi1LGZVxf3eNtHuCqxb7C7j
|
||||
rp4y/QZ+AXhAQe1Sf9VzAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="mMenToolsExternalApps.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAmlJREFUOE+lVN1L
|
||||
k1EcPv9Ft06mzOF0m27qdHOb040cRpubc3PEyKQhTktbVuJAWkUKUr5FkWXSh5pObKTmJK1WYFdjBnVR
|
||||
7MXogwIvkurCi552DpwoCBK8eC6f3/PFOQQA2Q3IjVv3ri6vJrdXn61h5ekaEo+fYz7xBPcXHmE6voQ7
|
||||
M/MYm5jDlZvTuHjtLgYvjSM6PIq+s8J2e3d/iGTJP1/u24t3sT0wzxnw6s3Gf/H67QY+fdlE6NTgCFlN
|
||||
vsDX5Yf48V7Agw9xfPy8uSNsffuO4PEzAqGWVSoV1Go1SkpKUFpaCo1GA61Wi7KyMlRUVKCyshJVVVXQ
|
||||
6/Worq6GyWRCTU0NWrsiAllaSTJSTk4OJBIJcnNzIZVKkZeXh/z8fMhkMsjlchQWFkKhUKC4uJgJ1tXV
|
||||
oTsyLBBaGD+QSqUwOTm54wPZDgQSX1xhNrliJpNBT0/PP1VpTB6xvr4eh8NRgczEEyxbQUEB0uk0YrEY
|
||||
ioqKflvlJN5JeXk5dDodGhoacLCzXyATswswm82MoFQqWT5eJiVRcBItk4pROBwOHGjvFcj4VBxWq/Uv
|
||||
Em+fKvEFDAYDW8BoNLIVXC4XfG3dAhm9PQuah6rQLijpz8n4bNQlhcViQW1tLZqamuAOhARyeWyK5eHW
|
||||
uBJVoQS6NyfR6ShsNhu8Xi+c/qBAzo9c36J5nE4nGhsbmTW3280UKDweD5qbmxnB5/OhpaWFwe/3w+4O
|
||||
DJHO3oHOvuiF9b7oiBgeGBaP9g+JHSfOicFjp8VDXREx0HFS9AfDorf1iJi1LGZVxf3eNtHuCqxb7C7j
|
||||
rp4y/QZ+AXhAQe1Sf9VzAAAAAElFTkSuQmCC
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAi9JREFUOE+lk+9P
|
||||
UlEYx/2netf6sfmqtdqsOXsRrRFzUas1XTrMRHRek/ihVwFBupEFCiUliiZhBaNkChdyq+ms1Sx+DPBe
|
||||
4Mr1Vd8OvKAYzLZ68Tnb2Tnn8zznOc9pAvBfVAabJ6phXrCpCVeE1zoaYK+FdkZ4izuiqwqYeTadyWZ/
|
||||
FgUBwr54KNmiiDRXgPFZlKsKypELRQETC7vQLMSgXJyFbYOGMz4Ie0yF8YAaVx+Y0WENosv6EZmCiHEX
|
||||
y1cFOpJm2W5c3AW1tAzbOo2ZD52wrLfDuCaFKSyH2jcA+eQTKJhPSPMNBAUimFz6DqV3Gg4S1RSWYfTd
|
||||
RagDF0C9bYM2cAuXxu6j99EWUnyJCKK1Ap4ILMs/0Oex4WGkF/qQBNSbVvSvtuDuqxZQ/uuQ6O+h//E2
|
||||
ktx+vYATRFhfJkB5vKADw9CFpFCunoNi5Sz6/G2487wbcsM0Bh07SO41yGCPVJfxJUF74+h2MqDmb2LE
|
||||
LwPlu4we1zVcoUdJ+iEMz36uF5TfOkcqa/OnKpIxTwy3VRIMaZtBqU9COdAKlf09tHNfoX76BYlGgmxe
|
||||
hMJ5Bl0zp9FpPwVzzxFsMucRJ7iHjqPdfAIy0zFIDUfrBRr7Bp8jgsDO6yqhTTfCa1OIu28guLVSs5bI
|
||||
lUA7/8ygIijVbDqMRE6sFRhckW85Lo88KWReOABfQQRP5lwdB8hUWpn93cpT7uiIeY4Nlu9VNv8N8g94
|
||||
ckZfFfw7aPoFMekVKhSu/5wAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="mMenToolsOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAftJREFUOE+Vk81v
|
||||
0mAcx/lf/FuMGmOMJ08ePYvRg2RZllKgFAvEMrDYwg664BybMQw3KmpteTOpklVefINlyEDQ1dPioWbf
|
||||
PeUwNW50Hppe+vn8vr/v89QFwOX0pNNptyRJLVEUrWQyaf35vSOcSqXcBNzr9/swTROJRILwv4c6Cgjc
|
||||
6vV6GA6HKBQKiMVi/ycQBMGyp9frdfA8r9rTI5EIOI5DKBSyHBOQyL86nQ7K5TKi0eircDisZbNZtNtt
|
||||
MAwzXRCPx8+SyPuNRgO1Wg3FYhGyLENVVZRKJfj9/taRCW6vfOGDmY91EtmqVqvQdR32u1KpQNM0KIoC
|
||||
n8+35/V63f8I2KVtXioMITwdgFt6D8MwkM/nwbLsvh2ZTLVomm5RFOW2+/hLwNjw+gDF+g/Ib01wqz3M
|
||||
iAaCweDPQCBw6qj7cijwZ7b5JIGfETCjjHD/+Vfkat9BPdjCFdZ4fdxlmwjoxS1eWBtAfmNi8eUIibUd
|
||||
pMgaq5Vv8Cx0cYluPjpWMEfg+dwAGzqBX4wwn9uBSJKslMa4le7iIvUuO+2quzwLHazru5PI/JM+7pHy
|
||||
stoYN6UuLsxNhyclXrv7iey6C3GDNE/WWCbwDQKfm9187PSTTQRX73zQ7aKW1TEeKmNcT37GmZmTwYfH
|
||||
eJlpNklROD+7idOek8O24AByavlRgSfdiAAAAABJRU5ErkJggg==
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgRJREFUOE+NkEtv
|
||||
EmEUhue/+FuMGmOMK1cuXYvRhaRpmuE+lEscCoIz0IU2WEtrDKUtiIoMN5PRSZGLN2iKFAQtrhoXY/r2
|
||||
DAl2qJPaxfPN5JzzfN85hwHwX2KxmEkUxYYgCGokElH1ualCI6LRqInEg263i9FohFAoROHj/FSxESQ3
|
||||
Op0O+v0+0uk0AoEAhY/zU8VGhMNhVXtdURTwPJ/XYj6fDx6PB263WzWU9FDLf1qtForFIvx+/xuv1ysl
|
||||
Egk0m004nc7TLwgGgxep5cNarYZKpYJsNotMJoN8Po9CoQC73d4wFOdXv/Gu+GeFWlbL5TJkWYb2LZVK
|
||||
kCQJuVwONpvtwGKxmP6RueVdXkz3Ed7owbP8EdVqFalUChzHHWot06uq1WptsCxr0uqnZKcmb/aQVX4h
|
||||
834Ez1oHM0IVLpfrt8PhOKevnfD3xx7f5SMkvyAxnhvg0cvvSFZ+gn28gxtc9a1e0jM+rEs7fHi9h8y7
|
||||
EZZeDxBa30OUxlgr/YB5sY1r1vrTk+IEZo7khWQPWzLJrwZYSO5BoE5WC0Pci7Vxlf2QMBInMObFFjbl
|
||||
/XHL/PMuHtLyEtIQd8U2rsydLmswtx58oVn3IWzR5mmMFZLvkHxpdvuZkXAS5ub9T7K2qJX8EE9yQ9yO
|
||||
fMWFmbPJGuPjurNep0Xh8uw2zpvPLgNgjgByavlR+3PXTAAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="mMenInfoHelp.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAq5JREFUOE+lk99P
|
||||
UmEcxv1b9E9oreZq1Wrd1da46KILp+ZPoKnlahksZ+kwp1lSamY6FdTUORUFTgIiiCaKgCBwMJFfyoGB
|
||||
cOCo2faELCGrdVEXn7v3+bx73vf7zQKQ9T/8FtaQhzlqxwFPZdsnFRsM/ckSp2VmmpwxRnlThr2cXy87
|
||||
JVDaGNasNeF3Bg6xucvA4aNTOHcSsHoTGFkM+ocWAqyfJWkBsR5nSU2x+Ba1j7UvYYjnPBCM2VA/soEu
|
||||
YhM6axB2P40PCk+8i9hOS1ICyVo0e3I14tsMMFiwhVCbDHUSTnhCDNyhBMYWvagRmyBf9cPijqJ1kvQ1
|
||||
j9uzj7MpwehSkL/uiWPFGQF/0IKHPWtIHBwl+faDI9QOGlHTb8C8hYJ6nUKd2MRPC/rm/KQ92bWb2EJ1
|
||||
jwFV3SvwBBOYWvZCad4Bk5QpzT6w2zVonbLC5ArjUbeeTAs6ZC7G4YuBLzKi8r0enE5d8rAW03o3wvQB
|
||||
dsMMemftKG1To/KdFlb3HjhCLZMWtIzbGbs3hscDRrA7tCh/q0HZGw1izFdsUzS4QjWKWhS4m4QrVMHi
|
||||
iSC/SZkRPBObSfN2BEKJHZx2HcqE8yh5PYfil8oUhS8IFDbKUNAoRb14GXonhdt10kyFZB++TO+F1kqh
|
||||
skOXDoai+6D2GOQJZlIUCiQgVt0QJevcqJnIPCJXuJBd/mret2SjIF/xgN2mQkGTHG3jhhTH4fyGCQyr
|
||||
HFAZvbhePea7en80843Hj5EnmGXdaSDiGssOlCYfnouWUNIsRVHjNJ72aiHXu6BY8+Byxcf4xXtDpwfp
|
||||
ZDRv8SWsm08m/X3EBj47AjC6QikWbbvokpiRyxH7z5eL/jzKJ5JrD0ZzrlSN8C5VDJMXuIN0LltMnysb
|
||||
IM+W9vPOFPf9fZn+Za2/A9evBaJ0QokTAAAAAElFTkSuQmCC
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAqtJREFUOE+lk+1P
|
||||
klEYxv1b9E9oreZq1Wp9q63xoQ99cGq+Ak0tV8tgOUuHOc2SUjPTqaCmzqko8CQggmiiCAgCDybypjww
|
||||
EB541Gy7QpaQ1dpaH35n5z67r2u7zrlPFoD/4rcDDXmYo3Yc8FS2fVKxwdCfLHFaZqbJGWOUN2XYy/m1
|
||||
/1ShtDGsWWvC7wwcYnOXgcNHp3DuJGD1JjCyGPQPLQRYP2vSG2I9zpKaYvEtah9rX8IQz3kgGLOhfmQD
|
||||
XcQmdNYg7H4aHxSeeBexnTZJLZK1aPbkasS3GWCwYAuhNinqJJzwhBi4QwmMLXpRIzZBvuqHxR1F6yTp
|
||||
ax63Z6cNRpeC/HVPHCvOCPiDFjzsWUPi4CjJtx8coXbQiJp+A+YtFNTrFOrEJn7aoG/OT9qTWbuJLVT3
|
||||
GFDVvQJPMIGpZS+U5h0wSQOl2Qd2uwatU1aYXGE86taTaYMOmYtx+GLgi4yofK8Hp1OXbNZiWu9GmD7A
|
||||
bphB76wdpW1qVL7TwureA0eoZdIGLeN2xu6N4fGAEewOLcrfalD2RoMY8xXbFA2uUI2iFgXuJuEKVbB4
|
||||
IshvUmYMnonNpHk7AqHEDk67DmXCeZS8nkPxS2WKwhcEChtlKGiUol68DL2Twu06aSZCMg9fpvdCa6VQ
|
||||
2aFLC0PRfVB7DPIEMykKBRIQq26IknFu1ExkLpErXMgufzXvW7JRkK94wG5ToaBJjrZxQ4pjcX7DBIZV
|
||||
DqiMXlyvHvNdvT+aecZj8gSzrDsNRFxj2YHS5MNz0RJKmqUoapzG014t5HoXFGseXK74GL94b+j0IJ1w
|
||||
iy9h3Xwy6e8jNvDZEYDRFUqxaNtFl8SMXI7Yf75c9OdRPuHag9GcK1UjvEsVw+QF7iCdyxbT58oGyLOl
|
||||
/bwzxX1//0z/DrK+A9evBaLmuZREAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="mMenInfoWebsite.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA2ZJREFUOE9dk91P
|
||||
k2cYxptsO5vZf8GxZvEAAzYUV6HQMcSImPEpbQPtCynNCmWx6ksXKlhGiRsTJypYsEApYItfLdBarBX6
|
||||
trUtLRRah26DbqzGCSxz8fLpm2imB7/kyp37/j0n18MBwPk/Da7qbMIIIUF4SfiHsEmYopxVeR/uvzsm
|
||||
Cx8TrqcP7v1iwGLyLmaezMOyMo+JiB1jkSHUzZS/Et89MV0zXfrpWxErIEefEFwD0fPY2PZiZSuE4BYD
|
||||
c8IHa3wJA6EQrvkZjPhd0HvaUW4uCZSNFH2Wvn0rMFyNtCP+Yg5LL9wIp8LwbfoxFAtjNL6Kbm8MnQ8j
|
||||
6HJ4YA7boXe3omRQMM0KyMtZhH/X/56DJWXF2HMrbm05cOtpCD9Hl/FDcAWU1QvqphuaBSv6Ehfg/d0M
|
||||
4SX+f/k/8orSApM1/hMW/7BiODUJ418eeJIB6HxhdC4sQ2zxQmKzQb7UB0Wchny1FYN+Pa4/1CL3++w7
|
||||
acH64z9vYmD9EnTJy+T1ENxJPxru+CCeXMQ3ngVIYkoIl8UQRkQoD8qgvqeAM2bAQW3mb2nB9urzGbRF
|
||||
z4KKNaPv11kMJxZRfuMRZHYnOlduoyo6BG6gGXx/Pb6ylUE2ehLMsylk0vt3ONT9qp211AxOBRSQBbrR
|
||||
/8SGimE3KiaCKLn4AA22B2gNmEG5LKg0mlFq/BaSwRNgnk5iv3rfLqd+tuKZb3MC3aE2dKzO4vS8HZXa
|
||||
K6C1nejv74fyzHcoPGPCYXqCZA0707S3oXdIi8+b925ySDGmzJEeWOJX0XifRu05JfR6PTY2NrC2tgaH
|
||||
w4FWTQcaT3cgHImyM5eL9IHs8Cpy1jnVlmN8UoxXwaQVVfrjUDQrwASDKKNaUFAohEgkQk9PD1QqFZsL
|
||||
CgugVDewkiZF0zZbpNIbX07q5pSg1NWgNTQrqDM4kHOID7vdDoZh4HQ6YTKZkPsFDyqDmBXQNL3LCo5c
|
||||
y99DihGoVh8F1ShlBZVUE3i5h8Dn81FcXMySzrxcHgRf52+nBRKJJPXuMx2+kLMnW5XpLDgmeN2l74Jx
|
||||
bBTj4+Po7e2FXC5HS0sLm9Mz44gxpdPpUkKhMPLeV87IyPgoS3KgKa8ob6dGVPO6TlqHemk9cmTc1MHG
|
||||
LIbkXalUultbW/tSIBAkuFzu3jfA3LOfi8khbAAAAABJRU5ErkJggg==
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA2BJREFUOE9dkt9P
|
||||
Wmccxkm63bXZf+F1l6UXLloidlRRZp1Lnc38OYEoHA2SoriMdkcWqQ4rpqur3VyrRYuKqAW7tqBCsZQp
|
||||
BxggKAqt7TalczRd1WZd+uw956Jpd/FJnnzzPp/35uEBeIsmT20uYYyQIjwnvCBsE2Yod03B/9+/WXyH
|
||||
cI0t3HlownL6NuYeLMK2toipmBMTsRE0zFW+lN4+NVs3W37wLQEpvUvwDMW/xdauH2s7EYR3GFhTAdiT
|
||||
KxiKRHA1yGAs6IHR14lKa1moYqzkvTcFpiuxTiSfLWDlmRfRTBSB7SBGElGMJ9fR60+g+34MPS4frFEn
|
||||
jN52lA2LZjkBKecQ/tn8ewG2jB0TT+24uePCzUcR/BBfxXfhNVB2P6gbXuiW7BhIXYD/DyvEl4X/Fl4U
|
||||
lLACiz35PZaf2DGamYb5Lx986RAMgSi6l1YhtfkhczigXBmAKklDud6O4aAR1+7rkX8+9xYr2Pz1zxsY
|
||||
2rwMQ/pH8nsE3nQQTbcCkE4v47RvCbKEGuJVKcQxCSrDCmjvqOBOmHBUn/07K9hdfzqHjvjXoBKtGPht
|
||||
HqOpZVRe/wUKpxvdaz+jJj4CfqgVwmAjTjgqoBj/AszjGWTTR/Z41N2avY3MHL4KqaAI9WLwgQNVo15U
|
||||
TYVRdukemhz30B6ygvLYUG22otz8JWTDp8A8msYR7fv7vMb5qseB7Sn0RjrQtT6PM4tOVOt/Aq3vxuDg
|
||||
INRnv0HxWQuO01Mk67ibrrMD/SN6fNB6eJtHhjFjjfXBlryC5rs06s+pYTQasbW1hY2NDbhcLrTrutB8
|
||||
pgvRWJy7eTxkD+SNoCpvk1drOykkw3gZTttRY/wMqlYVmHAYFVQbiorFkEgk6Ovrg0aj4XJRcRHU2iZO
|
||||
0qJq2eWGVH7942nDghqUtha0juYEDSYX8o4J4XQ6wTAM3G43LBYL8j8SQGOScgKapvc5wSdXCw+RYYRq
|
||||
tZ+CapZzgmqqBYL8YxAKhSgtLeVgsyBfANHnhbusQCaTZTgBy/ELeYdyNdnuopOiVz3GHpgnxjE5OYn+
|
||||
/n4olUq0tbVxmb2Zx8wZg8GQEYvFsdcClqysrAM5sg9bCkoK9uokda8a5A1olDciT8HPHG3OYUjel8vl
|
||||
+/X19c9FIlGKz+cf/g/A3LOff0xp0AAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="tsQuickConnect.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>521, 17</value>
|
||||
<value>367, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tsExtAppsToolbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>374, 17</value>
|
||||
<metadata name="tsExternalTools.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="cMenExtAppsToolbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 56</value>
|
||||
<value>504, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>184, 56</value>
|
||||
<value>671, 17</value>
|
||||
</metadata>
|
||||
<metadata name="mnuQuickConnectProtocol.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>778, 17</value>
|
||||
</metadata>
|
||||
<metadata name="mnuConnections.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 56</value>
|
||||
</metadata>
|
||||
<metadata name="tmrAutoSave.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>252, 17</value>
|
||||
<value>245, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>155</value>
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
Imports System.IO
|
||||
Imports mRemoteNG.App
|
||||
Imports mRemoteNG.My
|
||||
Imports SharedLibraryNG
|
||||
Imports System.Text
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports System.Reflection
|
||||
@@ -28,6 +33,54 @@ Public Class frmMain
|
||||
Return _isClosing
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private _usingSqlServer As Boolean = False
|
||||
Public Property UsingSqlServer As Boolean
|
||||
Get
|
||||
Return _usingSqlServer
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
If _usingSqlServer = value Then Return
|
||||
_usingSqlServer = value
|
||||
UpdateWindowTitle()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _connectionsFileName As String = Nothing
|
||||
Public Property ConnectionsFileName As String
|
||||
Get
|
||||
Return _connectionsFileName
|
||||
End Get
|
||||
Set(value As String)
|
||||
If _connectionsFileName = value Then Return
|
||||
_connectionsFileName = value
|
||||
UpdateWindowTitle()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _showFullPathInTitle As Boolean = My.Settings.ShowCompleteConsPathInTitle
|
||||
Public Property ShowFullPathInTitle As Boolean
|
||||
Get
|
||||
Return _showFullPathInTitle
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
If _showFullPathInTitle = value Then Return
|
||||
_showFullPathInTitle = value
|
||||
UpdateWindowTitle()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _selectedConnection As Connection.Info = Nothing
|
||||
Public Property SelectedConnection As Connection.Info
|
||||
Get
|
||||
Return _selectedConnection
|
||||
End Get
|
||||
Set(value As Connection.Info)
|
||||
If _selectedConnection Is value Then Return
|
||||
_selectedConnection = value
|
||||
UpdateWindowTitle()
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
|
||||
#Region "Startup & Shutdown"
|
||||
@@ -49,6 +102,7 @@ Public Class frmMain
|
||||
Startup.ParseCommandLineArgs()
|
||||
|
||||
ApplyLanguage()
|
||||
PopulateQuickConnectProtocolMenu()
|
||||
|
||||
AddHandler ThemeManager.ThemeChanged, AddressOf ApplyThemes
|
||||
ApplyThemes()
|
||||
@@ -62,19 +116,24 @@ Public Class frmMain
|
||||
Tools.IeBrowserEmulation.Register()
|
||||
|
||||
Startup.GetConnectionIcons()
|
||||
GetExtApps()
|
||||
Windows.treePanel.Focus()
|
||||
|
||||
Tree.Node.TreeView = Windows.treeForm.tvConnections
|
||||
|
||||
If My.Settings.FirstStart And _
|
||||
Not My.Settings.LoadConsFromCustomLocation And _
|
||||
Not IO.File.Exists(GetStartupConnectionFileName()) Then
|
||||
NewConnections(GetStartupConnectionFileName())
|
||||
End If
|
||||
|
||||
'LoadCredentials()
|
||||
LoadConnections()
|
||||
If Not IsConnectionsFileLoaded Then
|
||||
Application.Exit()
|
||||
System.Windows.Forms.Application.Exit()
|
||||
Return
|
||||
End If
|
||||
|
||||
PuttySessions.StartWatcher()
|
||||
Putty.Sessions.StartWatcher()
|
||||
|
||||
If My.Settings.StartupComponentsCheck Then
|
||||
Windows.Show(UI.Window.Type.ComponentsCheck)
|
||||
@@ -92,6 +151,8 @@ Public Class frmMain
|
||||
AddHandler Microsoft.Win32.SystemEvents.DisplaySettingsChanged, AddressOf DisplayChanged
|
||||
|
||||
Me.Opacity = 1
|
||||
|
||||
KeyboardShortcuts.RequestKeyNotifications(Handle)
|
||||
End Sub
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
@@ -102,12 +163,11 @@ Public Class frmMain
|
||||
mMenFileLoad.Text = My.Language.strMenuOpenConnectionFile
|
||||
mMenFileSave.Text = My.Language.strMenuSaveConnectionFile
|
||||
mMenFileSaveAs.Text = My.Language.strMenuSaveConnectionFileAs
|
||||
mMenFileImportExport.Text = My.Language.strImportExport
|
||||
ImportFromActiveDirectoryToolStripMenuItem.Text = My.Language.strImportAD
|
||||
ImportFromPortScanToolStripMenuItem.Text = My.Language.strImportPortScan
|
||||
ImportFromRDPFileToolStripMenuItem.Text = My.Language.strImportRDPFiles
|
||||
ImportFromXMLFileToolStripMenuItem.Text = My.Language.strImportmRemoteXML
|
||||
ExportToXMLFileToolStripMenuItem.Text = My.Language.strExportmRemoteXML
|
||||
mMenFileImport.Text = Language.strImportMenuItem
|
||||
mMenFileImportFromFile.Text = Language.strImportFromFileMenuItem
|
||||
mMenFileImportFromActiveDirectory.Text = Language.strImportAD
|
||||
mMenFileImportFromPortScan.Text = Language.strImportPortScan
|
||||
mMenFileExport.Text = Language.strExportToFileMenuItem
|
||||
mMenFileExit.Text = My.Language.strMenuExit
|
||||
|
||||
mMenView.Text = My.Language.strMenuView
|
||||
@@ -145,8 +205,8 @@ Public Class frmMain
|
||||
mMenInfoAnnouncements.Text = My.Language.strMenuAnnouncements
|
||||
|
||||
lblQuickConnect.Text = My.Language.strLabelConnect
|
||||
btnQuickyPlay.Text = My.Language.strMenuConnect
|
||||
mMenQuickyCon.Text = My.Language.strMenuConnections
|
||||
btnQuickConnect.Text = My.Language.strMenuConnect
|
||||
btnConnections.Text = My.Language.strMenuConnections
|
||||
|
||||
cMenToolbarShowText.Text = My.Language.strMenuShowText
|
||||
|
||||
@@ -200,7 +260,9 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub frmMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
||||
#If Not PORTABLE Then
|
||||
#If PORTABLE Then
|
||||
Return
|
||||
#End If
|
||||
If Not My.Settings.CheckForUpdatesAsked Then
|
||||
Dim commandButtons() As String = {My.Language.strAskUpdatesCommandRecommended, My.Language.strAskUpdatesCommandCustom, My.Language.strAskUpdatesCommandAskLater}
|
||||
cTaskDialog.ShowTaskDialogBox(Me, My.Application.Info.ProductName, My.Language.strAskUpdatesMainInstruction, String.Format(My.Language.strAskUpdatesContent, My.Application.Info.ProductName), "", "", "", "", String.Join("|", commandButtons), eTaskDialogButtons.None, eSysIcons.Question, eSysIcons.Question)
|
||||
@@ -210,15 +272,17 @@ Public Class frmMain
|
||||
If cTaskDialog.CommandButtonResult = 1 Then
|
||||
Windows.ShowUpdatesTab()
|
||||
End If
|
||||
Return
|
||||
End If
|
||||
|
||||
If Not My.Settings.CheckForUpdatesOnStartup Then Return
|
||||
|
||||
Dim nextUpdateCheck As Date = My.Settings.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(My.Settings.CheckForUpdatesFrequencyDays))
|
||||
If My.Settings.UpdatePending Or Date.UtcNow > nextUpdateCheck Then
|
||||
If Not IsHandleCreated Then CreateHandle() ' Make sure the handle is created so that InvokeRequired returns the correct result
|
||||
Startup.CheckForUpdate()
|
||||
Startup.CheckForAnnouncement()
|
||||
End If
|
||||
#End If
|
||||
End Sub
|
||||
|
||||
Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
||||
@@ -338,7 +402,6 @@ Public Class frmMain
|
||||
Case Tree.Node.Type.Root
|
||||
mMenFileNewConnection.Enabled = True
|
||||
mMenFileNewFolder.Enabled = True
|
||||
mMenFileImportExport.Enabled = True
|
||||
mMenFileDelete.Enabled = False
|
||||
mMenFileRename.Enabled = True
|
||||
mMenFileDuplicate.Enabled = False
|
||||
@@ -348,7 +411,6 @@ Public Class frmMain
|
||||
Case Tree.Node.Type.Container
|
||||
mMenFileNewConnection.Enabled = True
|
||||
mMenFileNewFolder.Enabled = True
|
||||
mMenFileImportExport.Enabled = True
|
||||
mMenFileDelete.Enabled = True
|
||||
mMenFileRename.Enabled = True
|
||||
mMenFileDuplicate.Enabled = True
|
||||
@@ -358,7 +420,6 @@ Public Class frmMain
|
||||
Case Tree.Node.Type.Connection
|
||||
mMenFileNewConnection.Enabled = True
|
||||
mMenFileNewFolder.Enabled = True
|
||||
mMenFileImportExport.Enabled = False
|
||||
mMenFileDelete.Enabled = True
|
||||
mMenFileRename.Enabled = True
|
||||
mMenFileDuplicate.Enabled = True
|
||||
@@ -368,7 +429,6 @@ Public Class frmMain
|
||||
Case Tree.Node.Type.PuttyRoot, Tree.Node.Type.PuttySession
|
||||
mMenFileNewConnection.Enabled = False
|
||||
mMenFileNewFolder.Enabled = False
|
||||
mMenFileImportExport.Enabled = False
|
||||
mMenFileDelete.Enabled = False
|
||||
mMenFileRename.Enabled = False
|
||||
mMenFileDuplicate.Enabled = False
|
||||
@@ -378,7 +438,6 @@ Public Class frmMain
|
||||
Case Else
|
||||
mMenFileNewConnection.Enabled = True
|
||||
mMenFileNewFolder.Enabled = True
|
||||
mMenFileImportExport.Enabled = False
|
||||
mMenFileDelete.Enabled = False
|
||||
mMenFileRename.Enabled = False
|
||||
mMenFileDuplicate.Enabled = False
|
||||
@@ -388,64 +447,78 @@ Public Class frmMain
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileNewConnection_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileNewConnection.Click
|
||||
App.Runtime.Windows.treeForm.AddConnection()
|
||||
Private Shared Sub mMenFileNewConnection_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenFileNewConnection.Click
|
||||
Windows.treeForm.AddConnection()
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileNewFolder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileNewFolder.Click
|
||||
App.Runtime.Windows.treeForm.AddFolder()
|
||||
Private Shared Sub mMenFileNewFolder_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenFileNewFolder.Click
|
||||
Windows.treeForm.AddFolder()
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileNew.Click
|
||||
Dim lD As SaveFileDialog = Tools.Controls.ConnectionsSaveAsDialog
|
||||
If lD.ShowDialog = System.Windows.Forms.DialogResult.OK Then
|
||||
NewConnections(lD.FileName)
|
||||
Else
|
||||
Exit Sub
|
||||
End If
|
||||
Private Shared Sub mMenFileNew_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenFileNew.Click
|
||||
Dim saveFileDialog As SaveFileDialog = Tools.Controls.ConnectionsSaveAsDialog
|
||||
If Not saveFileDialog.ShowDialog() = DialogResult.OK Then Return
|
||||
|
||||
NewConnections(saveFileDialog.FileName)
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileLoad.Click
|
||||
If App.Runtime.IsConnectionsFileLoaded Then
|
||||
Select Case MsgBox(My.Language.strSaveConnectionsFileBeforeOpeningAnother, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question)
|
||||
Private Shared Sub mMenFileLoad_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenFileLoad.Click
|
||||
If IsConnectionsFileLoaded Then
|
||||
Select Case MsgBox(Language.strSaveConnectionsFileBeforeOpeningAnother, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question)
|
||||
Case MsgBoxResult.Yes
|
||||
App.Runtime.SaveConnections()
|
||||
SaveConnections()
|
||||
Case MsgBoxResult.Cancel
|
||||
Exit Sub
|
||||
Return
|
||||
End Select
|
||||
End If
|
||||
|
||||
LoadConnections(True)
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileSave.Click
|
||||
Private Shared Sub mMenFileSave_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenFileSave.Click
|
||||
SaveConnections()
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileSaveAs.Click
|
||||
Private Shared Sub mMenFileSaveAs_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenFileSaveAs.Click
|
||||
SaveConnectionsAs()
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileExit.Click
|
||||
App.Runtime.Shutdown.Quit()
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileDelete.Click
|
||||
Private Shared Sub mMenFileDelete_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenFileDelete.Click
|
||||
Tree.Node.DeleteSelectedNode()
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileRename_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileRename.Click
|
||||
Private Shared Sub mMenFileRename_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenFileRename.Click
|
||||
Tree.Node.StartRenameSelectedNode()
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
Private Sub mMenFileDuplicate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenFileDuplicate.Click
|
||||
Private Shared Sub mMenFileDuplicate_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenFileDuplicate.Click
|
||||
Tree.Node.CloneNode(Tree.Node.SelectedNode)
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
Private Shared Sub mMenFileImportFromFile_Click(sender As System.Object, e As EventArgs) Handles mMenFileImportFromFile.Click
|
||||
Import.ImportFromFile(Windows.treeForm.tvConnections.Nodes(0), Windows.treeForm.tvConnections.SelectedNode)
|
||||
End Sub
|
||||
|
||||
Private Shared Sub mMenFileImportFromActiveDirectory_Click(sender As System.Object, e As EventArgs) Handles mMenFileImportFromActiveDirectory.Click
|
||||
Windows.Show(UI.Window.Type.ActiveDirectoryImport)
|
||||
End Sub
|
||||
|
||||
Private Shared Sub mMenFileImportFromPortScan_Click(sender As System.Object, e As EventArgs) Handles mMenFileImportFromPortScan.Click
|
||||
Windows.Show(UI.Window.Type.PortScan, True)
|
||||
End Sub
|
||||
|
||||
Private Shared Sub mMenFileExport_Click(sender As System.Object, e As EventArgs) Handles mMenFileExport.Click
|
||||
Export.ExportToFile(Windows.treeForm.tvConnections.Nodes(0), Windows.treeForm.tvConnections.SelectedNode)
|
||||
End Sub
|
||||
|
||||
Private Shared Sub mMenFileExit_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenFileExit.Click
|
||||
Shutdown.Quit()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "View"
|
||||
@@ -604,8 +677,8 @@ Public Class frmMain
|
||||
App.Runtime.Windows.Show(UI.Window.Type.ExternalApps)
|
||||
End Sub
|
||||
|
||||
Private Sub mMenToolsPortScan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenToolsPortScan.Click
|
||||
App.Runtime.Windows.Show(UI.Window.Type.PortScan, Tools.PortScan.PortScanMode.Normal)
|
||||
Private Sub mMenToolsPortScan_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenToolsPortScan.Click
|
||||
App.Runtime.Windows.Show(UI.Window.Type.PortScan, False)
|
||||
End Sub
|
||||
|
||||
Private Sub mMenToolsComponentsCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenToolsComponentsCheck.Click
|
||||
@@ -618,75 +691,67 @@ Public Class frmMain
|
||||
#End Region
|
||||
|
||||
#Region "Quick Connect"
|
||||
Private Sub btnQuickyPlay_ButtonClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnQuickyPlay.ButtonClick
|
||||
CreateQuicky(QuickyText)
|
||||
End Sub
|
||||
|
||||
Private Sub btnQuickyPlay_DropDownOpening(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnQuickyPlay.DropDownOpening
|
||||
CreateQuickyButtons()
|
||||
End Sub
|
||||
|
||||
Private Sub CreateQuickyButtons()
|
||||
Private Sub PopulateQuickConnectProtocolMenu()
|
||||
Try
|
||||
btnQuickyPlay.DropDownItems.Clear()
|
||||
|
||||
For Each fI As FieldInfo In GetType(mRemoteNG.Connection.Protocol.Protocols).GetFields
|
||||
If fI.Name <> "value__" And fI.Name <> "NONE" And fI.Name <> "IntApp" Then
|
||||
Dim nBtn As New ToolStripMenuItem
|
||||
nBtn.Text = fI.Name
|
||||
btnQuickyPlay.DropDownItems.Add(nBtn)
|
||||
AddHandler nBtn.Click, AddressOf QuickyProtocolButton_Click
|
||||
mnuQuickConnectProtocol.Items.Clear()
|
||||
For Each fieldInfo As FieldInfo In GetType(Connection.Protocol.Protocols).GetFields
|
||||
If Not (fieldInfo.Name = "value__" Or fieldInfo.Name = "IntApp") Then
|
||||
Dim menuItem As New ToolStripMenuItem(fieldInfo.Name)
|
||||
If fieldInfo.Name = My.Settings.QuickConnectProtocol Then
|
||||
menuItem.Checked = True
|
||||
btnQuickConnect.Text = My.Settings.QuickConnectProtocol
|
||||
End If
|
||||
mnuQuickConnectProtocol.Items.Add(menuItem)
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "CreateButtons (frmMain) failed" & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddExceptionMessage("PopulateQuickConnectProtocolMenu() failed.", ex, Messages.MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub QuickyProtocolButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
|
||||
Private Sub lblQuickConnect_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles lblQuickConnect.Click
|
||||
cmbQuickConnect.Focus()
|
||||
End Sub
|
||||
|
||||
Private Sub cmbQuickConnect_ConnectRequested(ByVal sender As Object, ByVal e As Controls.QuickConnectComboBox.ConnectRequestedEventArgs) Handles cmbQuickConnect.ConnectRequested
|
||||
btnQuickConnect_ButtonClick(sender, e)
|
||||
End Sub
|
||||
|
||||
Private Sub btnQuickConnect_ButtonClick(ByVal sender As Object, ByVal e As EventArgs) Handles btnQuickConnect.ButtonClick
|
||||
Try
|
||||
Dim conI As Connection.Info = CreateQuicky(QuickyText, Tools.Misc.StringToEnum(GetType(mRemoteNG.Connection.Protocol.Protocols), sender.Text))
|
||||
|
||||
If conI.Port = 0 Then
|
||||
conI.SetDefaultPort()
|
||||
|
||||
If mRemoteNG.Connection.QuickConnect.History.Exists(conI.Hostname) = False Then
|
||||
mRemoteNG.Connection.QuickConnect.History.Add(conI.Hostname)
|
||||
End If
|
||||
Else
|
||||
If mRemoteNG.Connection.QuickConnect.History.Exists(conI.Hostname) = False Then
|
||||
mRemoteNG.Connection.QuickConnect.History.Add(conI.Hostname & ":" & conI.Port)
|
||||
End If
|
||||
Dim connectionInfo As Connection.Info = CreateQuickConnect(cmbQuickConnect.Text.Trim(), Connection.Protocol.Converter.StringToProtocol(My.Settings.QuickConnectProtocol))
|
||||
If connectionInfo Is Nothing Then
|
||||
cmbQuickConnect.Focus()
|
||||
Return
|
||||
End If
|
||||
|
||||
App.Runtime.OpenConnection(conI, mRemoteNG.Connection.Info.Force.DoNotJump)
|
||||
cmbQuickConnect.Add(connectionInfo)
|
||||
|
||||
OpenConnection(connectionInfo, Connection.Info.Force.DoNotJump)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "QuickyProtocolButton_Click (frmMain) failed" & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddExceptionMessage("btnQuickConnect_ButtonClick() failed.", ex, Messages.MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub cmbQuickConnect_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles cmbQuickConnect.KeyDown
|
||||
If e.KeyCode = Keys.Enter Then
|
||||
CreateQuicky(QuickyText)
|
||||
End If
|
||||
Private Sub cmbQuickConnect_ProtocolChanged(ByVal sender As Object, ByVal e As Controls.QuickConnectComboBox.ProtocolChangedEventArgs) Handles cmbQuickConnect.ProtocolChanged
|
||||
SetQuickConnectProtocol(Connection.Protocol.Converter.ProtocolToString(e.Protocol))
|
||||
End Sub
|
||||
|
||||
Private Sub lblQuickConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblQuickConnect.Click
|
||||
Me.cmbQuickConnect.Focus()
|
||||
Private Sub btnQuickConnect_DropDownItemClicked(sender As System.Object, e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles btnQuickConnect.DropDownItemClicked
|
||||
SetQuickConnectProtocol(e.ClickedItem.Text)
|
||||
End Sub
|
||||
|
||||
Private Function QuickyText() As String
|
||||
Dim txt As String
|
||||
|
||||
txt = cmbQuickConnect.Text
|
||||
|
||||
If txt.StartsWith(" ") Or txt.EndsWith(" ") Then
|
||||
txt = txt.Replace(" ", "")
|
||||
cmbQuickConnect.Text = txt
|
||||
End If
|
||||
|
||||
Return txt
|
||||
End Function
|
||||
Private Sub SetQuickConnectProtocol(ByVal protocol As String)
|
||||
My.Settings.QuickConnectProtocol = protocol
|
||||
btnQuickConnect.Text = protocol
|
||||
For Each menuItem As ToolStripMenuItem In mnuQuickConnectProtocol.Items
|
||||
If menuItem.Text = protocol Then
|
||||
menuItem.Checked = True
|
||||
Else
|
||||
menuItem.Checked = False
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Info"
|
||||
@@ -721,43 +786,43 @@ Public Class frmMain
|
||||
#End Region
|
||||
|
||||
#Region "Connections DropDown"
|
||||
Private Sub mMenQuickyCon_DropDownOpening(ByVal sender As Object, ByVal e As System.EventArgs) Handles mMenQuickyCon.DropDownOpening
|
||||
mMenQuickyCon.DropDownItems.Clear()
|
||||
Private Sub btnConnections_DropDownOpening(ByVal sender As Object, ByVal e As EventArgs) Handles btnConnections.DropDownOpening
|
||||
btnConnections.DropDownItems.Clear()
|
||||
|
||||
For Each tNode As TreeNode In App.Runtime.Windows.treeForm.tvConnections.Nodes
|
||||
AddNodeToMenu(tNode.Nodes, mMenQuickyCon)
|
||||
For Each treeNode As TreeNode In Windows.treeForm.tvConnections.Nodes
|
||||
AddNodeToMenu(treeNode.Nodes, btnConnections)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Shared Sub AddNodeToMenu(ByVal tnc As TreeNodeCollection, ByVal menToolStrip As ToolStripMenuItem)
|
||||
Private Shared Sub AddNodeToMenu(ByVal treeNodeCollection As TreeNodeCollection, ByVal toolStripMenuItem As ToolStripDropDownItem)
|
||||
Try
|
||||
For Each tNode As TreeNode In tnc
|
||||
Dim tMenItem As New ToolStripMenuItem()
|
||||
tMenItem.Text = tNode.Text
|
||||
tMenItem.Tag = tNode
|
||||
For Each treeNode As TreeNode In treeNodeCollection
|
||||
Dim menuItem As New ToolStripMenuItem()
|
||||
menuItem.Text = treeNode.Text
|
||||
menuItem.Tag = treeNode
|
||||
|
||||
If Tree.Node.GetNodeType(tNode) = Tree.Node.Type.Container Then
|
||||
tMenItem.Image = My.Resources.Folder
|
||||
tMenItem.Tag = tNode.Tag
|
||||
If Tree.Node.GetNodeType(treeNode) = Tree.Node.Type.Container Then
|
||||
menuItem.Image = My.Resources.Folder
|
||||
menuItem.Tag = treeNode.Tag
|
||||
|
||||
menToolStrip.DropDownItems.Add(tMenItem)
|
||||
AddNodeToMenu(tNode.Nodes, tMenItem)
|
||||
ElseIf Tree.Node.GetNodeType(tNode) = Tree.Node.Type.Connection Or _
|
||||
Tree.Node.GetNodeType(tNode) = Tree.Node.Type.PuttySession Then
|
||||
tMenItem.Image = Windows.treeForm.imgListTree.Images(tNode.ImageIndex)
|
||||
tMenItem.Tag = tNode.Tag
|
||||
toolStripMenuItem.DropDownItems.Add(menuItem)
|
||||
AddNodeToMenu(treeNode.Nodes, menuItem)
|
||||
ElseIf Tree.Node.GetNodeType(treeNode) = Tree.Node.Type.Connection Or _
|
||||
Tree.Node.GetNodeType(treeNode) = Tree.Node.Type.PuttySession Then
|
||||
menuItem.Image = Windows.treeForm.imgListTree.Images(treeNode.ImageIndex)
|
||||
menuItem.Tag = treeNode.Tag
|
||||
|
||||
menToolStrip.DropDownItems.Add(tMenItem)
|
||||
toolStripMenuItem.DropDownItems.Add(menuItem)
|
||||
End If
|
||||
|
||||
AddHandler tMenItem.MouseUp, AddressOf ConMenItem_MouseUp
|
||||
AddHandler menuItem.MouseUp, AddressOf ConnectionsMenuItem_MouseUp
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddNodeToMenu failed" & vbNewLine & ex.Message, True)
|
||||
MessageCollector.AddExceptionMessage("frmMain.AddNodeToMenu() failed", ex, Messages.MessageClass.ErrorMsg, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Shared Sub ConMenItem_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
|
||||
Private Shared Sub ConnectionsMenuItem_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
|
||||
If e.Button = MouseButtons.Left Then
|
||||
If TypeOf sender.Tag Is Connection.Info Then
|
||||
App.Runtime.OpenConnection(sender.Tag)
|
||||
@@ -842,6 +907,15 @@ Public Class frmMain
|
||||
'Send to the next window
|
||||
SendMessage(fpChainedWindowHandle, m.Msg, m.LParam, m.WParam)
|
||||
fpChainedWindowHandle = m.LParam
|
||||
Case KeyboardHook.HookKeyMsg
|
||||
If Not m.WParam.ToInt32() = Win32.WM_KEYDOWN Then Exit Select
|
||||
|
||||
Select Case KeyboardShortcuts.CommandFromHookKeyMessage(m)
|
||||
Case ShortcutCommand.PreviousTab
|
||||
SelectTabRelative(-1)
|
||||
Case ShortcutCommand.NextTab
|
||||
SelectTabRelative(1)
|
||||
End Select
|
||||
End Select
|
||||
Catch ex As Exception
|
||||
End Try
|
||||
@@ -861,8 +935,43 @@ Public Class frmMain
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub pnlDock_ActiveDocumentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles pnlDock.ActiveDocumentChanged
|
||||
Private Sub pnlDock_ActiveDocumentChanged(ByVal sender As Object, ByVal e As EventArgs) Handles pnlDock.ActiveDocumentChanged
|
||||
ActivateConnection()
|
||||
Dim connectionWindow As UI.Window.Connection = TryCast(pnlDock.ActiveDocument, UI.Window.Connection)
|
||||
If connectionWindow IsNot Nothing Then connectionWindow.UpdateSelectedConnection()
|
||||
End Sub
|
||||
|
||||
Private Sub UpdateWindowTitle()
|
||||
If InvokeRequired Then
|
||||
Invoke(New MethodInvoker(AddressOf UpdateWindowTitle))
|
||||
Return
|
||||
End If
|
||||
|
||||
Dim titleBuilder As New StringBuilder(Application.Info.ProductName)
|
||||
Const separator As String = " - "
|
||||
|
||||
If IsConnectionsFileLoaded Then
|
||||
If UsingSqlServer Then
|
||||
titleBuilder.Append(separator)
|
||||
titleBuilder.Append(Language.strSQLServer.TrimEnd(":"))
|
||||
Else
|
||||
If Not String.IsNullOrEmpty(ConnectionsFileName) Then
|
||||
titleBuilder.Append(separator)
|
||||
If My.Settings.ShowCompleteConsPathInTitle Then
|
||||
titleBuilder.Append(ConnectionsFileName)
|
||||
Else
|
||||
titleBuilder.Append(Path.GetFileName(ConnectionsFileName))
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If Not (SelectedConnection Is Nothing OrElse String.IsNullOrEmpty(SelectedConnection.Name)) Then
|
||||
titleBuilder.Append(separator)
|
||||
titleBuilder.Append(SelectedConnection.Name)
|
||||
End If
|
||||
|
||||
Text = titleBuilder.ToString()
|
||||
End Sub
|
||||
|
||||
Public Sub ShowHidePanelTabs(Optional closingDocument As DockContent = Nothing)
|
||||
@@ -890,6 +999,21 @@ Public Class frmMain
|
||||
pnlDock.Size = New Size(1, 1)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub SelectTabRelative(ByVal relativeIndex As Integer)
|
||||
If Not TypeOf pnlDock.ActiveDocument Is UI.Window.Connection Then Return
|
||||
|
||||
Dim connectionWindow As UI.Window.Connection = pnlDock.ActiveDocument
|
||||
Dim tabController As Magic.Controls.TabControl = connectionWindow.TabController
|
||||
|
||||
Dim newIndex As Integer = tabController.SelectedIndex + relativeIndex
|
||||
While newIndex < 0 Or newIndex >= tabController.TabPages.Count
|
||||
If newIndex < 0 Then newIndex = tabController.TabPages.Count + newIndex
|
||||
If newIndex >= tabController.TabPages.Count Then newIndex = newIndex - tabController.TabPages.Count
|
||||
End While
|
||||
|
||||
tabController.SelectedIndex = newIndex
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Screen Stuff"
|
||||
|
||||
@@ -1,300 +0,0 @@
|
||||
<?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="imgListPages.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="imgListPages.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD+
|
||||
JgAAAk1TRnQBSQFMAgEBCAEAAVABAQFQAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABMAMAAQEBAAEgBgABMP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8ALgAB4gHvAfQB/wGo
|
||||
AckB1wH/AWcBpAG2Af8BSgGGAZwB/wE1AVwBigH/ATABVwGHAf8BMAFhAZUB/wFDAY4BqwH/AY8BtwHN
|
||||
Af8B3QHqAfEB/wwAA1cBtwOfAf8DmgH/A5YB/wORAf8DjQH/A4kB/wOEAf8DgAH/A1IB/wNOAf8DSgH/
|
||||
A0cB/wNDAf8DQAH/A1cBtxgAAw0BEgNWAbYDVgG2Aw0BEWAAAa0BzwHfAf8BQgGRAa0B/wFHAaMBvwH/
|
||||
AWMBwAHUAf8BlQHZAeYB/wGBAdsB8AH/ATsBxgHsAf8BDwGqAd0B/wEBAZIBxwH/AQ0BgAGsAf8BJAFc
|
||||
AZIB/wGdAb8B0QH/CAADqAH/A+kB/wPTAf8D0gH/A9EB/wPQAf8DzgH/A80B/wPNAf8DywH/A8sB/wPK
|
||||
Af8DyQH/A8gB/wPiAf8DQAH/GAADXgHZA+QB/wPjAf8DWAHBMAADQQFyAUwCXwHzAVkCXAHPAUsCTAGQ
|
||||
AyMBMxwAAUUBhAGbAf8BLwG9AecB/wFSAdMB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/ATsBygHw
|
||||
Af8BCQG2Ae0B/wEAAacB6AH/AQABoQHhAf8BAAGWAdIB/wEoAUkBZQH/CAADrQH/A9YB/wO6Af8DuAH/
|
||||
A7UB/wOzAf8DsQH/A7AB/wOtAf8DqwH/A6oB/wOoAf8DpwH/A6YB/wPIAf8DRAH/CAADCwEPA1QBrQM6
|
||||
AWEDPwFuA2cB+AHiAeEB3wH/AeEB4AHfAf8DXwHzAzwBZwM8AWYDUwGtAwsBDxwAAyEBMAIrAWIB/AGG
|
||||
Aa0B4QH/AVQBqAHcAf8BNQGSAckB/wEGAUgBqwH/AVUCVgGxAx8BLRQAAUgBhwGeAf8BLgHEAfAB/wFU
|
||||
AdQB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/ATsBygHwAf8BCQG2Ae0B/wEAAagB6AH/AQABoQHh
|
||||
Af8BAAGcAdoB/wEpAUoBZwH/CAADsQH/A9kB/wO9Af8DugH/A7gB/wO2Af8DtQH/A7MB/wOwAf8DrwH/
|
||||
A60B/wOrAf8DqQH/A6gB/wPKAf8DSAH/CAADWgHFBP8ChAGDAf4CgwGCAf4C5wHmAf8B1gHVAdMB/wHX
|
||||
AdYB1AH/AeMB4gHgAf8DfwH+A6gB/QHpAegB5gH/A1gBwRwAAVQCVgGrAUMBnQHRAf8BmQG8AesB/wFH
|
||||
AaAB4wH/AZYBuQHqAf8BlAG4AeoB/wE2AZMBygH/AisBXgH8A0MBeBAAAUoBiQGgAf8BLgHEAe8B/wFT
|
||||
AdQB8QH/AY0B4wH0Af8BogHrAfYB/wGCAd8B8wH/ATwBygHwAf8BCQG2Ae0B/wEAAagB6AH/AQABoQHh
|
||||
Af8BAAGcAdoB/wErAU0BaQH/CAADtgH/A90B/wPBAf8DvQH/A7wB/wO6Af8DuAH/A7UB/wO0Af8DsgH/
|
||||
A7AB/wOtAf8DrAH/A6wB/wPPAf8DTAH/CAADZAHnAvkB9wH/Au8B7gH/AtsB2gH/AcoCyQH/AckByAHG
|
||||
Af8ByQHIAccB/wHJAcgBxwH/AssByQH/AeYB5QHkAf8B5QHkAeIB/wNlAeUYAAMfAS0BKwE2AWYB/AGd
|
||||
Ab8B7AH/AT8BnAHiAf8BMQGTAd8B/wEuAZEB3wH/ATUBlAHgAf8BlQG4AeoB/wGGAa0B4QH/AR8BgwG7
|
||||
Af8BSwJMAZAMAAFMAYwBogH/ATABxgHwAf8BVQHUAfEB/wGMAeMB9AH/AaIB6wH2Af8BggHfAfQB/wE8
|
||||
AcoB8AH/AQkBtgHtAf8BAAGoAegB/wEAAaIB4gH/AQABmwHbAf8BLQFQAYAB/wgAA1oBvQPaAf8DyAH/
|
||||
A8AB/wO/Af8DvQH/A7oB/wO4Af8DtwH/A7UB/wOzAf8DsAH/A68B/wOzAf8DwgH/A1oBvQgAA04BlQH2
|
||||
AfUB9AH/AeYB5QHkAf8BvwG+Ab0B/wLrAeoB/wHUAdMB0gH/AdYB1QHUAf8B4gLhAf8CtAGzAf8B1wHW
|
||||
AdQB/wHiAeEB3wH/A0oBjQwAAysBQgNIAYQBVQJXAbcBTAJfAfMBTAGkAdcB/wGhAcIB7QH/AZ8BwAHt
|
||||
Af8BnQG/Ae0B/wFKAaMB5AH/ATABkgHfAf8BLgGQAd4B/wFRAacB5gH/AZIBtgHoAf8BGQFVAbcB/wM3
|
||||
AVoIAAFPAY8BpQH/ATEBxgHwAf8BVQHUAfIB/wGNAeMB9AH/AaIB6wH2Af8BgwHfAfQB/wE7AcoB8AH/
|
||||
AQkBtgHtAf8BAAGnAegB/wEAAaEB4gH/AQABnAHbAf8BLwFTAYMB/wgAA1oBvQPjAf8D5wH/A+EB/wPg
|
||||
Af8D4AH/A98B/wPfAf8D3gH/A90B/wPdAf8D3AH/A9sB/wPgAf8D0AH/A1oBvQMLAQ8DVQG1A2QB5wHk
|
||||
AeMB4gH/AdEB0AHPAf8C8AHvAf8DrgH/A2QB8QNnAfICrAGrAf8C6AHnAf8CywHKAf8B4AHfAd0B/wNh
|
||||
AeQDVQG1AwsBDwNMAZMBOgGXAc8B/wFRAagB2QH/AY0BtAHiAf8BowHEAe0B/wGnAccB7gH/AToBlwHN
|
||||
Af8BCgFLAbIB/wE1AZMByQH/AZ8BwAHtAf8BTgGWAaMB/wGeAZYBHgH/AVIBlAGRAf8BjQGzAekB/wFP
|
||||
AaUB2AH/AVoCXgHYCAABUAGSAagB/wExAcUB8AH/AVYB1AHyAf8BjQHjAfQB/wGiAesB9gH/AYIB3wH0
|
||||
Af8BOwHKAfAB/wEJAbYB7QH/AQABpwHoAf8BAAGhAeEB/wEAAZwB2wH/ATEBVgGGAf8IAAMpAT8DzgH/
|
||||
A+wB/wPeAf8D2AH/A9IB/wPMAf8DyAH/A8cB/wPIAf8DywH/A9AB/wPdAf8D6AH/A6QB/wMrAUIDPwFt
|
||||
AuQB4wH/AdgB1gHVAf8B0gHRAdAB/wHFAcQBwwH/Ae0B7AHrAf8DVwG6CAADXAHNAegB5wHmAf8BtgG1
|
||||
AbQB/wHWAdUB0wH/AeIB4QHgAf8C4AHfAf8DPAFmAUgCYgH2Aa4BzQHwAf8BsAHPAfAB/wGYAb8B7AH/
|
||||
AVQBrgHnAf8BqgHKAe8B/wETAVEBuAH/BAABCwFMAbMB/wGiAcMB7QH/AagBlwEHAf8BxAG1ATAB/wGs
|
||||
AZcBAAH/ATEBkwHfAf8BmAG7AesB/wEAAToBnwH/CAABUwGVAasB/wExAcUB8AH/AVYB1AHyAf8BjQHj
|
||||
AfQB/wGiAesB9gH/AYMB3wH0Af8BPAHLAfAB/wEJAbUB7QH/AQABpwHoAf8BAAGhAeIB/wEAAZwB2gH/
|
||||
ATQBWQGIAf8MAANaAb0D4wH/A9sB/wPiAf8BtwHQAbgB/wE6Aa0BPgH/AUwBqgE6Af8BRgGvAT4B/wEs
|
||||
AaUBOAH/AawBxQGsAf8DwgH/A9EB/wPTAf8DWgG9BAADQgF2AewB6wHoAf8B2gHZAdcB/wHUAdMB0QH/
|
||||
AcYBxQHEAf8B3gLcAf8DRgF+CAADUAGaAd0B3AHbAf8ByAHGAcUB/wLiAeEB/wLhAd8B/wHuAe0B7AH/
|
||||
Az8BbwFaAmAB3gGoAckB7QH/AYQBpwHtAf8BLgFAAe0B/wFAAY4B6QH/Aa0BzQHwAf8BQwGdAdIB/wEU
|
||||
AVIBuQH/AT0BmQHOAf8BpQHFAe4B/wGVAZoBPwH/Aa0BlwEAAf8BnQGXASMB/wE8AZsB4gH/AZgBuwHq
|
||||
Af8BSAJiAfYIAAFVAZgBrgH/ATEBxQHwAf8BVgHUAfEB/wGNAeMB9AH/AaIB6wH2Af8BgwHfAfQB/wE8
|
||||
AcoB8AH/AQkBtgHtAf8BAAGoAekB/wEAAaEB4QH/AQABnAHaAf8BNgFbAYoB/wwAAykBPwPRAf8D8wH/
|
||||
AccB3gHKAf8BOgHJAYUB/wGzAdwBpAH/AecBxwFSAf8B3AG/AUkB/wFMAcwBjwH/ASUBrQE+Af8BuAHQ
|
||||
AbgB/wPxAf8DrwH/AysBQgQAAy8BSgNgAesDcgH8Ad4B3QHcAf8BywLKAf8B5gLlAf8DYQHhAzIBUAM4
|
||||
AVwDYAHrAu4B7AH/AcwCywH/AecB5gHlAf8DcgH8A2AB6wMsAUMDUQGcAZIBuQHlAf8BRAFKAfYB/wGB
|
||||
AYQB9QH/AhYB8AH/AZABuwHrAf8BrgHNAfAB/wGsAcwB8AH/AaoBygHwAf8BhQGyAekB/wE0AakBwQH/
|
||||
ARoBswGNAf8BLAGoAbYB/wFGAaEB5AH/AZcBugHoAf8DXQHtCAABWAGbAbAB/wEwAcYB8AH/AVYB1AHy
|
||||
Af8BjQHjAfQB/wGiAesB9gH/AYMB3wH0Af8BPAHKAfAB/wEJAbYB7QH/AQABqAHoAf8BAAGhAeEB/wEA
|
||||
AZwB2gH/ATkBXwGOAf8QAANaAb0DxAH/AUwBzgGLAf8BmQHkAasB/wGwAcUBMwH/AeoBtQEeAf8B4QGi
|
||||
AQ8B/wGlAZ0BFgH/AYIBxQGPAf8BHwGaASwB/wOgAf8DWgG9EAADXgHOAeEB4AHeAf8B2QHXAdYB/wG4
|
||||
ArcB/wHhAeAB3wH/A6gB/QOoAf0C9gH1Af8CwAG/Af8B6gHpAegB/wLzAfIB/wNcAckIAAMjATMBKwFb
|
||||
AXEB/AGSAaQB9QH/AS8BMAH2Af8BJwGGAfQB/wERAaYB+wH/ATIBqwHyAf8BVAGvAecB/wFRAa0B5wH/
|
||||
AU4BqgHmAf8BFQG2AYAB/wE2AcgBlwH/AREBtwFQAf8BUwGsAecB/wGPAbUB4wH/AVoCXgHVCAABWwGf
|
||||
AbMB/wEwAcYB8AH/AVQB1AHxAf8BjAHjAfQB/wGiAesB9gH/AYMB3wH0Af8BPAHKAfAB/wEJAbYB7QH/
|
||||
AQABpwHoAf8BAAGhAeEB/wEAAZsB2gH/ATsBYgGQAf8YAAFYAXQBYwH8AaIB6QGVAf8B1gHPAT8B/wHi
|
||||
AbMBHQH/AdEBuwElAf8BwgGuARgB/wGCAb0BQgH/ASsBaQFAAfwYAANMAZEB4wHiAeAB/wLeAdwB/wHh
|
||||
AeAB3wH/AcwCywH/AcQBwwHCAf8CzwHOAf8C3gHdAf8C8AHvAf8C8AHvAf8C9gH1Af8DSAGHDAADSQGH
|
||||
AYYBrwHhAf8BuQHXAfMB/wEIAaYB/gH/AUIBvwL/AQEBowL/ATwBvgHwAf8BEAHOAfsB/wEwAb4B8QH/
|
||||
ASgBswGgAf8BEQG3AU8B/wEdAbMBkAH/AacByAHuAf8BTQGlAdYB/wFPAlEBnAgAAVwBoQG1Af8BVgHV
|
||||
AfQB/wGaAegB9wH/AbUB8wH6Af8BwgH4AfwB/wHDAfgB/QH/AcEB9wH9Af8BrwHwAfsB/wGPAeIB9wH/
|
||||
AVUB0AHwAf8BKQG4AeUB/wE+AWUBkwH/GAABWgF0AWQB/AGiAfABnwH/AdgB7QGvAf8B3gHFAT4B/wG0
|
||||
AeIBOwH/ATYB5wEPAf8BQQHXAUEB/wErAWsBVQH8FAADAQECA18B4wHlAeQB4QH/Au4B7QH/Au4B7QH/
|
||||
AusB6gH/AeMB4gHhAf8C6AHnAf8C6gHpAf8C8wHyAf8C9QH0Af8B+gH5AfgB/wNcAd8MAAMEAQYDUQGf
|
||||
AYUBrgHhAf8BMAGyAfkB/wEBAaMC/wEWAakB+wH/AQYB0wH+Af8BQgHiAv8BAQHVAv8BVQGwAegB/wFS
|
||||
Aa0B5wH/AakBygHvAf8BpQHFAe0B/wErAT4BaAH8AyEBMAgAAV8BowG4Af8BxQH5Af0B/wHFAfkB/QH/
|
||||
AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5
|
||||
Af0B/wFAAWgBlQH/GAADYQHcAcgB9wHUAf8B2AH2AcoB/wHnAeMBqQH/AdsBzwFCAf8BrwHcAT4B/wGd
|
||||
AeoBqwH/A18B4BgAA0ABbwN/Af4DZAHnA18B8wHoAecB5gH/AecB5gHlAf8C7QHsAf8C+wH6Af8DZwHy
|
||||
A2QB5wN/Af4DPQFoFAADQgF1AV8CYgH2AY4BtgHjAf8BuQHXAfMB/wEzAdUB+wH/AQAB1QL/ARcB0QH7
|
||||
Af8BswHSAfIB/wGxAdAB8QH/AZIBuAHiAf8BOAGVAcwB/wNKAYoMAAG3AdcB4QH/AYwBvQHMAf8BnQHP
|
||||
AdsB/wGtAd8B6AH/AbkB7AHzAf8BwgH1AfoB/wHCAfUB+gH/AbgB6wHxAf8BqQHaAeMB/wGUAcQB0QH/
|
||||
AWYBqAG4Af8BqQHFAdEB/xgAAy0BRQFNAXABZwH6AdsB+AHpAf8B5wHyAdgB/wHtAeUBswH/Ad8B2QGm
|
||||
Af8BXwF/AV8B+wMyAVAgAAMPARQDCgEOA1MBqgHvAe4B7QH/AvQB8wH/A1IBpAMIAQsDEQEXIAADFgEe
|
||||
A1QBrgFMAaMB3AH/AZEBuAHkAf8BqAHKAewB/wGlAccB7AH/AY0BtQHiAf8BPgGaAdIB/wFaAl8B2wMx
|
||||
AU4QAAL+Av8B4wHxAfQB/wG5AdcB4QH/AZUBvgHMAf8BZgGoAbsB/wFZAZsBsAH/AVUBmAGtAf8BXgGh
|
||||
AbMB/wGMAbIBwgH/AbEBzQHXAf8B3wHrAe8B/wP+Af8cAAMuAUcDXgHZAV4BdAFiAfwBXgFzAV4B/ANe
|
||||
Ad0DMgFQLAADLwFKA10B8ANiAe8DLAFDMAADKwFCA0wBkAFbAl0B0gFZAlwBzwNOAZkDLQFFHAADEQEX
|
||||
A1YBswFTAVQBUwGstAADBAEFAxABFQMfAS0DKQE/Ay8BSQMuAUgDKAE9Ax4BKwMPARQDAwEEEAADtwH/
|
||||
AZwBqAGeAf8BAAFNASgB/wESAZIBSgH/AQABUQEoAf8BAAE+AaAB/wEAATwBngH/AQABOQGbAf8BAAE3
|
||||
AZkB/wEAATUBlwH/AQABMgGUAf8BAAExAZMB/wNCAf8DQgH/CAABVwFQAU0BjwFwAWABVQG1AaQBcgFU
|
||||
Ae4BuQF2AVAB/wG1AXQBTgH/AbMBcwFOAf8BsAFxAU0B/wGsAW8BTAH/AakBbgFMAf8BpwFsAUsB/wGm
|
||||
AWsBSgH/AaABbQFMAf4BlQFoAVEB8QF1AWEBVAHETAADBQEHAx8BLAI+AT0BagJSAVABowFbAlkBxAFd
|
||||
AloB0wFdAloB0wFbAlkBwwFSAlEBoQM8AWYDHAEoAwQBBgwAAxUBHQNRAaIBFwGVAU4B/wGCAb4BqgH/
|
||||
ASYBpQGCAf8BBwGXAUAB/wEKAZkBRQH/AQ4BmQFJAf8BEgGdAU4B/wFMAaoB0gH/AUoBqAHRAf8BAAEz
|
||||
AZUB/xAAAZYBcgFVAd4w/wGSAWkBUAHtSwABAQMSARgDPgFrAV0CWQHXAUYCKwH8AawBIwEAAf8B4QFD
|
||||
ARcB/wHkAVUBKwH/AdMBQQEPAf8BowJAAf0BYQJeAdoCPgE9AWoDDwEUCAADGAEiAVABUgFQAaQDVgGz
|
||||
AUMBrAGfAf8BSgG3AZ4B/wFUAbsBrAH/AVQBuwGuAf8BVQG7AbAB/wGAAbwBswH/AQ0BmgFRAf8BKgGV
|
||||
AccB/wFNAasB0wH/AQABNgGYAf8QAAG8AX8BVwH+BP8BrgFkASkB/wGsAWEBKAH/AawBYQEoBf8BUwGq
|
||||
AVoB/wFOAaUBVAH/AUkBoAFPAf8BRAGbAUkB/wFBAZcBRgH/AT0BkwFCBf8BoQFuAU0B/kwAAxsBJgNZ
|
||||
AdIBEwIAAf8BigEyARoB/wHKAYYBPAH/AfYBvAGcAf8B+QHMAbcB/wHjAaABTgH/AbEBTQEzAf8BTwEp
|
||||
AQoB/wFeAlgB3QMcASgIAAFVAVYBVQGxA1YBswNWAbMBMgGkAZEB/wFFAbYBmwH/AT4BsgGbAf8BQAGy
|
||||
AZ4B/wFCAbMBoQH/AYUBvwG2Af8BFAGeAYIB/wEvAZkByQH/AVEBrQHUAf8BAAE6AZwB/xAAAcMBhQFX
|
||||
Bf8BrgFkASkB/wHNAZ4BcQH/AawBYQEoBf8BSAGeAU0B/wFtAckBeAH/AW0ByQF4Af8BbAHIAXcB/wFr
|
||||
AccBdQH/ATsBkgFABf8BpwFuAUwB/wQAA50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/
|
||||
A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wgAAVMCTwGlASoBDwEAAf8BTwE6ASUB/wGPAUwBNwH/
|
||||
AawBiAFBAf8BwgGjAYgB/wHBAaUBjgH/AbMBmAGBAf8BkQFMATYB/wFKATEBHAH/ATkBEgEAAf8BVgJV
|
||||
AbEIAAMIAQsDVQGyA1YBswFMAbIBqAH/AVMBvQGnAf8BhwHBAbUB/wGGAcEBtgH/AYcBwQG3Af8BiAHB
|
||||
AbkB/wEaAaIBiAH/ATQBnAHLAf8BVQGwAdUB/wEAAT0BnwH/EAABxAGFAVgF/wGuAWQBKQH/Ac0BnwFy
|
||||
Af8BrAFhASgF/wFLAaIBUQH/AXABygF6Af8BbwHKAXoB/wFuAckBeQH/AWwByAF3Af8BPgGUAUMF/wGr
|
||||
AW8BTQH/BAADnQH/AboCvQH/AeYC7AH/AeYC7QH/AecC7QH/AegC7gH/AekC7wH/AekC7wH/AeoC7wH/
|
||||
AeoC8AH/AesC8AH/AesC8QH/AewC8QH/AewC8QH/Ab0CvwH/A50B/wQAAzkBXwFLASsBEAH/AcMBsQGi
|
||||
Af8BtgGcAYMB/wGmAU8BIgH/AagBTQEfAf8BwwGkAYcB/wHYAcYBsAH/Ab0BqQGLAf8BVQE1ARUB/wEy
|
||||
ARIBAAH/ASgBBAEAAf8BLwEIAQAB/wMzAVMIAAMGAQgDVQGyASUBoAGKAf8BkwHJAboB/wE1Aa8BlwH/
|
||||
ARoBogGDAf8BGwGjAYcB/wEdAaQBiwH/ARwBqgGSAf8BKgHCAe0B/wGBAbQB1wH/AQABQQGjAf8QAAHH
|
||||
AYcBVwX/AbMBawEwAf8B0AGkAXsB/wGxAWkBKwX/AU0BpAFTAf8BcQHLAXsB/wFwAcsBegH/AW8BygF5
|
||||
Af8BbQHJAXgB/wFBAZgBRgX/AbEBcwFOAf8IAANcAeoB2wLiAf8BzQLPAf8DywH/A8wB/wPOAf8DzwH/
|
||||
A9AB/wPSAf8D0wH/A9UB/wHXAtgB/wHnAuwB/wNtAfcEAAMiATEBVgJVAbEBPQERAQAB/wGqAYUBNQH/
|
||||
AbIBSAEGAf8BrQElAQAB/wG6AUIBAAH/AeoB1QG/Af8B/QH8AfoB/wHWAb4BpgH/AZABNQECAf8BOAEG
|
||||
AQAB/wE5ARYBAAH/ATIBEgEAAf8DVwHFAxwBJwgAAwQBBgELAZQBTQH/AUQBuQGeAf8BHwGmAYkB/wFP
|
||||
AbEB1QH/AUsBrQHUAf8BRwGrAdIB/wE1AboB5AH/AQABmQE/Af8BAAGOAS4B/wEAAUYBmgH/EAAByAGJ
|
||||
AVgF/wG2AXMBPQH/AdEBpQGCAf8BtQFwATUF/wFPAacBVgH/AXABywF6Af8BcAHLAXoB/wFvAcoBeQH/
|
||||
AW0ByQF4Af8BRAGbAUoF/wG1AXUBUAH/CAADXAHqAdkC4QH/AcsCzAH/A8cB/wPIAf8DygH/A8sB/wPN
|
||||
Af8DzgH/A9AB/wPRAf8B0wLUAf8B5QLrAf8DbQH3BAADLgFHA1kB7AE4AQYBAAH/AZkBJQEAAf8BuAE9
|
||||
AQAB/wHCATkBAAH/AckBSwEAAf8B5gG/AZQB/wHsAdQBtgH/Ac0BnAE4Af8BqAFCAQIB/wGZAUMBFwH/
|
||||
AaMBjAFIAf8BVQE8ASUB/wJRAT8B9wE1AjQBVQwAAS4BjgHEAf8BKAGsAYsB/wElAaoBjwH/AVQBtQHY
|
||||
Af8BUAGyAdYB/wFNAa8B1QH/AUkBrAHTAf8BAAGQATgB/wEvAagBhAH/AQABTgEpAf8DFAEbDAABygGL
|
||||
AVkF/wG7AXwBUQH/AbkBegFJAf8BuQF5AUcF/wFDAZoBSQH/AVABpwFWAf8BTgGlAVQB/wFMAaMBUgH/
|
||||
AUoBoQFQAf8BRwGeAU0F/wG4AXkBUQH/CAADXAHqAdcC3wH/AccCyQH/A8IB/wPEAf8DxQH/A8gB/wPJ
|
||||
Af8DygH/A8wB/wPNAf8B0ALRAf8B4wLqAf8DbQH3BAADOQFfAkABLQH9AUoBEQEAAf8BrgEvAQAB/wHA
|
||||
ATcBAAH/AecBlgEcAf8B6AGyAVAB/wHkAbEBUAH/AdIBiQEPAf8BvQE8AQAB/wGoASoBAAH/AbgBjQEz
|
||||
Af8B1AHDAbIB/wGYAYQBRAH/ATEBEwEAAf8BPgI9AWoMAAE0AZEByQH/AaQBzAHkAf8BhwG7AdsB/wEV
|
||||
AaEBUAH/AQ8BnAFKAf8BCgGaAUYB/wEFAZYBQAH/ASEBowGBAf8BhAHAAasB/wEYAZYBTwH/A1EBogMV
|
||||
AR0IAAHGAYgBXAH+MP8BuwF7AVIB/wgAA1wB6gHWAt8B/wHDAsUB/wPAAf8DwAH/A8IB/wPDAf8DxAH/
|
||||
A8UB/wPIAf8DyQH/A80B/wHgAugB/wNtAfcEAAM3AVoCTQEoAfoBgwEcAQAB/wHLAUYBAAH/AeUBiwET
|
||||
Af8B/gG2AUgC/wHjAcIB/wH0AbwBhQH/AdYBTQEAAf8BxQFEAQAB/wG6ATkBAAH/Aa8BTQEPAf8BrgGI
|
||||
ATMB/wGUAUwBMwH/ATIBFAEAAf8DPAFmDAABOQGVAc0B/wGoAc8B5QH/AYwBvwHdAf8BGwGlAYEB/wGN
|
||||
AcUBuAH/AYkBwwG0Af8BhgHBAbEB/wGEAb8BrwH/AU0BuQGfAf8BRAGtAaAB/wNWAbMBUAFSAVABpAMY
|
||||
ASIEAAHBAYgBWAH6BP8B7QHDAZoB/wHtAcMBmgH/Ae0BwwGaAf8B7QHDAZoB/wHtAcMBmgH/Ae0BwwGa
|
||||
Af8B7QHDAZoB/wHtAcMBmgH/Ae0BwwGaAf8B7QHDAZoF/wG9AYABVAH/CAADYAHWAccCzQH/AdsC5AH/
|
||||
AdsC5AH/AdsC5QH/AdwC5QH/AdwC5QH/Ad0C5gH/Ad0C5gH/Ad4C5wH/Ad8C6AH/AeAC6AH/Ac0C0wH/
|
||||
A18B4wQAAyYBOQFgAloB3gGOASQBAAH/AewBngEpAf8B/gG/AYUC/wHMAaEC/wHfAbsB/wH+AcIBVQH/
|
||||
AeIBjgEfAf8B0wGEARAB/wHKAU8BAgH/AbUBRgEAAf8BlwE3AQAB/wGBATQBDwH/A1kB7AMuAUgMAAE9
|
||||
AZgB0AH/AasB0QHnAf8BkAHCAd8B/wEiAakBiAH/AZEByQG7Af8BTAG6AaUB/wFIAbgBoQH/AUQBtgGe
|
||||
Af8BSAG4AZ0B/wEzAaUBkgH/A1YBswNWAbMBVQFWAVUBsQQAAbYBhwFdAfAE/wHtAcMBmwH/AfQB2gHA
|
||||
Af8B9AHaAcAB/wH0AdsBwQH/AfQB2wHBAf8B9AHbAcEB/wH0AdsBwQH/AfQB2wHBAf8B9AHbAcEB/wHt
|
||||
AcMBmgX/AbsBfwFXAf4IAAMsAUMDWwHIA50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/
|
||||
A50B/wNeAd0DMQFOBAADCQEMA0sBjgHAAUQBAwL/AbwBVQH/AfoBzgGnAf8B+AHbAb4C/wHiAcYC/wG+
|
||||
AYYB/wH0AawBSwH/AewBwgGaAf8B4gG1AYsB/wG4AUsBCQH/AZ0BOgECAf8BiAE6ARYB/wNPAaUDEAEV
|
||||
DAABQQGbAdMB/wGuAdQB6AH/AasB0wHoAf8BLwGxAZAB/wGbAc4BwAH/AZkBzQG9Af8BlgHLAbsB/wGV
|
||||
AcoBuQH/AYABvwGoAf8BTQGzAakB/wNWAbMDVQGyAwgBCwQAAZcBegFeAdgE/wHtAcMBmwH/Ae0BwwGb
|
||||
Af8B7QHDAZsB/wHtAcMBmgH/Ae0BwwGaAf8B7QHDAZoB/wHtAcMBmgH/Ae0BwwGaAf8B7QHDAZoB/wHt
|
||||
AcMBmgX/AbsBhAFcAfhIAAMTARoCZAFTAfEB2AGeAUgB/wHnAdMBwAH/AfwB9QHuAv8B+AHrAv8B5QHC
|
||||
Af8B9gG5AYIB/wHyAdIBuAH/Ae4B0gG2Af8BwgGGASQB/wGnAUwBHQH/Ak0BKQH6Ax0BKRAAAUQBnQHV
|
||||
Af8BQgGbAdMB/wE/AZoB0gH/AR8BoQGMAf8BGgGfAYoB/wEXAZ0BhQH/ARMBmQGAAf8BLAGlAZIB/wFV
|
||||
AbgBsQH/ASYBoQGLAf8DVQGyAwYBCAgAAWEBWQFSAZsw/wHWAakBiAH/TAADNQFXAakBOAEKAf8BygG4
|
||||
AagG/wH+AfwC/wH2AeIB/wH7AcUBoAH/AeQBuQGVAf8B2wGsAVMB/wHDAY4BMgH/AZMBOgEOAf8BPgI9
|
||||
AWowAAFTAlQBrANWAbMDVgGzAwQBBgwAAUYBQwFBAXEBWQFTAU4BkAGLAXMBXAHMAc4BkgFcAf8ByAGN
|
||||
AV4B/gHNAZEBXAH/AcwBjwFcAf8BzQGRAV4B/wHNAZIBYAH/AcsBkAFeAf8BsAGDAVsB7wGJAXIBXgHL
|
||||
AdgBrQGKAf8B1wGrAYoB/1AAAzIBUQJkAVkB7AHQAbIBlQH/AewB4AHZAf8B5gHVAcQB/wHTAbABlAH/
|
||||
AdMBpgFNAf8BywGPASsB/wFnAWUBWQHyAToCOQFgNAABUwJUAawDVgGzAwQBBpwAAxEBFwNEAXoCWgFX
|
||||
AcUCZQFeAeUCYQFYAeYCXAFZAckCSAFHAYMDFQEdEAABQgFNAT4HAAE+AwABKAMAAUADAAEwAwABAQEA
|
||||
AQEFAAGAAQEWAAP/gQAB4AEHAgAB/AE/Av8BwAEDAgAB/AE/AfwBHwHAAQMCAAHAAQMB+AEHAcABAwIA
|
||||
AcABAwH4AQMBwAEDAgABwAEDAfABAQHAAQMCAAHAAQMBgAEAAcABAwYAAcABAwIAAQEBgAEBAQABwAED
|
||||
AYACAQGAAgABwAEDAYABAQQAAcABAwHAAQMBwAEDAgABwAEDAfABDwHAAQMBgAEAAcABAwHwAQ8BgAED
|
||||
AYABAAHAAQMB8AEPAcABAwHgAQEBwAEDAfABDwHwAQ8B8AEDAcABAwH4AR8B/AE/AfwBDwHjBf8B4AEH
|
||||
AYABAQGAAQEC/wHAAQMBgAEHAYABAQL/AYABAwEAAQcBgAEBAv8BwAEDAQABBwGAAQECAAHAAQMBAAEH
|
||||
AYABAQIAAYABAQGAAQcBgAEBAYABAQIAAcABBwGAAQEBgAEBAgAB4AEDAYABAQGAAQECAAHgAQEBgAEB
|
||||
AYABAQIAAeABAAGAAQEBgAEBAgAB4AEAAYABAQGAAQECAAHgAQABgAEBAv8BgAEBAeABAQGAAQEC/wHA
|
||||
AQMB/wHDAYABAQL/AeABBwH/AccE/wHwAQ8L
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="dlgColor.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>140, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
File diff suppressed because it is too large
Load Diff
172
mRemoteV1/Forms/frmPassword.Designer.vb
generated
172
mRemoteV1/Forms/frmPassword.Designer.vb
generated
@@ -1,172 +0,0 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class frmPassword
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.txtPassword = New System.Windows.Forms.TextBox
|
||||
Me.txtVerify = New System.Windows.Forms.TextBox
|
||||
Me.lblPassword = New System.Windows.Forms.Label
|
||||
Me.lblVerify = New System.Windows.Forms.Label
|
||||
Me.btnOK = New System.Windows.Forms.Button
|
||||
Me.btnCancel = New System.Windows.Forms.Button
|
||||
Me.lblStatus = New System.Windows.Forms.Label
|
||||
Me.pbLock = New System.Windows.Forms.PictureBox
|
||||
Me.pnlImage = New System.Windows.Forms.Panel
|
||||
CType(Me.pbLock, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.pnlImage.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'txtPassword
|
||||
'
|
||||
Me.txtPassword.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.txtPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtPassword.Location = New System.Drawing.Point(95, 22)
|
||||
Me.txtPassword.Name = "txtPassword"
|
||||
Me.txtPassword.Size = New System.Drawing.Size(184, 20)
|
||||
Me.txtPassword.TabIndex = 0
|
||||
Me.txtPassword.UseSystemPasswordChar = True
|
||||
'
|
||||
'txtVerify
|
||||
'
|
||||
Me.txtVerify.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.txtVerify.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.txtVerify.Location = New System.Drawing.Point(95, 61)
|
||||
Me.txtVerify.Name = "txtVerify"
|
||||
Me.txtVerify.Size = New System.Drawing.Size(184, 20)
|
||||
Me.txtVerify.TabIndex = 1
|
||||
Me.txtVerify.UseSystemPasswordChar = True
|
||||
'
|
||||
'lblPassword
|
||||
'
|
||||
Me.lblPassword.AutoSize = True
|
||||
Me.lblPassword.Location = New System.Drawing.Point(87, 6)
|
||||
Me.lblPassword.Name = "lblPassword"
|
||||
Me.lblPassword.Size = New System.Drawing.Size(56, 13)
|
||||
Me.lblPassword.TabIndex = 2
|
||||
Me.lblPassword.Text = My.Language.strLabelPassword
|
||||
'
|
||||
'lblVerify
|
||||
'
|
||||
Me.lblVerify.AutoSize = True
|
||||
Me.lblVerify.Location = New System.Drawing.Point(87, 45)
|
||||
Me.lblVerify.Name = "lblVerify"
|
||||
Me.lblVerify.Size = New System.Drawing.Size(36, 13)
|
||||
Me.lblVerify.TabIndex = 3
|
||||
Me.lblVerify.Text = My.Language.strLabelVerify
|
||||
'
|
||||
'btnOK
|
||||
'
|
||||
Me.btnOK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnOK.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||
Me.btnOK.Location = New System.Drawing.Point(210, 101)
|
||||
Me.btnOK.Name = "btnOK"
|
||||
Me.btnOK.Size = New System.Drawing.Size(69, 23)
|
||||
Me.btnOK.TabIndex = 4
|
||||
Me.btnOK.Text = My.Language.strButtonOK
|
||||
Me.btnOK.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnCancel
|
||||
'
|
||||
Me.btnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
||||
Me.btnCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||
Me.btnCancel.Location = New System.Drawing.Point(135, 101)
|
||||
Me.btnCancel.Name = "btnCancel"
|
||||
Me.btnCancel.Size = New System.Drawing.Size(69, 23)
|
||||
Me.btnCancel.TabIndex = 5
|
||||
Me.btnCancel.Text = My.Language.strButtonCancel
|
||||
Me.btnCancel.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblStatus
|
||||
'
|
||||
Me.lblStatus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.lblStatus.ForeColor = System.Drawing.Color.OrangeRed
|
||||
Me.lblStatus.Location = New System.Drawing.Point(90, 84)
|
||||
Me.lblStatus.Name = "lblStatus"
|
||||
Me.lblStatus.Size = New System.Drawing.Size(189, 14)
|
||||
Me.lblStatus.TabIndex = 6
|
||||
Me.lblStatus.Text = "Status"
|
||||
Me.lblStatus.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
Me.lblStatus.Visible = False
|
||||
'
|
||||
'pbLock
|
||||
'
|
||||
Me.pbLock.Image = Global.mRemoteNG.My.Resources.Resources.Lock
|
||||
Me.pbLock.Location = New System.Drawing.Point(7, 8)
|
||||
Me.pbLock.Name = "pbLock"
|
||||
Me.pbLock.Size = New System.Drawing.Size(64, 64)
|
||||
Me.pbLock.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
|
||||
Me.pbLock.TabIndex = 7
|
||||
Me.pbLock.TabStop = False
|
||||
'
|
||||
'pnlImage
|
||||
'
|
||||
Me.pnlImage.Controls.Add(Me.pbLock)
|
||||
Me.pnlImage.Location = New System.Drawing.Point(9, 6)
|
||||
Me.pnlImage.Name = "pnlImage"
|
||||
Me.pnlImage.Size = New System.Drawing.Size(100, 100)
|
||||
Me.pnlImage.TabIndex = 8
|
||||
'
|
||||
'frmPassword
|
||||
'
|
||||
Me.AcceptButton = Me.btnOK
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.CancelButton = Me.btnCancel
|
||||
Me.ClientSize = New System.Drawing.Size(289, 133)
|
||||
Me.ControlBox = False
|
||||
Me.Controls.Add(Me.txtVerify)
|
||||
Me.Controls.Add(Me.txtPassword)
|
||||
Me.Controls.Add(Me.lblStatus)
|
||||
Me.Controls.Add(Me.lblVerify)
|
||||
Me.Controls.Add(Me.lblPassword)
|
||||
Me.Controls.Add(Me.pnlImage)
|
||||
Me.Controls.Add(Me.btnCancel)
|
||||
Me.Controls.Add(Me.btnOK)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "frmPassword"
|
||||
Me.ShowIcon = False
|
||||
Me.ShowInTaskbar = False
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
|
||||
Me.Text = My.Language.strTitlePassword
|
||||
CType(Me.pbLock, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.pnlImage.ResumeLayout(False)
|
||||
Me.pnlImage.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents txtPassword As System.Windows.Forms.TextBox
|
||||
Friend WithEvents txtVerify As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblPassword As System.Windows.Forms.Label
|
||||
Friend WithEvents lblVerify As System.Windows.Forms.Label
|
||||
Friend WithEvents btnOK As System.Windows.Forms.Button
|
||||
Friend WithEvents btnCancel As System.Windows.Forms.Button
|
||||
Friend WithEvents lblStatus As System.Windows.Forms.Label
|
||||
Friend WithEvents pbLock As System.Windows.Forms.PictureBox
|
||||
Friend WithEvents pnlImage As System.Windows.Forms.Panel
|
||||
End Class
|
||||
@@ -1,110 +0,0 @@
|
||||
Public Class frmPassword
|
||||
Public ReadOnly Property Username() As String
|
||||
Get
|
||||
Return txtPassword.Text
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property Password() As String
|
||||
Get
|
||||
If _Verify = True Then
|
||||
Return txtVerify.Text
|
||||
Else
|
||||
Return txtPassword.Text
|
||||
End If
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private _Verify As Boolean = True
|
||||
Public Property Verify() As Boolean
|
||||
Get
|
||||
Return _Verify
|
||||
End Get
|
||||
Set(ByVal value As Boolean)
|
||||
_Verify = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _UserAndPass As Boolean = False
|
||||
|
||||
|
||||
|
||||
Public Sub New(Optional ByVal UserAndPass As Boolean = False, Optional ByVal title As String = "Security")
|
||||
' This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
' Add any initialization after the InitializeComponent() call.
|
||||
Me.Text = title
|
||||
|
||||
If UserAndPass = True Then
|
||||
_UserAndPass = True
|
||||
lblPassword.Text = "Username:"
|
||||
lblVerify.Text = "Password:"
|
||||
txtPassword.UseSystemPasswordChar = False
|
||||
txtVerify.UseSystemPasswordChar = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
|
||||
Me.DialogResult = Windows.Forms.DialogResult.Cancel
|
||||
End Sub
|
||||
|
||||
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
|
||||
If Verify = True And _UserAndPass = False Then
|
||||
If VerifyOK() Then
|
||||
Me.DialogResult = Windows.Forms.DialogResult.OK
|
||||
End If
|
||||
Else
|
||||
Me.DialogResult = Windows.Forms.DialogResult.OK
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Function VerifyOK() As Boolean
|
||||
If txtPassword.Text.Length >= 3 Then
|
||||
If txtPassword.Text = txtVerify.Text Then
|
||||
Return True
|
||||
Else
|
||||
lblStatus.Visible = True
|
||||
lblStatus.Text = "Passwords don't match!"
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
lblStatus.Visible = True
|
||||
lblStatus.Text = "3 characters is minimum!"
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Sub frmPassword_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
||||
ApplyLanguage()
|
||||
|
||||
If Verify = False Then
|
||||
Me.Height = 124
|
||||
Me.lblVerify.Visible = False
|
||||
Me.txtVerify.Visible = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
lblPassword.Text = My.Language.strLabelPassword
|
||||
lblVerify.Text = My.Language.strLabelVerify
|
||||
btnOK.Text = My.Language.strButtonOK
|
||||
btnCancel.Text = My.Language.strButtonCancel
|
||||
lblStatus.Text = "Status"
|
||||
Text = My.Language.strTitlePassword
|
||||
End Sub
|
||||
|
||||
Private Sub txtPassword_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPassword.GotFocus
|
||||
If Me.txtPassword.TextLength > 0 Then
|
||||
Me.txtPassword.SelectionStart = 0
|
||||
Me.txtPassword.SelectionLength = Me.txtPassword.TextLength
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub txtVerify_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtVerify.GotFocus
|
||||
If Me.txtVerify.TextLength > 0 Then
|
||||
Me.txtVerify.SelectionStart = 0
|
||||
Me.txtVerify.SelectionLength = Me.txtVerify.TextLength
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
@@ -1,113 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" >
|
||||
<head>
|
||||
<title>External Applications</title>
|
||||
<link href="Main.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>
|
||||
<span class="heading1">Introduction to External Applications</span></p>
|
||||
<p>
|
||||
External applications can help you get things done that can't be done in
|
||||
mRemote.<br />
|
||||
You can for example start a CMD Console or launch your favorite FTP tool from
|
||||
within mRemote.<br />
|
||||
This wouldn't make much sense by itself because you can already launch your
|
||||
applications by using the Windows Start Menu, Quick Launch or whatever you
|
||||
prefer to use
|
||||
to start your apps.</p>
|
||||
<p>
|
||||
But there's more!</p>
|
||||
<p>
|
||||
In mRemote you can launch applications and tell them what to do with the use of
|
||||
arguments (parameters) and variables of the currently selected Connection.<br />
|
||||
You can for example select your home router's SSH Connection entry and do a
|
||||
traceroute (tracert) on that host.</p>
|
||||
<p>
|
||||
This is much more comfortable and powerful than opening the console and typing
|
||||
tracert YourHost.</p>
|
||||
<p class="heading4">
|
||||
Notes:</p>
|
||||
<ul>
|
||||
<li>Throught this document I will refer to External Applications as Ext. apps or
|
||||
Ext. app.</li>
|
||||
<li>Ext. apps are stored in c:\documents and settings\username\local
|
||||
settings\application data\Felix_Deimel\mRemote\extApps.xml</li>
|
||||
</ul>
|
||||
<p>
|
||||
<span class="heading1">Variables</span></p>
|
||||
<p>
|
||||
Variables and arguments can be used to tell the ext. app what to do.<br />
|
||||
Here's a list of variables currently supported by mRemote:</p>
|
||||
<ul>
|
||||
<li>%Name%</li>
|
||||
<li>%Hostname%</li>
|
||||
<li>%Port%</li>
|
||||
<li>%Username%</li>
|
||||
<li>%Password%</li>
|
||||
<li>%Domain%</li>
|
||||
<li>%Description%</li>
|
||||
<li>%MacAddress%</li>
|
||||
<li>%UserField%</li>
|
||||
</ul>
|
||||
<p>
|
||||
The variables always refer to the currently selected Connection.</p>
|
||||
<p>
|
||||
<span class="heading1">Example</span></p>
|
||||
<p>
|
||||
First of all start the Ext. Apps management interface. To do this click Tools in the main menu and
|
||||
select External Applications.<br />
|
||||
You will see a screen like on the following screenshot.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External%20Apps/01.png" /></p>
|
||||
<p>
|
||||
The fields below the list are greyed out because you haven't created a Ext. App
|
||||
entry yet.<br />
|
||||
To create one right click the blank area in the list and select Add like in the
|
||||
screenshot below.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External%20Apps/02.png" /></p>
|
||||
<p>
|
||||
This is what you'll get:</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External%20Apps/03.png" /></p>
|
||||
<p>
|
||||
So the three fields are now available and need to be filled.<br />
|
||||
The Display Name is simply the name you will see when you want to launch that
|
||||
application, so give it a descriptive name.<br />
|
||||
I named mine Traceroute as I will create a Ext. App launcher that will do a
|
||||
tracert command in the console.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External%20Apps/04.png" /></p>
|
||||
<p>
|
||||
Ok, the next thing we'll need is a filename. This is the application that we
|
||||
want to be executed.<br />
|
||||
I simply type in cmd for a windows cmd console.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External%20Apps/05.png" /></p>
|
||||
<p>
|
||||
Now the fun part comes in - the arguments.<br />
|
||||
The windows cmd has a command line argument that tells the console to launch the
|
||||
command followed by that argument and stay open.<br />
|
||||
It's /K. (There's also /C, this is useful when you want the console to close
|
||||
after the command was executed)<br />
|
||||
In this case I'll use /K as I want to scan through the result when the command
|
||||
completes.<br />
|
||||
After that I just type tracert %HostName%. This tells the console to do a
|
||||
traceroute on the hostname of the currently selected Connection.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External%20Apps/06.png" /></p>
|
||||
<p>
|
||||
Alright! That's all we'll need.<br />
|
||||
Now right click one of you connections, click Tools, External Applications
|
||||
and select Traceroute.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External%20Apps/07.png" /></p>
|
||||
<p>
|
||||
Voil<69>! A console window will popup and execute your tracert command.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External%20Apps/08.png" /></p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
245
mRemoteV1/Help/ExternalTools.htm
Normal file
245
mRemoteV1/Help/ExternalTools.htm
Normal file
@@ -0,0 +1,245 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" >
|
||||
<head>
|
||||
<title>External Tools</title>
|
||||
<link href="Main.css" rel="stylesheet" type="text/css" />
|
||||
<style type="text/css">
|
||||
.style1
|
||||
{
|
||||
white-space: nowrap;
|
||||
font-family: 'Courier New', monospace;
|
||||
height: 25px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>
|
||||
<span class="heading1">Introduction to External Tools</span></p>
|
||||
<p>
|
||||
External Tools can help you get things done that can't be done in
|
||||
mRemoteNG.<br />
|
||||
You can for example start a command prompt or launch your favorite FTP tool from
|
||||
within mRemoteNG.<br />
|
||||
This wouldn't make much sense by itself because you can already launch your
|
||||
applications by using the Windows Start Menu, Quick Launch or whatever you
|
||||
prefer to use
|
||||
to start your apps.</p>
|
||||
<p>
|
||||
But there's more!</p>
|
||||
<p>
|
||||
In mRemoteNG, you can launch applications and tell them what to do with the use of
|
||||
arguments (parameters) and variables of the currently selected Connection.
|
||||
You can, for example, select your home router's SSH Connection entry and do a
|
||||
traceroute (tracert) on that host.
|
||||
This is much quicker and more powerful than opening the console and typing
|
||||
"tracert yourhost".</p>
|
||||
<p>
|
||||
The external tools configuration is stored in %APPDATA%\mRemoteNG\extApps.xml</p>
|
||||
|
||||
<p>
|
||||
<span class="heading1">Variables</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Variables and arguments can be used to tell the external tool what to do.</p>
|
||||
<p>
|
||||
This is the list of variables supported by mRemoteNG:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>%NAME%</li>
|
||||
<li>%HOSTNAME%</li>
|
||||
<li>%PORT%</li>
|
||||
<li>%USERNAME%</li>
|
||||
<li>%PASSWORD%</li>
|
||||
<li>%DOMAIN%</li>
|
||||
<li>%DESCRIPTION%</li>
|
||||
<li>%MACADDRESS%</li>
|
||||
<li>%USERFIELD%</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
Variables always refer to the currently selected connection. Variable names are case-insensitive.
|
||||
Variables can be used in both the Filename and Arguments fields.</p>
|
||||
|
||||
<p>
|
||||
mRemoteNG will also expand environment variables such as %PATH% and
|
||||
%USERPROFILE%.
|
||||
If you need to use an environment variable with the same name as an mRemoteNG
|
||||
variable, use \% instead of %. The most common use of this is for the USERNAME
|
||||
environment variable. %USERNAME% will be expanded to the username set in the
|
||||
currently selected connection. \%USERNAME\% will be expanded to the value set in
|
||||
the USERNAME environment variable.</p>
|
||||
|
||||
<p>If you need to send a variable name to a program without mRemoteNG expanding it,
|
||||
use ^% instead of %. mRemoteNG will remove the caret (^) and leave the rest
|
||||
unchanged. For example, ^%USERNAME^% will be sent to the program as %USERNAME%
|
||||
and will not be expanded.</p>
|
||||
|
||||
<p>
|
||||
<span class="heading1">Special Character Escaping</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Expanded variables will be escaped using the rules below. There are two levels
|
||||
of escaping that are done. The first is escaping for standard argument splitting
|
||||
(C/C++ argv, CommandLineToArgvW, etc). The second is escaping shell
|
||||
metacharacters for ShellExecute.</p>
|
||||
<p>
|
||||
<span class="heading2">Argument splitting escaping:</span></p>
|
||||
|
||||
<ul>
|
||||
<li>Each quotation mark will be escaped by a backslash.</li>
|
||||
<li>One or more backslashes (\) followed by a quotation mark ("):
|
||||
<ul>
|
||||
<li>Each backslash will be escaped by another backslash.</li>
|
||||
<li>The quotation mark will be escaped by a backslash.</li>
|
||||
If the connection's user field contains
|
||||
"This" is a \"test\".<br/>
|
||||
Then %USERFIELD% is replaced with
|
||||
\"This\" is a \\\"test\\\".
|
||||
</ul>
|
||||
</li>
|
||||
<li>A variable name followed by a quotation mark (for example, %USERFIELD%") with
|
||||
a value ending in one or more backslashes:
|
||||
<ul>
|
||||
<li>Each backslash will be escaped by another backslash.</li>
|
||||
<li>Example:</li>
|
||||
If the connection's user field contains c:\Example\<br/>
|
||||
Then "%USERFIELD%" is replaced with "c:\Example\\"
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
To disable
|
||||
argument splitting escaping for a variable, precede its name with a minus (-)
|
||||
sign. For example, %-USERFIELD%.</p>
|
||||
<p>
|
||||
<span class="heading2">Shell metacharacter escaping:</span></p>
|
||||
|
||||
<ul>
|
||||
<li>The shell metacharacters are ( ) % ! ^ " < > & |</li>
|
||||
<li>Each shell metacharacter will be escaped by a caret (^).</li>
|
||||
</ul>
|
||||
<p>
|
||||
To disable both argument splitting and shell metacharacter escaping for a
|
||||
variable, precede its name with an exclamation point (!). For example,
|
||||
%!USERFIELD%. This is not recommended and may cause unexpected results.</p>
|
||||
<p>
|
||||
Only variables that have been expanded will be escaped. It is up to you to
|
||||
escape the rest of the arguments.</p>
|
||||
|
||||
<p>
|
||||
<span class="heading1">Variable Examples</span></p>
|
||||
|
||||
<table>
|
||||
<tr><th>Arguments</th><th>User Field</th><th>Result</th></tr>
|
||||
<tr>
|
||||
<td class='monospace'>%USERFIELD%</td><td class='monospace'>"Example" Text</td><td class='monospace'>
|
||||
\^"Example\^" Text</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>%-USERFIELD%</td><td class='monospace'>"Example" Text</td><td class='monospace'>
|
||||
^"Example^" Text</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>%!USERFIELD%</td><td class='monospace'>"Example" Text</td><td class='monospace'>
|
||||
"Example" Text</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='style1'>^%USERFIELD^%</td><td class='style1'>"Example" Text</td>
|
||||
<td class='style1'>%USERFIELD%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>^^%USERFIELD^^%</td><td class='monospace'>"Example" Text</td><td class='monospace'>
|
||||
^%USERFIELD^%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>-d "%USERFIELD%"</td><td class='monospace'>c:\Example\</td><td class='monospace'>-d "c:\Example\\"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>-d "%-USERFIELD%"</td><td class='monospace'>c:\Example\</td><td class='monospace'>-d "c:\Example\"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>-d "%USERFIELD%"</td><td class='monospace'>Left
|
||||
& Right</td><td class='monospace'>-d "Left ^& Right"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>-d "%!USERFIELD%"</td><td class='monospace'>Left
|
||||
& Right</td><td class='monospace'>-d "Left & Right"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>%WINDIR%</td><td>N/A</td><td class='monospace'>c:\Windows\</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>\%WINDIR\%</td><td>N/A</td><td class='monospace'>c:\Windows\</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>\^%WINDIR\^%</td><td>N/A</td><td class='monospace'>
|
||||
\%WINDIR\%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='monospace'>\\%WINDIR\\%</td><td>N/A</td><td class='monospace'>\\%WINDIR\\%</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<span class="heading1">Example</span></p>
|
||||
<p>
|
||||
First of all, start the external tools editor. To do this, click Tools in the main menu and
|
||||
select External Tools.<br />
|
||||
You will see a screen like on the following screenshot.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External Tools/01.png" /></p>
|
||||
<p>
|
||||
The fields below the list are greyed out because you haven't created an external tool
|
||||
entry yet.<br />
|
||||
To create one, right click the blank area in the list and select Add, as in the
|
||||
screenshot below.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External Tools/02.png" /></p>
|
||||
<p>
|
||||
This is what you'll get:</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External Tools/03.png" /></p>
|
||||
<p>
|
||||
So the three fields are now available and need to be filled.<br />
|
||||
The Display Name is simply the name you will see when you want to launch that
|
||||
tool, so give it a descriptive name.<br />
|
||||
I named mine Traceroute as I will create a external tool that will start the
|
||||
tracert command in the console.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External Tools/04.png" /></p>
|
||||
<p>
|
||||
Ok, the next thing we'll need is a filename. This is the program that we
|
||||
want to be executed.<br />
|
||||
I simply type in cmd for a Windows cmd console.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External Tools/05.png" /></p>
|
||||
<p>
|
||||
Now the fun part comes in—the arguments.<br />
|
||||
The Windows cmd has a command line argument that tells the console to launch the
|
||||
command followed by that argument and stay open.<br />
|
||||
It's /K. (There's also /C, this is useful when you want the console to close
|
||||
after the command was executed)<br />
|
||||
In this case, I'll use /K as I want to look through the result when the command
|
||||
completes.<br />
|
||||
After that, I just type tracert %HostName%. This tells the console to do a
|
||||
traceroute on the hostname of the currently selected Connection.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External Tools/06.png" /></p>
|
||||
<p>
|
||||
Alright! That's all we'll need.<br />
|
||||
Now right click one of you connections, click Tools, External Tools
|
||||
and select Traceroute.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External Tools/07.png" /></p>
|
||||
<p>
|
||||
Voil<69>! A console window will popup and execute your tracert command.</p>
|
||||
<p>
|
||||
<img alt="" src="Screenshots/External Tools/08.png" /></p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -30,7 +30,7 @@
|
||||
<li><a href="SSHFileTransfer.htm">SSH File Transfer</a></li>
|
||||
<li><a href="QuickConnect.htm">Quick Connect</a></li>
|
||||
<li><a href="ImportFromAD.htm">Import from Active Directory</a></li>
|
||||
<li><a href="ExternalApps.htm">External Applications</a></li>
|
||||
<li><a href="ExternalTools.htm">External Tools</a></li>
|
||||
<li><a href="PortScan.htm">Port Scan</a></li>
|
||||
</ul>
|
||||
<p><a href="QuickReference.htm">Quick Reference</a></p>
|
||||
|
||||
@@ -107,6 +107,25 @@ a:hover
|
||||
|
||||
|
||||
|
||||
/* TABLES */
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
th,td {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: lightgrey;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
||||
/* MISC STYLES */
|
||||
|
||||
@@ -117,4 +136,13 @@ a:hover
|
||||
color: #000000;
|
||||
font-family: 'Courier New' , Monospace;
|
||||
background-color: #C1C1C1;
|
||||
}
|
||||
}
|
||||
|
||||
.monospace {
|
||||
white-space: nowrap;
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
|
||||
.nowrap {
|
||||
white-space: nowrap
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user