From 4cb6c9e2e828374243500aa184a94ee454d21f4e Mon Sep 17 00:00:00 2001 From: Bennett Blodinger Date: Sat, 16 Feb 2019 08:54:46 -0600 Subject: [PATCH 01/38] Plaintext to Markdown Moves CHANGELOG.TXT and CREDITS.TXT to Markdown --- CHANGELOG.TXT | 1462 --------------------------- CHANGELOG.md | 1505 ++++++++++++++++++++++++++++ CREDITS.TXT | 150 --- CREDITS.md | 137 +++ mRemoteV1/UI/Window/AboutWindow.cs | 51 +- 5 files changed, 1652 insertions(+), 1653 deletions(-) delete mode 100644 CHANGELOG.TXT create mode 100644 CHANGELOG.md delete mode 100644 CREDITS.TXT create mode 100644 CREDITS.md diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT deleted file mode 100644 index d5e5fe45..00000000 --- a/CHANGELOG.TXT +++ /dev/null @@ -1,1462 +0,0 @@ -1.77.0 (2018-xx-xx): - -Features/Enhancements: ----------------------- -#1223: Open External Links in Default Web Browser -#1141: 'Copy Hostname' option added to connection tree context menu -#1129: Spanish translation improvements -#1072: Russian translation improvements -#1016: Chinese (simplified) translation improvements -#951: Added property to Enable/Disable Clipboard Sharing for RDP connections -#928: Add context menu items to 'Close all but this' and 'Close all tabs to the right' -#765: Port Scan Issues (single port scan option now available) -#155: Replace MagicLibrary with DockPanelSuite -#154: MR-139: Close Button on Each Tab - new default theme has a close button on each tab - -Fixes: ------- -#1248: RemoveMagicLib Bugs - various bugs that cropped up as a result of removing magiclib -#1245: Options form takes nearly 3 seconds to appear when Theming is active -#1240: Theming problem with NGNumericUpDown -#1238: Connection panel not translated until opened for the first time -#1186: Fixed several dialog boxes to use localized button text -#1170: Prevent Options window from showing up in taskbar -#1064: "Esc" button does does not close some dialogs -#1044: Dragging (grabbing) the program window requires 2 clicks - - -1.76.12 (2018-11-08): - -Features/Enhancements: ----------------------- -#1180: Allow saving certain connection properties locally when using database - -Fixes: ------- -#1181: Connections sometimes dont immediately load when switching to sql feature -#1173: Fixed memory leak when loading connections multiple times -#1168: Autohide Connection and Config tab won't open when ssh connection active -#1134: Fixed issue where opening a connection opens same connection on other clients when using database feature -#449: Encrypt passwords saved to database - - -1.76.11 (2018-10-18): - -Fixes: ------- -#1139: Feature "Reconnect to previously opened sessions" not working -#1136: Putty window not maximized - - -1.76.10 (2018-10-07): - -Fixes: ------- -#1124: Enabling themes causes an exception - - -1.76.9 (2018-10-07): - -Fixes: ------- -#1117: Duplicate panel created when "Reconnect on Startup" and "Create Empty Panel" settings enabled -#1115: Exception when changing from xml data storage to SQL -#1110: Pressing Delete button during connection rename attempts to delete the connection instead of the text -#1106: Inheritance does not work when parent has C# default type set -#1092: Invalid Cast Exceptions loading default connectioninfo -#1091: Minor themeing issues -#853: Added some additional safety checks and logging to help address RDP crashes - - -1.76.8 (2018-08-25): - -Fixes: ------- -#1088: Delete and Launch buttons are not disabled when last external tool deleted -#1087: 'Save connections after every edit' setting not honored -#1082: Connections not given GUID if Id is empty in connection xml - - -1.76.7 (2018-08-22): - -Fixes: ------- -#1076: Wrong object selected when duplicating connection then switching between properties and inheritance in config window -#1068: Fixed some toolbar positioning bugs - - -1.76.6 (2018-08-03): - -Fixes: ------- -#1062: Entering correct password when starting app does not load connections file - -1.76.5 (2018-08-02): - -Fixes: ------- -#1057: Hitting F2 with no connection node selected caused unhandled exception -#1052: 'Switch to notification panel' feature does not always switch -#1051: Tooltips always displayed regardless of 'Show description tooltips in connection tree' setting -#1050: Config window retains access to previously selected node after loading new connections file -#1045: Config window shows several incorrect properties for HTTPS connections -#1040: Canceling "select panel" form does not cancel -#1039: Set default theme when themes disabled -#1038: Unable to add connection with active filter -#1036: Exception when themes are active and options page closed on Connections then reopened -#1034: Connection context menu not being translated -#1030: Exception thrown if importing from port scan and no tree node is selected -#1020: BackupFileKeepCount setting not limiting backup file count -#1004: Duplicating root or PuTTy node through hotkey causes unhandled exception -#1002: Disabling filtering without clearing keyword leaves filtered state -#1001: Connection tree context menu hotkeys stop working and disappear in some cases -#999: Some hotkeys stop working if File menu was called when PuTTy Saved Sessions was selected -#998: Can sometimes add connection under PuTTY Sessions node -#991: Error when deleting host in filtered view -#971: Portable Settings now apply to any machine they are used on -#961: Connections file overwritten if correct decryption password not provided -#893: Removed unneeded files from build/package -#868: if statement returned the same value -#762: Increased button size to fit locaized text - - -1.76.4 Alpha 6 (2018-06-03): - -Features/Enhancements: ----------------------- -#948: Fixed issue where many menu item translations were not being used -#942: Improved Russian translation of several items -#924: Notification for "No Host Specified" when clicking folders in quick-connect menu -#902: Menu bar can once again be moved. View -> "Lock toolbar positions" now also locks the menu position -Added option for creating an empty panel on startup - -Fixes: ------- -#938: Minor layout improvements on the Port Scan screen -#916: Default properties were not being saved - - -1.76.3 Alpha 5 (2018-03-14): - -Fixes: ------- -#911: Csv exports sometimes do not include all fields -#807: Inheritance is sometimes turned on for nodes under root Connections node - - -1.76.2 Alpha 4 (2018-03-03): - -Fixes: ------- -#899: DoNotPlay is Case Sensitive in XML Serialization - - -1.76.1 Alpha 3 (2018-02-24): - -Features/Enhancements: ----------------------- -#625: Added ability to import mRemoteNG formatted CSV files -#648: The port scan ping timeout is now configurable - -Fixes: ------- -Fixed a few Xml serialization bugs that would occur if boolean values weren't capitalized - - -1.76.0 Alpha 2 (2018-02-01): - -Features/Enhancements: ----------------------- -#838: Added an option to lock toolbars -#836: Added a Read Only option for SQL connections -#829: Add option that fixes connecting to Azure instances with LoadBalanceInfo - -Fixes: ------- -#840: Fix theme loading issue in installer version -#800: Fixed issue with PuTTY sessions not showing some extended characters -Fixed a few toolbar layout issues - - -1.76.0 Alpha 1 (2017-12-08): - -Features/Enhancements: ----------------------- -#799: Added option to save connections on every edit -#798: Added button to test SQL database connections on SQL options page -#784: Rearranged some settings in the Options pages to prevent overlap with some translations -#704: Portable version now saves settings in application directory -#671: Revamped UI theme system -#611: Added multi-ssh toolbar for sending commands to many SSH clients at once -#558: Connection tree now shows customizable icons instead of play/pause icon -#519: You can now import normal mRemoteNG files - they do not have to be exports -#504: Added Korean translation -#485: The Domain field is now visible/editable for connection with the IntApp protocol -#468: Default connection info Panel property is now saved -#429: Added Czech translation -#421: When a connection file cannot be loaded, we will now prompt for how to proceed rather than always exiting. -#338: Added option to filter connection tree when searching -#357: Updated GeckoFX to v45.45.0.32 -#225: Added support for importing Remote Desktop Connection Manager v2.7 RDG files -#207: Can now specify a working directory for external tools -#197: Selecting a quick connect protocol will start a connection with that host -#184: Improve search to include description and hostname fields -#152: Added option "Show on Toolbar" to external tools -Added more logging/notifications options - -Fixes: ------- -#747: Fixed unnecessary "PuttySessions.Watcher.StartWatching" error message -#650: Fixed German translation typo -#639: Fixed Italian translation typo -#479: New connection tree nodes not starting in edit mode -#233: Fixed crash that can occur when disconnecting from VNC server -#195: Access to https with self-signed certificates not working - - -General Changes: ----------------- -#797: Removed duplicate translation strings -#608: The Help -> Support Forum menu item now directs users to our Reddit community -#493: Changed backup file name time stamp to use local system time rather than UTC -Improved compatability between environments when building mRemoteNG from source - - -1.75.7012 (2017-12-01): - -Fixes: ------- -#814: Fixed bug that prevented reordering connections by dragging -#810: Official mRemoteNG builds will now be signed with a DigiCert certificate -#803: File path command line argument not working with network path - - -1.75.7011 (2017-11-07): - -Fixes: ------- -#778: Custom connection file path command line argument (/c) not working -#763: Sometimes minimizing folder causes connection tree to disappear -#761: Connections using external tools do not start (introduced in v1.75.7009) -#758: "Decryption failed" message when loading from SQL server -Fixed issues with /resetpanels and /resetpos command line arguments -Resolved bug where connection tree hotkeys would sometimes be disabled - - -1.75.7010 (2017-10-29): - -Fixes: ------- -#756: CustomConsPath always null - - -1.75.7009 (2017-10-28): - -Fixes: ------- -#676: Portable version ignores /cons param on first run -#675: Attempting to add new connection/folder does not work in some situations -#665: Can not add new connection or new folder in some situations -#658: Keep Port Scan tab open after import -#646: Exception after click on import port scan -#635: Updated PuTTYNG to 0.70 -#610: mRemoteNG cannot start /crashes for some users on Windows server 2012 R2 server -#600: Missing horizontal scrollbar on Connections Panel -#596: Exception when launching external tool without a connection selected -#550: Sometimes double-clicking connection tree node began rename instead of connecting -#536: Prevented log file creation when writeLogFile option is not set -#529: Erratic Tree Selection when using SQL Database -#482: Default connection password not decrypted when loaded -#335: The Quick Connect Toolbar > Connection view does not show open connections with the play icon -#176: Unable to enter text in Quick Connect when SSH connection active -Minor error message correction -Minor code refactoring - - -NO.RELEASE (2017-06-15): - -Fixed in previous releases: ---------------------------- -#466: Installer still failing on Win7 for updates - v1.75.7005 (Hotifx 5) -#462: Remove no longer used files from portable version - v1.75.7003 (Hotfix 4) - - -1.75.7008 (2017-06-15): - -Fixes: ------- -#589: MSI doesn't update with newer PuTTYNG version that fixes #583 (Again, Sorry!) -Minor updates to the installer build - - -1.75.7007 (2017-06-14): - -Fixes: ------- -#583: SSH (PuTTYNG) Sessions are not properly integrated into the main mRemoteNG window (Sorry!) - - -1.75.7006 (2017-06-13): - -Fixes: ------- -#377: Use all space on About page -#527: Additional protections to avoid problems on update check in heavily firewalled environments -#530: Fixed issue where using External Tool on existing connection causes creation of 'New Connection' entry -#531: Update PuTTYNG to 0.69 -#546: Quick Connect from notification area icon displays warning when clicking on a folder (see #334) - - -1.75.7005 (2017-04-27): - -Fixes: ------- -#410: Update PuTTYNG to 0.68 -#434: Fix complier warnings CA1049 & CA2111 -#442: Fixed issue loading PuTTY sessions that have spaces in the name -#502: Problems with ParentID for Duplicated Containers/Connections with SQL Connection Storage -#514: Expanded property not saved/loaded properly from SQL -#518: Exception when Importing File - - -General Changes: ----------------- -Minor code cleanup/optimizations/null checks - - -1.75.7003 (2017-03-24): - -Fixes: ------- -#464: Resolved issue when importing a connections file while using SQL server feature - - -1.75.7002 (2017-03-10): - -Fixes: ------- -#448: Resolved issue with SQL saving - - -1.75.7001 (2017-03-10): - -Fixes: ------- -#408: Update SQL scripts - - -1.75 hotfix 1 (2017-03-06): - -General Changes: ----------------- -#437: Modify version numbering scheme - -Fixes: ------- -#422: Uncaught exception when clicking in connection tree whitespace -#312: Resolved KeePass auto-type issue -#427: Export does not respect filtering user/password/domain - - - -1.75 (2017-03-01): - -Known Issue: ------------- -File hash check will fail when updating from 1.75 Beta 1 to newer versions. - Exception will be: "MD5 Hashes didn't match!" for 1.75 Beta 1 - 1.75 RC1 - - -Features/Enhancements: ----------------------- -#344 - Use SHA512 File Hashes to validate downloads (in the update mechanism & posted to the Downloads page) -Added Release Channels to the update check functionality allowing users to select one of 3 release channels for updates: Stable, Beta, Dev -#360: Help -> About, Version # is now selectable/copyable -#221: RDP: Optional disconnect after X number of minutes of inactivity - - -Fixes: ------- -#369: Reset Layout Option Does Not Reset Notification Pane -#362: Invalid cast exception when using the Notification Area Icon minimize/restore -#334: Quick Connect displays warning when clicking on a folder -#325: When using a connection with an external app, results in opening the same external app continuously -#311: Import from Active Directory does not use machine's domain by default -#258: Rename Tab dialog - populate original name in dialog (1.72 functionality) -#211, #267: Recursive AD Import wasn't fully functional - - -General Changes: ----------------- -The usual general code clean up and refactoring -#325: Code clean up and additional logging for External Tools based connections -#298: Code clean up and additional logging around application startup -#291, #236: External Tools code clean up and additional logging - - - -1.75 Beta 3 (2016-12-01): - -Known Issue: ------------- -Portable build MD5 check will fail when updating from 1.75 Beta 1 to newer versions. - - -Fixes: ------- -#289: Install fails during update process (only affects v1.75 beta 1 - v1.75 beta 2) - - -1.75 Beta 2 (2016-12-01): - -Features/Enhancements: ----------------------- -#273: Added Turkish translation provided by forum user "rizaemet" -#217: Create user manual documentation for the SSH File Transfer feature - - -Fixes: ------- -#254: Component check window position issues and uncaught exception -#260: Crash when attempting to load fully encrypted confCons v2.5 -#261: Double clicking folder in treeview doesn't expand it in 1.75 beta1 -#271: Install package is not using the last installation path -#278: Silent installs not detecting prerequisites - - -1.75 Beta 1 (2016-11-15): - -General Changes: ----------------- -Lots of code clean up and refactoring -Limit log file size to 1 main log + 5 backups * 10MB. -Minor UI Tweak: Default Menubar and QuickConnect Bar to same line -MR-364: Removed "Announcement" functionality -MR-366: Show PuTTY type and version on components check screen -MR-586: Reduce HTTP/HTTPS document title length that is appended to the connection tab title -MR-938: Adjust RDP Resolution list (ensure most common resolutions were available) -MR-975: Replaced TreeView with TreeListView for displaying connection tree. This was a large change which separated the GUI from the domain model. -#144: Removed export option for "VisionApp Remote Desktop 2008" - - -Features/Enhancements: ----------------------- -MR-220: Don't close the AD importer after import -MR-971: Added Right Click method to Port Scan to import discovered hosts -MR-1000, #211: Sub OU AD Import -#172: Implement "audioqualitymode" for RDP sessions -#160: Allow portable version to perform an update check (and download the latest .zip) -#157: Implement new cryptography providers (See Tools -> Options -> Security) -#167: fix/implement the update check (was disabled in 1.74 as part of the C# conversion) - - -Fixes: ------- -MR-967: File transfer doesn't work when specifying full path and file name (as prompted) -MR-979: switched to notifications panel incorrectly (when configured NOT to do so) - - -1.75 Alpha 3 (2016-08-12): - -Fixes: ------- -MR-965, MR-871, MR-629: Error 264 on RDP Connect attempt - Added timeout value to Tools -> Options -> Connections -MR-946: Remove old/insecure SharpSSH and related components. Replace with SSH.NET for File Transfer Functionality -MR-896: Added prerequisite installer check for KB2574819. Prevents "Class not registered" errors when opening RDP connections. -PR-130: Fix Scan button width to fit Russian translation - - - -1.75 Alpha 2 (2016-08-03): - -General Changes: ----------------- -Updated GeckoFx package -Updated DockPanelSuite library to 2.10 Final -Japanese translation updated -MR-942: Refactored code relating to loading the connections file - -Features/Enhancements: ----------------------- -MR-961, PR-133: Option to reconnect all currently opened connection tabs -MR-917: Improved cryptographic support - -Fixes: ------- -MR-910: Fixes to support Remote Desktop Gateways -MR-874: Incorrect RDP prerequisite check in installer - - - -1.75 Alpha 1 (2016-07-08): - -General Changes: ----------------- -Additional code cleanup - - -Fixes: ------- -MR-905: mRemoteNG crashes at startup (in FIPS policy check) -MR-902: mRemoteNG crashes after locking/unlocking the local system after loading a VNC connection - - -1.74 (2016-06-28): - -Supported Platforms/Components: -------------------------------- -Windows 7 SP1 (with RDP Client v8: KB2592687/KB2923545) or later -.NET Framework 4 or later -XULRunner is no longer required for Gecko support (see below) - - -General Changes: ----------------- -Converted source from Visual Basic to C Sharp -Lots of code refactoring/clean up/general stability changes -MR-714: Removed Keyboard shortcut functionality - - Introduced in 1.73 beta that was never officially released - - This caused stability issues - - May be re-added in a future release - - Removal does *NOT* impact the ability to send keyboard shortcuts to RDP sessions (when redirect key combinations is set to "yes") -MR-559: Removed RDP Sessions panel functionality. This required a library for which no trusted origin/source could be located -Removed a bunch of old code/libraries and replaced them accordingly - - -Security Updates: ------------------ -MR-775, MR-745: Updated PuTTY to 0.67 - - -Features/Enhancements: ----------------------- -Updated to latest DockPanelSuite and enabled a slick new theme! -MR-145: Installer is now MSI based -MR-255: Updated RDP Client to version 8 -MR-389: Updates to IE rendering engine - - Support for latest version of IE (9-11) - - Dropped support for IE 7 & IE 8 -MR-850: Replaced XULRunner with GeckoFx - - No need to manually configure to have the Gecko rendering engine available now - - Install image is now significantly larger due to the inclusion of the Gecko Engine -MR-821: Initial Japanese translation included -Port Scan is now Asynchronous (and is significantly faster) - - -Fixes: ------- -MR-874: Added work-around to installer to ignore installation prerequisites -MR-884: Slow startup in some scenarios checking authenticode certificate -MR-872: Crash in External Tools when arguments aren't quoted -MR-854: crashes when right clicking on connection tab -MR-852: Option "Allow only a single instance of the application" non-functional -MR-836: Trying to delete a folder of connections only deletes 2 connections at a time -MR-824, MR-706: Suppress Script Errors when using the IE rendering engine -MR-822: Improve RDP error code messages -MR-640: Fixed Inheritance not working -MR-639: RDP: Connect to console session -MR-610, MR-582, MR-451: RDP: Protocol Error 3334 or exceptions with large number of connections open - - This problem appears largely resolved by most reports and testing - - Further workarounds/problem avoidance: Disable Bitmap Caching on all RDP session configuration -MR-429: Display issue on the Options -> Advanced panel -MR-385: Inheritance settings lost when moving item to the root of the tree - - ------ New Dev Team & Conversion to C# ----- - - -1.73 Beta 2 (NEVER RELEASED): -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 -MR-590: 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. - - - -1.71 Release Candidate 1 (2013-10-01): -Fixed issue MR-495 - Having a negative range in port scan creates memory exhaustion. -Fixed issue MR-514 - Window Proxy test failed without close button -Fixed issue MR-521 - Right-Clicking in "Sessions" panel crashes mRemoteNG -Fixed issue MR-525 - Could not start on windows 7 64bit -Fixed issue MR-535 - SQL error saving Connections -Fixed issue MR-538 - RDP loses connection when hiding config or connections pane -Fixed issue MR-542 - Wrapped putty has security flaw -Made minor improvements to the port scan functionality. -Fixed possible cross-thread operation exception when loading connections from SQL. -Fixed PuTTY Saved Sessions not showing after loading a new connections file. -Updated PuTTY to version 0.63. -Updated translations. -Added Chinese (Traditional) translation. -Added partial Greek and Hungarian translations. - - - -1.71 Beta 5 (2013-06-09): -Fixed issue MR-491 - Could not start RDP Connection -Fixed issue MR-499 - TS Gateway is not working in latest release 1.71 -Fixed typo in SQL queries. - - - -1.71 Beta 4 (2013-05-28): -Added feature MR-435 - Add digital signature check to updater -Fixed issue MR-255 - The version of the RDP AX client should be updated to 7 -Fixed issue MR-392 - Sessions Panel - context menu entries need to be context aware -Fixed issue MR-422 - Gives error Object reference not set to an instance of an object. -Fixed issue MR-424 - Import of a few Linux SSH2 hosts discovered via the port scan tool results in a UE -Fixed issue MR-439 - MRemoteNG 1.70 does not start -Fixed issue MR-440 - RDP import with non-standard port -Fixed issue MR-443 - Instructions for eolwtscom.dll registration for Portable version are inaccurate -Fixed issue MR-446 - Putty saved sessions show in connection panel -Fixed issue MR-459 - Maximized -> Minimized -> Restored results in mangled active display -Fixed issue MR-463 - Add support for LoadBalanceInfo to RDP -Fixed issue MR-470 - Quick Connect to Linux server uses invalid credentials -Fixed issue MR-471 - PuTTY Saved Sessions disappears from connection list -Fixed issue MR-487 - Initiate connections on MouseUp event -Added PuTTY Session Settings command to the Config panel for PuTTY Saved Sessions. -Updated translations. -Added Norwegian (Bokmal) and Portuguese (Brazil) translations. -Added Spanish translation to the installer. -Fixed an exception or crash when choosing unnamed colors for themes. -Fixed possible error "Control does not support transparent background colors" when modifying themes. -Fixed changes to the active theme not being saved reliably. -Fixed handling of the plus (+) character in PuTTY session names. -Changed Internet Explorer to no longer force IE7 compatibility mode. -Changed the "Launch PuTTY" button in the "Options" dialog to open PuTTY from the path the user has currently set, instead of what was previously saved. -Improved update and announcement checking. -Improved the PuTTY Saved Sessions list to update automatically when any changes are made. -Improved loading time of large connection files. -Lowered required version of RDC from 6.1 to 6.0. -Updated VncSharpNG to 1.3.4896.25007. - - - -1.71 Beta 3 (2013-03-20): -Fixed issue MR-397 - Putty disappears from the screen -Fixed issue MR-398 - Full Screen mode doesn't correctly make use of available space -Fixed issue MR-402 - scrollbar touch moves putty window -Fixed issue MR-406 - Items disappear from External Tools toolbar when accessing External Tools panel -Fixed issue MR-410 - Unhandled exception when clicking New button under Theme -Fixed issue MR-413 - Can't use application -Fixed new connections having a globe icon. -Fixed the category names in the themes tab of the options dialog on Windows XP not showing correctly. -Fixed PuTTY saved sessions with spaces or special characters not being listed. - - - -1.71 Beta 2 (2013-03-19): -Added feature MR-336 - Customizable background color for the windows/panels -Added feature MR-345 - Two separate options for confirming closure of Tabs and Connection Panels -Added feature MR-346 - Option to show/hide the description box at the bottom of the Config panel -Added feature MR-351 - Import connections from PuTTY -Fixed issue MR-354 - Re-ordering tabs doesn't give good, reliable visual feedback -Fixed issue MR-375 - Changing a connection's icon using the picture button should immediately update Icon field -Fixed issue MR-377 - Several redundant panels can be opened -Fixed issue MR-379 - Connection variables not working with external tools -Fixed issue MR-381 - Notifications panel - whitespace context menu allows Copy and Delete on nothing -Fixed issue MR-401 - Checkbox misaligned -The username and domain settings are now hidden for VNC connections since they are not supported. -Changed "Automatically get session information" to be disabled by default. -RDP connections can now be switched to full screen mode when redirect key combinations is enabled. - - - -1.71 Beta 1 (2013-03-04): -Added feature MR-329 - Create Option to disable the "Quick: " prefix -Fixed issue MR-67 - Sort does not recursively sort -Fixed issue MR-117 - Remote Session Info Window / Tab does not populate -Fixed issue MR-121 - Config pane not sorting properties correctly when switching between alphabetical and categorized view -Fixed issue MR-130 - Issues duplicating folders -Fixed issue MR-142 - Start of mRemoteNG takes about one minute and consumes excessive CPU -Fixed issue MR-158 - Password field not accepting Pipe -Fixed issue MR-330 - Portable version saves log to user's profile folder -Fixed issue MR-333 - Unnecessary prompt for 'close all open connections?' -Fixed issue MR-342 - Incorrect view in config pane of new connection after viewing default inheritance -Fixed issue MR-352 - Passwords with " (quotation mark) and # (hash key) characters make mRemoteNG to open PuttyNG dialog -Fixed issue MR-362 - Rename 'Screenshot Manager' to 'Screenshots' on the View menu to match Panel name -Added detection of newer versions of connection files and database schemata. mRemoteNG will now refuse to open them to avoid data loss. -Improved appearance and discoverability of the connection search box. -If RDC 7.0 or higher is installed, the connection bar is no longer briefly shown when connecting to an RDP connection with redirect key combinations enabled. -If RDC 8.0 or higher is installed, RDP connections automatically adjust their size when the window is resized or when toggling full screen mode. - - - -1.70 (2013-03-07): -Fixed issue MR-339 - Connection group collapses with just one click -Fixed issue MR-340 - Object reference not set to an instance of an object. -Fixed issue MR-344 - Move "Always show panel tabs" option -Fixed issue MR-350 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long. -Fixed issue MR-355 - Moving sub folders to top level causes property loss -Fixed tabs not closing on double-click when the active tab is a PuTTY connection. - - - -1.70 Release Candidate 2 (2013-02-25): -Fixed issue MR-332 - Can't select different tab with one click after disconnecting existing tab -Fixed issue MR-338 - PuTTYNG crashing on fresh install of mRemoteNG -Re-enabled PuTTYNG integration enhancements on Windows 8 - - - -1.70 Release Candidate 1 (2013-02-22): -Fixed issue MR-183 - Error trying to save connections when using SQL - Invalid column name _parentConstantId -Fixed issue MR-225 - Tabs do not open in a panel until multiple panels are displayed. -Fixed issue MR-229 - Integrated PuTTY doesn't work in Windows 8 RP -Fixed issue MR-264 - Windows 8 support -Fixed issue MR-317 - Difficulty right-clicking on Tab -Fixed issue MR-318 - Wrong tab gets selected when tab names overflow on the tab bar -Fixed issue MR-321 - New connection panel doesn't get panel header if its the only one or is moved -Fixed issue MR-322 - Connection Button not listing servers -Added option to always show panel tabs. -Fixed "Decryption failed. Padding is invalid and cannot be removed." notification. -Fixed KiTTY opening in a separate window when using a saved session. - - - -1.70 Beta 2 (2013-02-18): -Fixed issue MR-47 - Silent Installation Prompts for Language -Fixed issue MR-54 - Error When disconnecting from SSL channel RDP -Fixed issue MR-58 - Bug when duplicating connection in connection view -Fixed issue MR-68 - Config Window Loses Options -Fixed issue MR-71 - Minimizing mRemoteNG causes temporary re-size of Putty sessions (windows) -Fixed issue MR-80 - Reconnect previous sessions -Fixed issue MR-81 - Problem Duplicating Folder w/ Sub-Folders -Fixed issue MR-85 - Microsoft .NET Framework warning -Fixed issue MR-86 - Citrix GDI+ Error when screen is locked -Fixed issue MR-96 - When pressing SHIFT+F4 to create a new connection inside a folder, the new connections doesn't inherit any properties from its parent -Fixed issue MR-101 - Collapse all folders causes a NullReferenceException -Fixed issue MR-165 - Can't close About window if it is the last tab -Fixed issue MR-166 - Inheritance button is disabled on some connections -Fixed issue MR-167 - Name and description of properties not show in inheritance list -Fixed issue MR-171 - Inherit configuration not showing friendly names for each inherit component -Fixed issue MR-172 - RDGatewayPassword is unencrypted in confCons.xml file -Fixed issue MR-174 - Trailing Space on a Hostname/IP will cause the connection not to happen. -Fixed issue MR-175 - Problem with focus when 2 or more PuTTY sessions opened -Fixed issue MR-176 - Del key while editing connection name triggers 'Delete Connection' -Fixed issue MR-178 - 3 different panels crashes all connections -Fixed issue MR-181 - Sessions on startup -Fixed issue MR-190 - Can't click on tab/session -Fixed issue MR-196 - Cannot export list without usernames and passwords -Fixed issue MR-199 - when using screen inside putty, screen becomes dead when reduce mremoteNG -Fixed issue MR-202 - The Connection "Tab" show Ampersands as underscores. -Fixed issue MR-214 - Hostname/IP reset -Fixed issue MR-224 - Session tabs become un-clickable after duplicating a tab or opening a new one in the same panel -Fixed issue MR-233 - Backslash at end of password prevents success of putty invocation and corresponding auto-logon -Fixed issue MR-235 - Config file gets corrupted when leaving the password entry box with ESC -Fixed issue MR-264 - Windows 8 support -Fixed issue MR-277 - Inheritance configuration button not appear in configuration tab -Fixed issue MR-284 - SSH: Text not showing properly -Fixed issue MR-299 - mRemoteNG crashes while using remotely (Windows XP remote desktop) -Fixed issue MR-306 - Fatal .NET exception on program start -Fixed issue MR-313 - PuTTY window not maximized when loading from saved session -mRemoteNG now requires .NET Framework 3.0 instead of 2.0. -Updated translations. -Added translations for Spanish (Argentina), Italian, Polish, Portuguese, Chinese (Simplified). -Improved the use of Tab and Shift-Tab to cycle through entries in the Config grid. -Improved loading of XML files from older versions of mRemote/mRemoteNG. - - -1.70 Beta 1 (2012-02-27): -Fixed issue MR-77 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long. -Fixed issue MR-78 - Renaming Connections -Fixed issue MR-79 - MoveUp/Down item doesn't work + Sort button broken -Fixed issue MR-93 - Regional settings problem when using SQL connection in mRemoteNG -Fixed issue MR-97 - Integrate Dutch translation -Fixed issue MR-98 - Integrate Russian and Ukranian translations -Fixed issue MR-99 - Integrate Spanish translation -Fixed issue MR-131 - RD Gateway does not respect setting for use different credentials -Added compatibility check for "Use FIPS compliant algorithms" security setting. -Improved reporting of errors when encrypting and decrypting connection files. -Added partial Polish translation. -The panel tabs are now hidden if only one panel is open. -Fix focus issue with RDP connections when changing tabs. -Show changes live as connection tabs are being dragged around to change their order. -Updated PuTTY to version 0.62. -Improved error handling when loading connection files. -Fixed bugs with creating a new connection file. -A backup of the connection file is saved when it is loaded. The most recent ten backup copies are kept. -Added the option to use a smart card for RD Gateway credentials. -Made the use of CredSSP for RDP connections optional. -Updated VncSharpNG to version 1.2.4440.36644. -Added debugging symbols for VncSharpNG. - - - -1.69 (2011-12-09): -Fixed issue #66 - Fresh Install Fails to Create Config -Fixed issue #69 - Connection file gets erased -Fixed issue #72 - scrollbars added to RDP window after minimize/restore of mRemoteNG -Disabled automatic updates in the portable edition -Fixed file name in window title changing when exporting an XML file. -Fixed Use only Notifications panel checkbox. -Updated PuTTY to version 0.61 -Binaries are now digitally signed -Added Credits, License, and Version History items to the Start Menu and made Start Menu item names localizable. - - - -1.68 (2011-07-07): -Fixed issue #48 - VerifyDatabaseVersion fails with new (empty) database tables. -Fixed issue #60 - Can't save connections file -Fixed issue #62 - Connection file error upon launch. - - - -1.67 (2011-06-05): -Fixed migration of external tools configuration and panel layout from Local to Roaming folder. -Disable ICA Hotkeys for Citrix connections.Fixes issue with international users. -Added a language selection option so users can override the language if they don't want it automatically detected. -Added partial French translation to the application. -Addded Thai translation to the installer. -Updated graphics in the installer to mRemoteNG logo. -Fixed RD Gateway default properties and RDP reconnection count setting not being saved. -Fixed bug 33 - IPv6 doesn't work in quick Connect box. -Moved the items under Tools in the Connections panel context menu up to the top level. -Added buttons for Add Connection, Add Folder, and Sort Ascending (A-Z) to the Connections panel toolbar. -Fixed rename edit control staying open when collapsing all folders. -Changed sorting to sort all subfolders below the selected folder. -Allow sorting of connections if a connection entry is selected. -Fixed adding a connection entry if nothing is selected in the tree. -Added 15-bit Color RDP setting. -Fixed loading of RDP Colors setting from SQL. -Added Font Smoothing and Desktop Composition RDP settings. -Improved error handling when loading XML connection files. -Added the mRemoteNG icon to the list of selectable icons for connection entries. -Added confirmation before closing connection tabs. -Fixed bug 42 - Maximized location not remembered with multiple monitors. -Improved loading and saving of window location. -Removed flickering on start up. -Changed the Options page into a normal dialog. -Improved Reset Layout function. -Changed to use full four part version numbers with major, minor, build, and revision. -Changed hard coded SQL database name into a user configurable setting. -Fixed tab order of controls in Options dialog. -Fixed bug 45 - Changing some settings in the config file may not save. - - - -1.66 (2011-05-02): -Fixed connections not working - - - -1.65 (2011-05-02): -Fixed Ctrl-Tab and Ctrl-Shift-Tab not working in any other applications while mRemoteNG is running -Ctrl-Tab and Ctrl-Shift-Tab no longer work to switch tabs within mRemoteNG -Fixed bug 36 - Install creates shortcuts only for the installing user -Fixed bug 38 - Application uses the wrong Application Data settings folder (in Local Settings) -Added code to the installer to check that the user is in the 'Power Users' or 'Administrators' group - - - -1.64 (2011-04-27): -Fixed bug 6 - VNC CTRL+key & keyboard combo mappings are broken -Fixed bug 12 - Tab switch is not working in config panel -Fixed bug 14 - RDP Connection authentication problem -Fixed bug 22 - External App parameter macro expansion doesn't work with "try to integrate" -Fixed bug 25 - Unhandled exception when mRemoteNG opens -Added multilanguage support and German translation to the application -Added Czech, Dutch, French, German, Polish, and Spanish translations to the installer -Added Ctrl-Tab hotkey to switch to the next tab and Ctrl-Shift-Tab to switch to the previous tab -Added Tab key to cycle through entries in the Config grid and Shift-Tab to cycle in reverse -Added ability to configure external tools to run before or after a connection is established -Fixed missing parameters in macro expansion for external tools -Fixed RD Gateway and other inheritance bugs -Changed how new connection files are created -Changed the internal namespace of the application to mRemoteNG instead of mRemote -Added credit for the DockPanel Suite to the About page -Updated DockPanel Suite to version 2.5 RC1 -Updated VNCSharpNG to correct Ctrl and Alt key pass-through behavior - - - -1.63 (2010-02-02): -New icon and logo -Fixed problems moving or resizing the main window while PuTTY (SSH/telnet/rlogin/raw) connections are open -Fixed PuTTY processes not closing on Vista and 7 with UAC enabled -Updated DockPanel Suite from 2.2.0 to 2.3.1 -Fixed error if the mouse is clicked outside of the remote screen area of a VNC connection -Fixed flashing and red lines at bottom of the window on first run -Added View->Reset Layout menu item -Added F11 shortcut key to View->Full Screen -Improved RDP error reporting -Added support for Credential Security Support Provider (CredSSP) which is required for Network Level Authentication (NLA) -Added support for connecting through Remote Desktop Gateway servers -Popups can now be allowed in Internet Explorer by holding Ctrl+Alt when clicking a link -Added PuTTY Settings item to tab context menu - - - -1.62 (2010-01-19): -Switched to VncSharp, an open source VNC component -VNC is supported again except for the following features: -Windows authentication -Setting the compression, encoding and color settings -Connecting through a proxy server -Free SmartSize mode (it does the same thing as Aspect SmartSize mode now) -Rearranged the Options page and added an Updates tab -Added option to change how often updates are checked -Open Updates options tab before connecting for the first time -No longer show About page on first run -Renamed Quicky toolbar to Quick Connect toolbar -Changed back to allowing toolbars to dock to the left or right of the menu bar and added gripper to move it around -Added RDP, VNC and ICA version numbers to Components Check page -Fixed a bug with the inheritance buttons on the Config panel disappearing after awhile - - - -1.61 (2010-01-14): -Removed unlicensed SmartCode Solutions ViewerX VNC Viewer ActiveX -This version of mRemoteNG does not support VNC - - - -1.60 (2010-01-09): -Changed name to mRemoteNG -Fixed menu bar not staying docked to left side -Removed snakes game Easter egg -Removed references to visionapp Remote Desktop -Changed filename delimiter in title bar from pipe to dash -Changed default format for saving screenshot images to PNG -Changed website addresses -Added Report a Bug and Support Forum links to the Help menu -Moved Check for Updates to the Help menu -Changed website links in Help menu and About page to load within mRemoteNG instead of launching an external browser - ------ - -1.50: -Added the following formats to the "Save Connections As" function: -mRemote CSV (standard CSV file with all properties) -vRD 2008 CSV (standard CSV file with properties relevant for importing connections in vRD 2008) -Fixed bug in inheritance code (SmartSize Mode and View Only properies were always shown when using VNC) - -1.49: -mRemote and visionapp Remote Desktop 2008 merge! -Read more here: http://www.mremote.org/wiki/visionappMerge.ashx -or in the Announcement panel. -Added features to the update function -Added Announcement feature -Changed copyright notice in about screen and text when connecting via VNC -Fixed some SQL-related problems - -V1.48: -ATTENTION! There is a bug in the automatic update code in 1.45 so you will have to download the new version manually from http://www.mremote.org/wiki/Downloads.ashx - -Added startup components check with directions to fix component installation (also available in Tools - Components Check) -Added "Try to integrate" option to Ext. Apps. If enabled mRemote will try to integrate the app into a tab container like any other connection protocol. -Added Ext. App as protocol. Any Ext. App can be launched just like a normal connection. -Example (DameWare Mini Remote Control): -Create a new Ext. App with the following properties: -Display Name: DameWare -Filename: c:\PathToYourDameWareInstallDir\DWRCC.exe -Arguments: -c: -h: -m:%hostname% -u:%username% -p:"%password%" -d:%domain% -Options: Try to integrate -Create a new connection and select Ext. App as protocol -Then choose DameWare in the Ext. App field -If you have problems with a particular app that takes a long time to start up consider setting a higher PuTTY/Ext. Apps wait time in Tools - Options - Advanced -Added option to completely encrypt connection files (tools - options - advancecd) -Added Rendering Engine option for HTTP/S protocols -You can now use the Gecko (Firefox) rendering engine -For this to work you need to download xulrunner (get it here: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/) -It must be the 1.8.1.3 release, 1.9.0.0 does NOT work! -Extract the contents to a path of your choice and set the correct path in Tools - Options - Advanced - XULrunner path -The interface is tab enabled and usage is generally very firefox-like. So you can open new tabs with Ctrl+T, jump to the location bar with Ctrl+L and so on... -Added "MAC Address", "User Field" fields and %MacAddress%, %UserField% variables to use in Ext. Apps -Added descriptions for all fields in the config editor -Fixed bug in connections loading code when using SQL storage -Fixed bug in reconnect code -Fixed VNC sessions not refreshing screen automatically when switching between tabs or panels - -WARNING! There have been changes to the connections file/SQL tables -Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables -To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) -These are the added lines: -[RenderingEngine] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , -[MacAddress] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , -[UserField] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , -[ExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , -[InheritRenderingEngine] [bit] NOT NULL , -[InheritMacAddress] [bit] NOT NULL , -[InheritUserField] [bit] NOT NULL , -[InheritExtApp] [bit] NOT NULL , - -V1.45: -New german language build available -Added support for RDP 6.1 (XP SP3/Vista SP1) features (Server Authentication, Console Session, TS Gateway not yet...) -Added basic support for UltraVNC SingleClick (Tools - UltraVNC SingleClick); the listening port is configurable in the options -Fixed VNC connections not working on x64 -Fixed screenshots save all feature overwriting files with the same name (not actually a bug, but rather a new feature ;) -Fixed ICA Encryption Strength not inheriting properly - -WARNING! There have been changes to the connections file/SQL tables -Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables -To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) -These are the added lines: -[RDPAuthenticationLevel] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , -[InheritRDPAuthenticationLevel] [bit] NOT NULL , - -V1.43: -Added function to send either the main form or a connection panel to another screen -To send the form to another screen, right click the titlebar or the taskbar button and select "Send to..." -If you want to send a panel to another screen, right click the panel's tab and do the same -Fixed PuTTY connections not supporting credentials with spaces -Fixed form not opening on last position when using multiple screens -Fixed kiosk mode not working on secondary screen - -V1.42: -IMPORTANT NEWS: Please read the page that opens when you first start this release or go to: -http://www.mRemote.org/wiki/MainPage.ashx#Commercial -Added minimize to tray option -Added option to enable switching to open connections with a single click on the corresponding connection in the tree -Added button to test proxy settings -Fixed: If the active connection tab is a PuTTY connection, Alt+Tab to mRemote now focuses the PuTTY window -Fixed encoding problem with PuTTY sessions that included spaces -Fixed problem that made mRemote inaccesible when closing it on a second monitor and then disabling this monitor -Fixed: Inheritance defaults of some new VNC properties were not saved in the portable package - -V1.41: -Added complete support for SmartCode's ViewerX and removed VncSharp -Many thx to everyone who donated to make this happen!!! I didn't think that it wouldn't even take a week! =) -I hope everyone will be satisfied by the functions and possibilities this new control provides -If you use one of the non-setup packages you must register the control yourself -Open a cmd and change to the directory you installed mRemote to -Type regsvr32 scvncctrl.dll and click ok -Changed shortcuts and added buttons for them to the view menu under "Jump To" because they were causing several problems - -WARNING! There have been changes to the connections file/SQL tables and the Ext. Apps XML file -Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables -To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) - -V1.40: -Added (limited) support for the trial version of SmartCode's VNC ActiveX -To enable it go to Options - Advanced and check "Try SmartCode VNC ActiveX" -When connecting a pop up will open, wait about 10 seconds, then click on "Trial" to continue -I will integrate this control fully into mRemote if I get enough Donations to buy the single developer license ($375,-) -So if you want to see better VNC support (All UltraVNC, TightVNC and RealVNC functions) in mRemote, please help me and donate some bucks -For donations either go to the mRemote Wiki (Info - Website) or click on Info - Donate to directly go to PayPal -I will announce the current donation amount every day (or as often as I can) on the Wiki main page -If you want to know more about the control go here: http://www.s-code.com/products/viewerx/ -Added feature to choose the panel a connection will open in when... -a. no panel name was assigned in the properties -b. you opened a connection with the option to choose the panel before connecting -c. you checked "Always show panel selection dialog when opening connectins" in Options - Tabs & Panels -Added Shortcuts to focus the standard panels -Alt+C: Switch between Connections & Config panel -Alt+S: Switch between Sessions & Screenshots panel -Alt+E: Switch to Errors & Infos panel -Added some new icons - -V1.39: -Added MagicLibrary.dll to the release again (forgot it in the 1.38 packages, sorry) -Added auto-reconnect for ICA -Added feature that automatically clears whitespaces in the Quicky Textfield -Added special feature: Go to the set password dialog and type "ijustwannaplay" (without the quotes) in the password field... ;) - -V1.38: -Added automatic reconnect feature for RDP (Options - Advanced) -Added connections drop-down to the quicky toolbar (same as the tray icon menu) -Added setting in the options to enable/disable that double clicking on a connection tab closes it -Added option to automatically set the hostname like the display name when creating new connections -Fixed bug that caused the properties of a folder to be filled with "Object reference not set to an instance of an object." when adding a folder to the root with Default Inheritance enabled -Fixed bug that made the properties of a newly added Connection to the root unavailable when Default Inheritance was enabled -Fixed bug that the default settings for Pre/Post Ext. App, and their inheritance settings were not being saved -Fixed bug in settings loading methods that caused the application to hang when an error occured -Fixed bug in Ext. Apps panel that copied the properties of the previously selected Ext. App when "Wait for exit" was checked -Fixed bug in the SQL Query that creates the tables needed by mRemote -Attempt to fix the "Drop-Down on Screenshot" bug on some machines - -V1.35: -Added single instance mode (look in Options - Startup/Exit) - No cmd arguments supported yet! -Added possibilty to start a Ext. App before connecting and on disconnect (e.g. for VPN/RAS) -Added option to the Ext. Apps to tell mRemote to wait for the exit of the Ext. App -Added encryption setting for ICA - -WARNING! There have been changes to the connections file/SQL tables and the Ext. Apps XML file -Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables -Here's a list of new columns that need to be created before saving connections to an SQL server: -Name: ICAEncryptionStrength, Data-Type: varchar, Length: 64, Allow Nulls: No -Name: InheritICAEncryptionStrength, Data-Type: bit, Length: 1, Allow Nulls: No -Name: PreExtApp, Date-Type: varchar, Length: 512, Allow Nulls: Yes -Name: PostExtApp, Date-Type: varchar, Length: 512, Allow Nulls: Yes -Name: InheritPreExtApp, Date-Type: bit, Length: 1, Allow Nulls: No -Name: InheritPostExtApp, Date-Type: bit, Length: 1, Allow Nulls: No - -V1.33: -Fixed problem that caused RDP connections not to initialize properly when using XP SP3 -Fixed bug in Port Scan that prevented hosts with no hostname from being imported - -V1.32: -Added: Inheritance defaults can now be customized (look in the root properties of your connections tree) -Fixed bug that made password-secured connection files not load properly because the return value from the password screen was always null -Fixed a lot of outdated code in the import functions (Import from XML, Import from AD, Import from RDP files) -Fixed bug that caused properties with a ' character not to be saved properly when using SQL Server -Changed Target CPU to AnyCPU again as I think the x86 setting caused problems on x64 machines (although it shouldn't) - -V1.31: -Small speed improvement to the port scanner -Fixed bug that caused SQL live-update to not work when not using AD Authentication -Fixed bug that caused Save As not to work - -V1.30: -Added experimental SQL Server with live-update (multi-user) support (see Help - Getting started - SQL Configuration) -Added bunch of new icons to the UI, most of them by famfamfam.com -Added dropdown button to Quicky Toolbar to choose protocol -Many smaller changes and additions -Fixed: Wrong default PuTTY session name -Fixed bug in Port Scanner that caused an error when no DNS name could be resolved - -V1.25: -Added inheritance for folders -Added port scan feature and possibility to import from a scan -Added toolbar for Ext. Apps (see View - External Applications Toolbar) -Added quick connect as toolbar -Added code that creates a backup of the current connections file every time it is loaded (It's named YourConsFile.xml_BAK) -Added description variable to Ext. Apps -Fixed bug that allowed inheriting from root node -Fixed bug that caused Ext. Apps launched from a connection tab to use the selected tree node instead of the current tab -Fixed bug that caused mRemote not to save panel layout and Ext. Apps on exit - -V1.24: -Fixed a bug in connections loading mechanism that caused a corrupted connections file when upgrading from a previous version - -V1.23: -Added feature to remember which connections were opened on last runtime and reconnect to them on the next start (see Tools - Options - Startup/Exit) -A command line switch is also available to cancel reconnecting (/noreconnect or /norc) -Added Auto Save feature (Tools - Options - Connections - Auto Save every...) -Added Ext. Apps to connection tab context menu -Added better error handling for RDP connection creation -Fixed problem with Sessions feature on 64bit systems -Fixed Sessions feature not working when using global credentials -Fixed several problems with the Active Directory OU picker control -Fixed bug in Connection duplicate code that caused duplicated connection to still have previous tree node assigned - -V1.20: -Added External Applications feature (check the help section for more info) -Added duplicate feature to Connections tree -Fixed: MagicLibrary.dll was not included in the setup package - -V1.16: -New Domain: www.mRemote.org -Fixed PuTTY connections appearing in a new window -There's a new setting in the options to fine tune the time to wait until the window has been created -Fixed export not working -Added reconnect feature in tab menu - -V1.15: -Added: New portable package -Added: Defaults for new connections can now be customized -Click the root item and then the new Properties-like button with a small yellow star to get to the settings -Fixed Import from Active Directory not working -Fixed problem with single click connect not focusing correctly -Fixed root node not being renamed after changing name in property grid - -V1.10: -Added support for setting a password to protect the connections file with (look in the root of your connections tree) -Added RDP file import feature -Added new command-line switch to reset panel's positions -Added HTTPS as protocol -Added HTTP/S basic authentication -Added support for setting a Proxy server for automatic updates -Some changes in help section -Fixed the bug that passwords stored in the options weren't decrypted when a connection was opened -Fixed "bug" that prevented "Connect to console session" from working in RDC6.1 (Vista SP1 RC1/XP SP3 RC1) - -V1.00: -Merry Christmas! =) - -V1.00 is a (almost) complete rewrite of the whole application -The code base is now much cleaner and more (easily) extendable -New features include (but are not limited to): -Every part of the application is now integrated into panels which can be moved, docked and undocked, hidden, moved to another monitor, etc. -This makes many new and exciting ways to manage connection and application windows possible -You can for example open up 4 PuTTY sessions in 4 different panels and align them in the main application so you can use all 4 side by side - 2 on the upper side and 2 on the bottom for example -This can be done for EVERY part of the application, it's completely modular and customizable -Connection and folder (previously called containers) properties have moved to a new property grid control -Every setting (with the exclusion of the hostname, which wouldn't make any sense) can now be inherited from the parent folder -Connection file saving/loading is now handled a bit different (more in the help section) -Application restart is no longer nececary after changing options, they are active with a click of the OK button -Smart size can now be activated also if a connection is already open (in the right click menu of the active tab) -A panel name can be stored with every connection (or folder, if inherting) to always open the connection in the specified panel -And last but not least, many bugs have been fixed, though there are probably many new bugs aswell - Did I already mention this is a rewrite? ;) -I hope you like my work and if you do please consider donating on the mRemote website to support me a little. Any amount will do! Thx! - -V0.50: -Removed old Terminal (SSH, Telnet) control and embedded PuTTY instead -This decision brings mostly good but also some bad news -The good news is that now everything that works in putty also works in mRemote -This means X11 forwarding, SSH port forwarding, session logging, appearance customization, etc. should be working fine now -It also brings some new protocols (Rlogin, RAW) -The bad news is that I cannot fully integrate Putty into mRemote because it is a standalone application and thus has it's own window handle -This means that you won't be able to use Ctrl+Tab to switch between tabs, catching errors or infos through the new Errors and Infos tab isn't possible, etc. -Added possibility to change resolution or display mode (Fit to window, Fullscreen, Smart size) -Added new setting in options to show logon info on tab titles -Added new feature that catches popup dialogs and puts them in a managed interface. This is another step to make mRemote a single window application. -Pressing escape switches back to the connection list -There is a context menu that allows you to copy selected errors/warnings/infos to the clipboard (text only) or to delete them -There also are settings in the option to change when to switch to the tab and to switch back to the normal behaviour of displaying message popups -Added QuickConnect history and auto-complete functions -Added a few new Icons (Linux, Windows, ESX, Log, Finance) -Improved options tab -Connections file version is now 1.2 -Fixed some form drawing bugs - -V0.35: -Added tab switching/closing hotkeys -Switch to next tab: Ctrl+Tab -Switch to previous tab: Ctrl+Shift+Tab -Close active tab: Ctrl+W -This does not and will probably never work with RDP connections! -Fixed bug in updating code that still displayed the current version in the old format (x.x.x.x instead of x.xx) -Fixed bug where the colors setting was not correctly read after saving and reloading a connections file (only with 256 colors setting) -Fixed bug that made connect to console session and fullscreen options not work -Fixed bug that when opening options, update or about tab caused weird paddings next to the tab or other strange behaviour -Changed shortcuts to menu items in main menu as they interfered with some terminal key bindings - -V0.30: -Added HTTP as protocol to allow for basic web-based administration -Added new connections menu to the toolbar -Left click on a connection connects -Right click on a container or connection opens the config tab for the selected item -Added two new connection context menu entries for quickly connecting to console session or connecting in fullscreen -Improved tray icon menu (just like the main connections menu) -The connections tree can now be hidden -To hide it right click on the splitter (the divider between the connections tree and the tabbing interface) -Removed overlay (RDP locking) feature in favor of simply grabbing input when clicking inside the control area -I hope nobody is too sad that the nice looking overlay feature had to go, but..., well, it had to! ;-) -Changed "Redirect Key combinations (like in fullscreen)" to be disabled when in kiosk mode as it has no effect then anyway -Several small bugfixes and code improvements - -V0.20: -Added Drag and Drop support for tabs -Added tab context menu -Switch to/from fullscreen -Take a screenshot -Transfer files via SCP/SFTP (SSH) -Send special keys (VNC) -Rename tabs -Duplicate tabs (Create another instance of the connection) -Show config -Close tab (disconnect) -Removed Fullscreen and Send special keys buttons from the main toolbar as they are now in the tab context menu -Added middle click support for tabs (close/disconnect) -Added SSH file transfer (SCP/SFTP) support -Added Tools menu to the tree context menu -Transfer files via SCP/SFTP (SSH) -Import/Export features -Sorting -Changed version format -Fixed the problem that caused mRemote to crash when dragging a parent node of the connections tree onto one of it's child nodes -Fixed problem in importing mechanism that allowed importing connections including the root which resulted in multiple root items that couldn't be deleted -Fixed problem with quick connect - -V0.0.9.0: -Added support for redirecting key combinations (Alt+Tab, Winkey, ...) -Added Import/Export features -Added Quick Connect Port support, just type the host you want to connect to followed by a ":" and then the port -Added Connect/Disconnect buttons to connections context menu -Added two new icons (Test Server | TST; Build Server | BS) -Many changes to the connections loading/saving mechanisms -confCons version is now 1.0 -Some code cleanup -Fixed auto session info to only try to get session information when a RDP connection is selected -Fixed AD Import feature (didn't care if imported items were computers, groups, users, ... ;) -Fixed settings and connections not saving when installing updates from the auto-updater -Fixed form size and location not saving properly when closing the application in minimized state or in maximized state on a secondary monitor - -V0.0.8.2: -Added SSH1 to Quick Connect GUI -Changed buffer size of terminal control, it's now 500 lines -Fixed terminal connections not getting focus when changing tabs -Fixed bug in terminal code that caused hitting "home" to show "~" instead of jumping to the start of the line -Fixed bug that caused that hitting enter in mRemote wouldn't do anything when options was opened before - -V0.0.8.0: -Added code to check if the msrdp com control is registered -Many Improvements to the terminal control (ssh1(!), ssh2, telnet) -Fixed bug that caused mRemote to crash when moving connection into root node (only with inheritance enabled) -Fixed bug: Pressing delete when editing a node's name caused delete messagebox to show - -V0.0.7.5: -Added inheritance feature to inherit connection settings from parent container -Expanded/Collapsed state of tree nodes will now be saved -Reduced auto session info delay to 700ms -Some code maintainance -Some corrections to connections tree and quick search behaviour -Fixed bug in TerminalControl that caused the error message "error loading string" -Fixed: Settings saving on exit was broken in V0.0.7.0, this is fixed now -Changed connections file version to 0.9 -Fixed connections context menu bug that made import from ad option inaccessible -Fixed session info filling up with infos about hosts previously selected - -V0.0.7.0: -Massive GUI redesign and changes, hope you like it! =) -Fixed bug that made session info to query immediately after selecting a connection (when enabled), there is now a one second delay to prevent collecting session info for more than one host - -V0.0.6.8: -Added connection import feature for Active Directory -Tidied up project references -Multiple changes to setup routine -Improved error handling for auto-update -Improved download handling for auto-update -Fixed bug that made download finished/failed message box appear multiple times when update was canceled and re-downloaded -Fixed bug where double-clicking a container opened all connections inside this container - -V0.0.6.6: -Changed port textbox control to only allow digits -Small changes to connection code for SSH -Fixed port setting not saving (or always displaying default port for selected protocol) - -V0.0.6.5: -Added auto update feature -Changed: Multiple UI Changes (added shortcuts, rearranged menu items, ...) -Fixed the problem where the connections file version was saved either with a dot or a comma, depending on system language -Fixed not being able to connect to SSH2 hosts without specifying username and password -Fixed several problems with Quick Connect -Improved saving of config changes -Fixed connections tab not closing when using SSH - -V0.0.6.0: -Added new protocols: SSH2 and Telnet -Added first command line switch/parameter "/consfile" -Ex.: mRemote.exe /consfile "%PathToYourConnectionsFile%" -Added button to screenshots to delete a screenshot -Added Host Status (Ping) feature -Many code rewrites and changes in almost every area -Changed the way connections get loaded -The default path for the connection file is no longer in the application directory but in the local application data folder. -Ex.: c:\Documents and Settings\felix\Local Settings\Application Data\Felix_Deimel\mRemote\ -If opening a connection file from a custom location (click on open link) saving will also occur in this file and not like in previous versions to the default connections file -To import your old connection file please use the following procedure: start mRemote, click on "Open" and find your old connection file. Then click on "Save As" and save it with the default file name to the default location -Changed the font and style of context menus -Changed Quick Connect UI -Fixed connection settings in config tab not saving when clicking another connection before jumping to another config field -Fixed a bug where renaming a container caused the first connection in the same container to be renamed too - -V0.0.5.0 R2: -Fixed a bug that prevented connections from opening when icon files were assigned in a previous version of mRemote - -V0.0.5.0: -Added (Global) fullscreen / kiosk feature -Added redirection settings for disk drives, printers, ports, smart cards and sound -Added option to write a log file -Added option to open new tabs on the right side of the currently selected tab -Added possibility to connect to all nodes in a container -Changed session functions to work in background -Changed icon choosing mechanism and added a bunch of default icons -Changed: Containers with connection can now be deleted just like empty containers -Changed screenshot functions to now collect all screenshots in one tab -Changed: More settings can now be changed on container basis -Changed config file version to 0.6 -Changed: Small internal changes to the connection saving/creating and opening mechanisms -Fixed "Display Wallpapers" and "Display Themes" settings, they are working now - -V0.0.3.6: -Added Feature to display an overlay when RDP connection tab has lost the focus, clicking on this gives the focus back to the control -Added standard handlers for F2 (rename) and DEL (delete) keys in the treeview -Added icon preview for connections in config tab -Changed the way new connections and containers are being created in the treeview. The pop up window will not be displayed any longer, instead everything is handled inplace by the treeview. -Changed some minor UI related stuff -Fixed bug in tab closing mechanism that caused icons (play/pause) to not be set on the correct tree nodes - -V0.0.3.5: -Added Feature to query and log off sessions on a remote machine and option to do this automatically -Added Option to show icon in system tray with connection menu -Changed controls to flat style as I think this fits the whole application more than the old 3D look -Multiple UI changes to eliminate annoying behaviour - -V0.0.3.3: -Added Feature to specify which login information to use when no info is provided in the config of a remote machine -Fixed bug in Quick Find where trying to open a connection when no node was found caused an error -Fixed bug where the main form was not rendered correctly when hiding top bar and using XP Themes -Fixed bug in drag-drop routine that caused application to hang when trying to drop a node on one of it's child nodes -Fixed bug where taskbar buttons for fullscreen rdp windows did not disappear after disconnecting - -V0.0.3.2: -Added new Save As Dialog with feature to only save specific connection settings -Added Option to display Tooltips when hovering over host entries in the connection tree -Added Option to ask at exit when there are open connections -Fixed bug where saving connections file with spaces in the root node caused an error -> updated Connection File Version to 0.5 -Fixed bug in options tab where the browse button for a custom connection file didn't do anything - -V0.0.3.0: -Added Options Tab -Load connections file from different location -Save/Don't Save connections file on exit -Show current tab name in window title -Added drag and drop functionality to the connections tree -Added feature to hide top bar -Added feature to send special keys (VNC) -Updated VncSharp Library to V0.88 (still pretty buggy) - -V0.0.2.7: -Added feature to save connection settings to all connections in the selected container -Icon choosing bug fixed -Taskbar button had no text when in fullscreen - fixed -Fixed bug in Quick Connect GUI -Disabled "Display Wallpaper" and "Display Themes" checkboxes as these features are not implemented - -V0.0.2.5: -Quick connect button bug fixed -Search field resize bug fixed -Splitter position is now saved on exit -Added new connections toolstrip (same functions as context menu) - -V0.0.2.4: -Changed default color depth to 16bit -Added Keep Alive Interval (1 Minute) -Added Options to choose between RDP & VNC -Added Port Setting for RDP -Added Option to connect to console -Added Menu Entries to move Connections & Containers up & down -Some small code improvements diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..df6a9869 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,1505 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] +### Added +- #1141: 'Copy Hostname' option added to connection tree context menu +- #951: Added property to Enable/Disable Clipboard Sharing for RDP connections +- #928: Add context menu items to 'Close all but this' and 'Close all tabs to the right' +### Changed +- #1223: Open External Links in Default Web Browser +- #1129: Spanish translation improvements +- #1072: Russian translation improvements +- #1016: Chinese (simplified) translation improvements +- #765: Port Scan Issues (single port scan option now available) +- #155: Replace MagicLibrary with DockPanelSuite +- #154: MR-139: Close Button on Each Tab - new default theme has a close button on each tab + + +### Fixed +- #1248: RemoveMagicLib Bugs - various bugs that cropped up as a result of removing magiclib +- #1245: Options form takes nearly 3 seconds to appear when Theming is active +- #1240: Theming problem with NGNumericUpDown +- #1238: Connection panel not translated until opened for the first time +- #1186: Fixed several dialog boxes to use localized button text +- #1170: Prevent Options window from showing up in taskbar +- #1064: "Esc" button does does not close some dialogs +- #1044: Dragging (grabbing) the program window requires 2 clicks + + +## [1.76.12] - 2018-11-08 +### Added +- #1180: Allow saving certain connection properties locally when using database +### Fixed +- #1181: Connections sometimes dont immediately load when switching to sql feature +- #1173: Fixed memory leak when loading connections multiple times +- #1168: Autohide Connection and Config tab won't open when ssh connection active +- #1134: Fixed issue where opening a connection opens same connection on other clients when using database feature +- #449: Encrypt passwords saved to database + +## [1.76.11] - 2018-10-18 +### Fixed +- #1139: Feature "Reconnect to previously opened sessions" not working +- #1136: Putty window not maximized + +## [1.76.10] - 2018-10-07 +### Fixed +- #1124: Enabling themes causes an exception + +## [1.76.9] - 2018-10-07 +### Fixed +- #1117: Duplicate panel created when "Reconnect on Startup" and "Create Empty Panel" settings enabled +- #1115: Exception when changing from xml data storage to SQL +- #1110: Pressing Delete button during connection rename attempts to delete the connection instead of the text +- #1106: Inheritance does not work when parent has C# default type set +- #1092: Invalid Cast Exceptions loading default connectioninfo +- #1091: Minor themeing issues +- #853: Added some additional safety checks and logging to help address RDP crashes + +## [1.76.8] - 2018-08-25 +### Fixed +- #1088: Delete and Launch buttons are not disabled when last external tool deleted +- ${1}'Save connections after every edit' setting not honored +- #1082: Connections not given GUID if Id is empty in connection xml + +## [1.76.7] - 2018-08-22 +### Fixed +- #1076: Wrong object selected when duplicating connection then switching between properties and inheritance in config window +- #1068: Fixed some toolbar positioning bugs + +## [1.76.6] - 2018-08-03) +### Fixed +- #1062: Entering correct password when starting app does not load connections file + +## [1.76.5] - 2018-08-02) +### Removed +- #893: Removed unneeded files from build/package +### Fixed +- #1057: Hitting F2 with no connection node selected caused unhandled exception +- #1052: 'Switch to notification panel' feature does not always switch +- #1051: Tooltips always displayed regardless of 'Show description tooltips in connection tree' setting +- #1050: Config window retains access to previously selected node after loading new connections file +- #1045: Config window shows several incorrect properties for HTTPS connections +- #1040: Canceling "select panel" form does not cancel +- #1039: Set default theme when themes disabled +- #1038: Unable to add connection with active filter +- #1036: Exception when themes are active and options page closed on Connections then reopened +- #1034: Connection context menu not being translated +- #1030: Exception thrown if importing from port scan and no tree node is selected +- #1020: BackupFileKeepCount setting not limiting backup file count +- #1004: Duplicating root or PuTTy node through hotkey causes unhandled exception +- #1002: Disabling filtering without clearing keyword leaves filtered state +- #1001: Connection tree context menu hotkeys stop working and disappear in some cases +- #999: Some hotkeys stop working if File menu was called when PuTTy Saved Sessions was selected +- #998: Can sometimes add connection under PuTTY Sessions node +- #991: Error when deleting host in filtered view +- #971: Portable Settings now apply to any machine they are used on +- #961: Connections file overwritten if correct decryption password not provided +- #868: if statement returned the same value +- #762: Increased button size to fit locaized text + +## [1.76.4 Alpha 6] - 2018-06-03 +### Added +- #924: Notification for "No Host Specified" when clicking folders in quick-connect menu +- Added option for creating an empty panel on startup +### Changed +- #942: Improved Russian translation of several items +- #902: Menu bar can once again be moved. View -> "Lock toolbar positions" now also locks the menu position +### Fixed +- #948: Fixed issue where many menu item translations were not being used +- #938: Minor layout improvements on the Port Scan screen +- #916: Default properties were not being saved + +## [1.76.3 Alpha 5] - 2018-03-14 +### Fixed +- #911: Csv exports sometimes do not include all fields +- #807: Inheritance is sometimes turned on for nodes under root Connections node + +## [1.76.2 Alpha 4] - 2018-03-03 +### Fixed +- #899: DoNotPlay is Case Sensitive in XML Serialization + +## [1.76.1 Alpha 3] - 2018-02-24 +### Added +- #625: Added ability to import mRemoteNG formatted CSV files +- #648: The port scan ping timeout is now configurable +### Fixed +- Fixed a few Xml serialization bugs that would occur if boolean values weren't capitalized + +## [1.76.0 Alpha 2] - 2018-02-01 +### Added +- #838: Added an option to lock toolbars +- #836: Added a Read Only option for SQL connections +- #829: Add option that fixes connecting to Azure instances with LoadBalanceInfo +### Fixed +- #840: Fix theme loading issue in installer version +- #800: Fixed issue with PuTTY sessions not showing some extended characters +- Fixed a few toolbar layout issues + +## [1.76.0 Alpha 1] - 2017-12-08 +### Added +- #799: Added option to save connections on every edit +- #798: Added button to test SQL database connections on SQL options page +- #611: Added multi-ssh toolbar for sending commands to many SSH clients at once +- #519: You can now import normal mRemoteNG files - they do not have to be exports +- #504: Added Korean translation +- #485: The Domain field is now visible/editable for connection with the IntApp protocol +- #468: Default connection info Panel property is now saved +- #429: Added Czech translation +- #421: When a connection file cannot be loaded, we will now prompt for how to proceed rather than always exiting. +- #338: Added option to filter connection tree when searching +- #225: Added support for importing Remote Desktop Connection Manager v2.7 RDG files +- #207: Can now specify a working directory for external tools +- #197: Selecting a quick connect protocol will start a connection with that host +- #184: Improve search to include description and hostname fields +- #152: Added option "Show on Toolbar" to external tools +- Added more logging/notifications options +### Changed +- #784: Rearranged some settings in the Options pages to prevent overlap with some translations +- #704: Portable version now saves settings in application directory +- #671: Revamped UI theme system +- #608: The Help -> Support Forum menu item now directs users to our Reddit community +- #558: Connection tree now shows customizable icons instead of play/pause icon +- #493: Changed backup file name time stamp to use local system time rather than UTC +- #357: Updated GeckoFX to v45.45.0.32 +- Improved compatability between environments when building mRemoteNG from source +### Removed +- #797: Removed duplicate translation strings +### Fixed +- #747: Fixed unnecessary "PuttySessions.Watcher.StartWatching" error message +- #650: Fixed German translation typo +- #639: Fixed Italian translation typo +- #479: New connection tree nodes not starting in edit mode +- #233: Fixed crash that can occur when disconnecting from VNC server +- #195: Access to https with self-signed certificates not working + +## [1.75.7012] - 2017-12-01 +### Changed +- #810: Official mRemoteNG builds will now be signed with a DigiCert certificate +### Fixed +- #814: Fixed bug that prevented reordering connections by dragging +- #803: File path command line argument not working with network path + +## [1.75.7011] - 2017-11-07 +### Fixed +- #778: Custom connection file path command line argument (/c) not working +- #763: Sometimes minimizing folder causes connection tree to disappear +- #761: Connections using external tools do not start (introduced in 1.75.7009) +- #758: "Decryption failed" message when loading from SQL server +- Fixed issues with /resetpanels and /resetpos command line arguments +- Resolved bug where connection tree hotkeys would sometimes be disabled + +## [1.75.7010] - 2017-10-29 +### Fixed +- #756: CustomConsPath always null + +## [1.75.7009] - 2017-10-28 +### Changed +- #635: Updated PuTTYNG to 0.70 +- Minor error message correction +- Minor code refactoring +### Fixed +- #676: Portable version ignores /cons param on first run +- #675: Attempting to add new connection/folder does not work in some situations +- #665: Can not add new connection or new folder in some situations +- #658: Keep Port Scan tab open after import +- #646: Exception after click on import port scan +- #610: mRemoteNG cannot start /crashes for some users on Windows server 2012 R2 server +- #600: Missing horizontal scrollbar on Connections Panel +- #596: Exception when launching external tool without a connection selected +- #550: Sometimes double-clicking connection tree node began rename instead of connecting +- #536: Prevented log file creation when writeLogFile option is not set +- #529: Erratic Tree Selection when using SQL Database +- #482: Default connection password not decrypted when loaded +- #335: The Quick Connect Toolbar > Connection view does not show open connections with the play icon +- #176: Unable to enter text in Quick Connect when SSH connection active + + +## NO RELEASE - 2017-06-15 +### Fixed +- #466: Installer still failing on Win7 for updates - 1.75.7005 (Hotifx 5) +- #462: Remove no longer used files from portable version - 1.75.7003 (Hotfix 4) + +## [1.75.7008] - 2017-06-15 +### Changed +- Minor updates to the installer build +### Fixed +- #589: MSI doesn't update with newer PuTTYNG version that fixes #583 (Again, Sorry!) + +## [1.75.7007] - 2017-06-14 +### Fixed +- #583: SSH (PuTTYNG) Sessions are not properly integrated into the main mRemoteNG window (Sorry!) + +## [1.75.7006] - 2017-06-13 +### Changed +- #531: Update PuTTYNG to 0.69 +### Fixed +- #377: Use all space on About page +- #527: Additional protections to avoid problems on update check in heavily firewalled environments +- #530: Fixed issue where using External Tool on existing connection causes creation of 'New Connection' entry +- #546: Quick Connect from notification area icon displays warning when clicking on a folder (see #334) + +## [1.75.7005] - 2017-04-27 +### Changed +- #410: Update PuTTYNG to 0.68 +- Minor code cleanup/optimizations/null checks +### Fixed +- #434: Fix complier warnings CA1049 & CA2111 +- #442: Fixed issue loading PuTTY sessions that have spaces in the name +- #502: Problems with ParentID for Duplicated Containers/Connections with SQL Connection Storage +- #514: Expanded property not saved/loaded properly from SQL +- #518: Exception when Importing File + +## [1.75.7003] - 2017-03-24 +### Fixed +- #464: Resolved issue when importing a connections file while using SQL server feature + +## [1.75.7002] - 2017-03-10 +### Fixed +- #448: Resolved issue with SQL saving + +## [1.75.7001] - 2017-03-10 +### Changed +- #408: Update SQL scripts + +## [1.75 hotfix 1] - 2017-03-06 +### Changed +- #437: Modify version numbering scheme +### Fixed +- #422: Uncaught exception when clicking in connection tree whitespace +- #312: Resolved KeePass auto-type issue +- #427: Export does not respect filtering user/password/domain + +## [1.75] - 2017-03-01 +### Known Issues +- File hash check will fail when updating from 1.75 Beta 1 to newer versions. + - Exception will be: "MD5 Hashes didn't match!" for 1.75 Beta 1 - 1.75 RC1 +### Added +- #344: Use SHA512 File Hashes to validate downloads (in the update mechanism & posted to the Downloads page) +- Added Release Channels to the update check functionality allowing users to select one of 3 release channels for updates: Stable, Beta, Dev +- #360: Help -> About, Version # is now selectable/copyable +- #221: RDP: Optional disconnect after X number of minutes of inactivity +### Changed +- The usual general code clean up and refactoring +- #325: Code clean up and additional logging for External Tools based connections +- #298: Code clean up and additional logging around application startup +- #291, #236: External Tools code clean up and additional logging +### Fixed +- #369: Reset Layout Option Does Not Reset Notification Pane +- #362: Invalid cast exception when using the Notification Area Icon minimize/restore +- #334: Quick Connect displays warning when clicking on a folder +- #325: When using a connection with an external app, results in opening the same external app continuously +- #311: Import from Active Directory does not use machine's domain by default +- #258: Rename Tab dialog - populate original name in dialog (1.72 functionality) +- #211, #267: Recursive AD Import wasn't fully functional + +## [1.75 Beta 3] - 2016-12-01 +### Known Issues +- Portable build MD5 check will fail when updating from 1.75 Beta 1 to newer versions. +### Fixed +- #289: Install fails during update process (only affects 1.75 beta 1 - 1.75 beta 2) + +## [1.75 Beta 2] - 2016-12-01 +### Added +- #273: Added Turkish translation provided by forum user "rizaemet" +- #217: Create user manual documentation for the SSH File Transfer feature +### Fixed +- #254: Component check window position issues and uncaught exception +- #260: Crash when attempting to load fully encrypted confCons v2.5 +- #261: Double clicking folder in treeview doesn't expand it in 1.75 beta1 +- #271: Install package is not using the last installation path +- #278: Silent installs not detecting prerequisites + +## [1.75 Beta 1] - 2016-11-15 +### Added +- MR-971: Added Right Click method to Port Scan to import discovered hosts +- MR-1000, - #211: Sub OU AD Import +- #172: Implement "audioqualitymode" for RDP sessions +- #160: Allow portable version to perform an update check (and download the latest .zip) +- #157: Implement new cryptography providers (See Tools -> Options -> Security) +### Changed +- Lots of code clean up and refactoring +- Limit log file size to 1 main log + 5 backups * 10MB. +- Minor UI Tweak: Default Menubar and QuickConnect Bar to same line +- MR-364: Removed "Announcement" functionality +- MR-366: Show PuTTY type and version on components check screen +- MR-586: Reduce HTTP/HTTPS document title length that is appended to the connection tab title +- MR-938: Adjust RDP Resolution list (ensure most common resolutions were available) +- MR-975: Replaced TreeView with TreeListView for displaying connection tree. This was a large change which separated the GUI from the domain model. +- #144: Removed export option for "VisionApp Remote Desktop 2008" +- MR-220: Don't close the AD importer after import +- #167: fix/implement the update check (was disabled in 1.74 as part of the C# conversion) +### Fixed +- MR-967: File transfer doesn't work when specifying full path and file name (as prompted) +- MR-979: switched to notifications panel incorrectly (when configured NOT to do so) + +## [1.75 Alpha 3] - 2016-08-12 +### Added +- MR-896: Added prerequisite installer check for KB2574819. Prevents "Class not registered" errors when opening RDP connections. +### Changed +- PR-130: Fix Scan button width to fit Russian translation +### Removed +- MR-946: Remove old/insecure SharpSSH and related components. Replace with SSH.NET for File Transfer Functionality +### Fixed +- MR-965, MR-871, MR-629: Error 264 on RDP Connect attempt - Added timeout value to Tools -> Options -> Connections + +## [1.75 Alpha 2] - 2016-08-03 +### Added +- MR-961, PR-133: Option to reconnect all currently opened connection tabs +- MR-917: Improved cryptographic support +### Changed +- Updated GeckoFx package +- Updated DockPanelSuite library to 2.10 Final +- Japanese translation updated +- MR-942: Refactored code relating to loading the connections file +### Fixed +- MR-910: Fixes to support Remote Desktop Gateways +- MR-874: Incorrect RDP prerequisite check in installer + +## [1.75 Alpha 1] - 2016-07-08 +### Changed +- Additional code cleanup +### Fixed +- MR-905: mRemoteNG crashes at startup (in FIPS policy check) +- MR-902: mRemoteNG crashes after locking/unlocking the local system after loading a VNC connection + +## [1.74] - 2016-06-28 +### Added +- MR-821: Initial Japanese translation included +### Changed +- New operating system requirements + - Windows 7 SP1 (with RDP Client v8: KB2592687/KB2923545) or later + - .NET Framework 4 or later +- XULRunner is no longer required for Gecko support (see below) +- Converted source from Visual Basic to C Sharp +- Lots of code refactoring/clean up/general stability changes +- Updated to latest DockPanelSuite and enabled a slick new theme! +- MR-145: Installer is now MSI based +- MR-255: Updated RDP Client to version 8 +- MR-389: Updates to IE rendering engine + - Support for latest version of IE (9-11) + - Dropped support for IE 7 & IE 8 +- MR-850: Replaced XULRunner with GeckoFx + - No need to manually configure to have the Gecko rendering engine available now + - Install image is now significantly larger due to the inclusion of the Gecko Engine +- Port Scan is now Asynchronous (and is significantly faster) +### Removed +- MR-714: Removed Keyboard shortcut functionality + - Introduced in 1.73 beta that was never officially released + - This caused stability issues + - May be re-added in a future release + - Removal does *NOT* impact the ability to send keyboard shortcuts to RDP sessions (when redirect key combinations is set to "yes") +- MR-559: Removed RDP Sessions panel functionality. This required a library for which no trusted origin/source could be located +- Removed a bunch of old code/libraries and replaced them accordingly +### Security +- MR-775, MR-745: Updated PuTTY to 0.67 +### Fixed +- MR-874: Added work-around to installer to ignore installation prerequisites +- MR-884: Slow startup in some scenarios checking authenticode certificate +- MR-872: Crash in External Tools when arguments aren't quoted +- MR-854: crashes when right clicking on connection tab +- MR-852: Option "Allow only a single instance of the application" non-functional +- MR-836: Trying to delete a folder of connections only deletes 2 connections at a time +- MR-824, MR-706: Suppress Script Errors when using the IE rendering engine +- MR-822: Improve RDP error code messages +- MR-640: Fixed Inheritance not working +- MR-639: RDP: Connect to console session +- MR-610, MR-582, MR-451: RDP: Protocol Error 3334 or exceptions with large number of connections open + - This problem appears largely resolved by most reports and testing + - Further workarounds/problem avoidance: Disable Bitmap Caching on all RDP session configuration +- MR-429: Display issue on the Options -> Advanced panel +- MR-385: Inheritance settings lost when moving item to the root of the tree + +## New Dev Team + +## [1.73 Beta 2] - [NEVER RELEASED] +### Added +- Added support for importing files from PuTTY Connection Manager. +### Fixed +- Fixed issue MR-619 - Keyboard shortcuts stop working after locking the screen with Win+L +- Improved the import and export functionality. + +## [1.73 Beta 1] - 2013-11-19 +### Added +- 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 +- MR-590: Added "Reset" to config panel context menu to allow resetting some config settings to their default value. +- Added and improved menu icons. +### Changed +- 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 +- Improved handling of variables in external tool arguments. +### Removed +- Removed misleading log messages about RD Gateway support. +- Removed invalid "Site" configuration option from PuTTY Saved Sessions. +- 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 +- 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. + +## [1.72] - 2013-11-13 +### Fixed +- 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 +### Removed +- Removed warning message when mRemoteNG is started for the first time about new connections file being created. +### Fixed +- 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. + +## [1.71 Release Candidate 2] - 2013-10-16 +### Fixed +- 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. + +## [1.71 Release Candidate 1] - 2013-10-01 +### Added +- Added Chinese (Traditional) translation. +- Added partial Greek and Hungarian translations. +### Changed +- Updated PuTTY to version 0.63. +- Updated translations. +### Fixed +- Fixed issue MR-495 - Having a negative range in port scan creates memory exhaustion. +- Fixed issue MR-514 - Window Proxy test failed without close button +- Fixed issue MR-521 - Right-Clicking in "Sessions" panel crashes mRemoteNG +- Fixed issue MR-525 - Could not start on windows 7 64bit +- Fixed issue MR-535 - SQL error saving Connections +- Fixed issue MR-538 - RDP loses connection when hiding config or connections pane +- Fixed issue MR-542 - Wrapped putty has security flaw +- Made minor improvements to the port scan functionality. +- Fixed possible cross-thread operation exception when loading connections from SQL. +- Fixed PuTTY Saved Sessions not showing after loading a new connections file. + +## [1.71 Beta 5] - 2013-06-09 +### Fixed +- Fixed issue MR-491 - Could not start RDP Connection +- Fixed issue MR-499 - TS Gateway is not working in latest release 1.71 +- Fixed typo in SQL queries. + +## [1.71 Beta 4] - 2013-05-28 +### Added +- Added feature MR-435 - Add digital signature check to updater +- Added Norwegian (Bokmal) and Portuguese (Brazil) translations. +- Added Spanish translation to the installer. +- Added PuTTY Session Settings command to the Config panel for PuTTY Saved Sessions. +### Changed +- Updated translations. +- Changed Internet Explorer to no longer force IE7 compatibility mode. +- Changed the "Launch PuTTY" button in the "Options" dialog to open PuTTY from the path the user has currently set, instead of what was previously saved. +- Updated VncSharpNG to 1.3.4896.25007 +- Lowered required version of RDC from 6.1 to 6.0. +### Fixed +- Fixed issue MR-255 - The version of the RDP AX client should be updated to 7 +- Fixed issue MR-392 - Sessions Panel - context menu entries need to be context aware +- Fixed issue MR-422 - Gives error Object reference not set to an instance of an object. +- Fixed issue MR-424 - Import of a few Linux SSH2 hosts discovered via the port scan tool results in a UE +- Fixed issue MR-439 - MRemoteNG 1.70 does not start +- Fixed issue MR-440 - RDP import with non-standard port +- Fixed issue MR-443 - Instructions for eolwtscom.dll registration for Portable version are inaccurate +- Fixed issue MR-446 - Putty saved sessions show in connection panel +- Fixed issue MR-459 - Maximized -> Minimized -> Restored results in mangled active display +- Fixed issue MR-463 - Add support for LoadBalanceInfo to RDP +- Fixed issue MR-470 - Quick Connect to Linux server uses invalid credentials +- Fixed issue MR-471 - PuTTY Saved Sessions disappears from connection list +- Fixed issue MR-487 - Initiate connections on MouseUp event +- Fixed an exception or crash when choosing unnamed colors for themes. +- Fixed possible error "Control does not support transparent background colors" when modifying themes. +- Fixed changes to the active theme not being saved reliably. +- Fixed handling of the plus (+) character in PuTTY session names. +- Improved update and announcement checking. +- Improved the PuTTY Saved Sessions list to update automatically when any changes are made. +- Improved loading time of large connection files. + +## [1.71 Beta 3] - 2013-03-20 +### Fixed +- Fixed issue MR-397 - Putty disappears from the screen +- Fixed issue MR-398 - Full Screen mode doesn't correctly make use of available space +- Fixed issue MR-402 - scrollbar touch moves putty window +- Fixed issue MR-406 - Items disappear from External Tools toolbar when accessing External Tools panel +- Fixed issue MR-410 - Unhandled exception when clicking New button under Theme +- Fixed issue MR-413 - Can't use application +- Fixed new connections having a globe icon. +- Fixed the category names in the themes tab of the options dialog on Windows XP not showing correctly. +- Fixed PuTTY saved sessions with spaces or special characters not being listed. + +## [1.71 Beta 2] - 2013-03-19 +### Added +- Added feature MR-336 - Customizable background color for the windows/panels +- Added feature MR-345 - Two separate options for confirming closure of Tabs and Connection Panels +- Added feature MR-346 - Option to show/hide the description box at the bottom of the Config panel +- Added feature MR-351 - Import connections from PuTTY +### Changed +- The username and domain settings are now hidden for VNC connections since they are not supported. +- Changed "Automatically get session information" to be disabled by default. +- RDP connections can now be switched to full screen mode when redirect key combinations is enabled. +### Fixed +- Fixed issue MR-354 - Re-ordering tabs doesn't give good, reliable visual feedback +- Fixed issue MR-375 - Changing a connection's icon using the picture button should immediately update Icon field +- Fixed issue MR-377 - Several redundant panels can be opened +- Fixed issue MR-379 - Connection variables not working with external tools +- Fixed issue MR-381 - Notifications panel - whitespace context menu allows Copy and Delete on nothing +- Fixed issue MR-401 - Checkbox misaligned + +## [1.71 Beta 1] - 2013-03-04 +### Added +- Added feature MR-329 - Create Option to disable the "Quick: " prefix +- Added detection of newer versions of connection files and database schemata. mRemoteNG will now refuse to open them to avoid data loss. +### Fixed +- Fixed issue MR-67 - Sort does not recursively sort +- Fixed issue MR-117 - Remote Session Info Window / Tab does not populate +- Fixed issue MR-121 - Config pane not sorting properties correctly when switching between alphabetical and categorized view +- Fixed issue MR-130 - Issues duplicating folders +- Fixed issue MR-142 - Start of mRemoteNG takes about one minute and consumes excessive CPU +- Fixed issue MR-158 - Password field not accepting Pipe +- Fixed issue MR-330 - Portable version saves log to user's profile folder +- Fixed issue MR-333 - Unnecessary prompt for 'close all open connections?' +- Fixed issue MR-342 - Incorrect view in config pane of new connection after viewing default inheritance +- Fixed issue MR-352 - Passwords with " (quotation mark) and # (hash key) characters make mRemoteNG to open PuttyNG dialog +- Fixed issue MR-362 - Rename 'Screenshot Manager' to 'Screenshots' on the View menu to match Panel name +- Improved appearance and discoverability of the connection search box. +- If RDC 7.0 or higher is installed, the connection bar is no longer briefly shown when connecting to an RDP connection with redirect key combinations enabled. +- If RDC 8.0 or higher is installed, RDP connections automatically adjust their size when the window is resized or when toggling full screen mode. + +## [1.70] - 2013-03-07 +### Fixed +- Fixed issue MR-339 - Connection group collapses with just one click +- Fixed issue MR-340 - Object reference not set to an instance of an object. +- Fixed issue MR-344 - Move "Always show panel tabs" option +- Fixed issue MR-350 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long. +- Fixed issue MR-355 - Moving sub folders to top level causes property loss +- Fixed tabs not closing on double-click when the active tab is a PuTTY connection. + +## [1.70 Release Candidate 2] - 2013-02-25 +### Changed +- Re-enabled PuTTYNG integration enhancements on Windows 8 +### Fixed +- Fixed issue MR-332 - Can't select different tab with one click after disconnecting existing tab +- Fixed issue MR-338 - PuTTYNG crashing on fresh install of mRemoteNG +Re-enabled PuTTYNG integration enhancements on Windows 8 + +## [1.70 Release Candidate 1] - 2013-02-22 +- Fixed issue MR-183 - Error trying to save connections when using SQL - Invalid column name _parentConstantId +- Fixed issue MR-225 - Tabs do not open in a panel until multiple panels are displayed. +- Fixed issue MR-229 - Integrated PuTTY doesn't work in Windows 8 RP +- Fixed issue MR-264 - Windows 8 support +- Fixed issue MR-317 - Difficulty right-clicking on Tab +- Fixed issue MR-318 - Wrong tab gets selected when tab names overflow on the tab bar +- Fixed issue MR-321 - New connection panel doesn't get panel header if its the only one or is moved +- Fixed issue MR-322 - Connection Button not listing servers +- Added option to always show panel tabs. +- Fixed "Decryption failed. Padding is invalid and cannot be removed." notification. +- Fixed KiTTY opening in a separate window when using a saved session. + +## [1.70 Beta 2] - 2013-02-18 +### Added +- Added translations for Spanish (Argentina), Italian, Polish, Portuguese, Chinese (Simplified). +### Changed +- mRemoteNG now requires .NET Framework 3.0 instead of 2.0. +- Updated translations. +- Improved the use of Tab and Shift-Tab to cycle through entries in the Config grid. +- Improved loading of XML files from older versions of mRemote/mRemoteNG. +### Fixed +- Fixed issue MR-47 - Silent Installation Prompts for Language +- Fixed issue MR-54 - Error When disconnecting from SSL channel RDP +- Fixed issue MR-58 - Bug when duplicating connection in connection view +- Fixed issue MR-68 - Config Window Loses Options +- Fixed issue MR-71 - Minimizing mRemoteNG causes temporary re-size of Putty sessions (windows) +- Fixed issue MR-80 - Reconnect previous sessions +- Fixed issue MR-81 - Problem Duplicating Folder w/ Sub-Folders +- Fixed issue MR-85 - Microsoft .NET Framework warning +- Fixed issue MR-86 - Citrix GDI+ Error when screen is locked +- Fixed issue MR-96 - When pressing SHIFT+F4 to create a new connection inside a folder, the new connections doesn't inherit any properties from its parent +- Fixed issue MR-101 - Collapse all folders causes a NullReferenceException +- Fixed issue MR-165 - Can't close About window if it is the last tab +- Fixed issue MR-166 - Inheritance button is disabled on some connections +- Fixed issue MR-167 - Name and description of properties not show in inheritance list +- Fixed issue MR-171 - Inherit configuration not showing friendly names for each inherit component +- Fixed issue MR-172 - RDGatewayPassword is unencrypted in confCons.xml file +- Fixed issue MR-174 - Trailing Space on a Hostname/IP will cause the connection not to happen. +- Fixed issue MR-175 - Problem with focus when 2 or more PuTTY sessions opened +- Fixed issue MR-176 - Del key while editing connection name triggers 'Delete Connection' +- Fixed issue MR-178 - 3 different panels crashes all connections +- Fixed issue MR-181 - Sessions on startup +- Fixed issue MR-190 - Can't click on tab/session +- Fixed issue MR-196 - Cannot export list without usernames and passwords +- Fixed issue MR-199 - when using screen inside putty, screen becomes dead when reduce mremoteNG +- Fixed issue MR-202 - The Connection "Tab" show Ampersands as underscores. +- Fixed issue MR-214 - Hostname/IP reset +- Fixed issue MR-224 - Session tabs become un-clickable after duplicating a tab or opening a new one in the same panel +- Fixed issue MR-233 - Backslash at end of password prevents success of putty invocation and corresponding auto-logon +- Fixed issue MR-235 - Config file gets corrupted when leaving the password entry box with ESC +- Fixed issue MR-264 - Windows 8 support +- Fixed issue MR-277 - Inheritance configuration button not appear in configuration tab +- Fixed issue MR-284 - SSH: Text not showing properly +- Fixed issue MR-299 - mRemoteNG crashes while using remotely (Windows XP remote desktop) +- Fixed issue MR-306 - Fatal .NET exception on program start +- Fixed issue MR-313 - PuTTY window not maximized when loading from saved session + +## [1.70 Beta 1] - 2012-02-27 +### Added +- Added compatibility check for "Use FIPS compliant algorithms" security setting. +Improved reporting of errors when encrypting and decrypting connection files. +- Added partial Polish translation. +- Added the option to use a smart card for RD Gateway credentials. +- Added debugging symbols for VncSharpNG. +- A backup of the connection file is saved when it is loaded. The most recent ten backup copies are kept. +### Changed +- The panel tabs are now hidden if only one panel is open. +- Show changes live as connection tabs are being dragged around to change their order. +- Updated PuTTY to version 0.62. +- Made the use of CredSSP for RDP connections optional. +- Updated VncSharpNG to version 1.2.4440.36644. +### Fixed +- Fixed issue MR-77 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long. +- Fixed issue MR-78 - Renaming Connections +- Fixed issue MR-79 - MoveUp/Down item doesn't work + Sort button broken +- Fixed issue MR-93 - Regional settings problem when using SQL connection in mRemoteNG +- Fixed issue MR-97 - Integrate Dutch translation +- Fixed issue MR-98 - Integrate Russian and Ukranian translations +- Fixed issue MR-99 - Integrate Spanish translation +- Fixed issue MR-131 - RD Gateway does not respect setting for use different credentials +- Fix focus issue with RDP connections when changing tabs. +- Improved error handling when loading connection files. +- Fixed bugs with creating a new connection file. + +## [1.69] - 2011-12-09 +### Added +- Added Credits, License, and Version History items to the Start Menu and made Start Menu item names localizable. +### Changed +- Updated PuTTY to version 0.61 +- Binaries are now digitally signed +### Deprecated +- Disabled automatic updates in the portable edition +### Fixed +- Fixed issue #66 - Fresh Install Fails to Create Config +- Fixed issue #69 - Connection file gets erased +- Fixed issue #72 - scrollbars added to RDP window after minimize/restore of mRemoteNG +- Fixed file name in window title changing when exporting an XML file. +- Fixed Use only Notifications panel checkbox. + +## [1.68] - 2011-07-07 +### Fixed +- Fixed issue #48 - VerifyDatabaseVersion fails with new (empty) database tables. +- Fixed issue #60 - Can't save connections file +- Fixed issue #62 - Connection file error upon launch. + +## [1.67] - 2011-06-05 +### Added +- Added a language selection option so users can override the language if they don't want it automatically detected. +- Added partial French translation to the application. +- Added Thai translation to the installer. +- Added buttons for Add Connection, Add Folder, and Sort Ascending (A-Z) to the Connections panel toolbar. +- Added 15-bit Color RDP setting. +- Added Font Smoothing and Desktop Composition RDP settings. +- Added the mRemoteNG icon to the list of selectable icons for connection entries. +- Added confirmation before closing connection tabs. +### Changed +- Updated graphics in the installer to mRemoteNG logo. +- Moved the items under Tools in the Connections panel context menu up to the top level. +- Changed sorting to sort all subfolders below the selected folder. +- Allow sorting of connections if a connection entry is selected. +- Changed the Options page into a normal dialog. +- Changed to use full four part version numbers with major, minor, build, and revision. +- Changed hard coded SQL database name into a user configurable setting. +### Fixed +- Fixed migration of external tools configuration and panel layout from Local to Roaming folder. +- Disable ICA Hotkeys for Citrix connections.Fixes issue with international users. +- Fixed RD Gateway default properties and RDP reconnection count setting not being saved. +- Fixed bug 33 - IPv6 doesn't work in quick Connect box. +- Fixed rename edit control staying open when collapsing all folders. +- Fixed adding a connection entry if nothing is selected in the tree. +- Fixed loading of RDP Colors setting from SQL. +- Improved error handling when loading XML connection files. +- Fixed bug 42 - Maximized location not remembered with multiple monitors. +- Improved loading and saving of window location. +- Removed flickering on start up. +- Improved Reset Layout function. +- Fixed tab order of controls in Options dialog. +- Fixed bug 45 - Changing some settings in the config file may not save. + +## [1.66] - 2011-05-02 +### Fixed +- Fixed connections not working + +## [1.65] - 2011-05-02 +### Added +- Added code to the installer to check that the user is in the 'Power Users' or 'Administrators' group +### Changed +- Ctrl-Tab and Ctrl-Shift-Tab no longer work to switch tabs within mRemoteNG +### Fixed +- Fixed Ctrl-Tab and Ctrl-Shift-Tab not working in any other applications while mRemoteNG is running +- Fixed bug 36 - Install creates shortcuts only for the installing user +- Fixed bug 38 - Application uses the wrong Application Data settings folder (in Local Settings) + +## [1.64] - 2011-04-27 +### Added +- Added multilanguage support and German translation to the application +- Added Czech, Dutch, French, German, Polish, and Spanish translations to the installer +- Added Ctrl-Tab hotkey to switch to the next tab and Ctrl-Shift-Tab to switch to the previous tab +- Added Tab key to cycle through entries in the Config grid and Shift-Tab to cycle in reverse +- Added ability to configure external tools to run before or after a connection is established +- Added credit for the DockPanel Suite to the About page +### Changed +- Changed how new connection files are created +- Changed the internal namespace of the application to mRemoteNG instead of mRemote +- Updated DockPanel Suite to version 2.5 RC1 +- Updated VNCSharpNG to correct Ctrl and Alt key pass-through behavior +### Fixed +- Fixed bug 6 - VNC CTRL+key & keyboard combo mappings are broken +- Fixed bug 12 - Tab switch is not working in config panel +- Fixed bug 14 - RDP Connection authentication problem +- Fixed bug 22 - External App parameter macro expansion doesn't work with "try to integrate" +- Fixed bug 25 - Unhandled exception when mRemoteNG opens +- Fixed missing parameters in macro expansion for external tools +- Fixed RD Gateway and other inheritance bugs + +## [1.63] - 2010-02-02 +### Added +- Added View->Reset Layout menu item +- Added F11 shortcut key to View->Full Screen +- Added support for Credential Security Support Provider (CredSSP) which is required for Network Level Authentication (NLA) +- Added support for connecting through Remote Desktop Gateway servers +- Added PuTTY Settings item to tab context menu +### Changed +- New icon and logo +- Updated DockPanel Suite from 2.2.0 to 2.3.1 +- Popups can now be allowed in Internet Explorer by holding Ctrl+Alt when clicking a link +### Fixed +- Fixed problems moving or resizing the main window while PuTTY (SSH/telnet/rlogin/raw) connections are open +- Fixed PuTTY processes not closing on Vista and 7 with UAC enabled +- Fixed error if the mouse is clicked outside of the remote screen area of a VNC connection +- Fixed flashing and red lines at bottom of the window on first run +- Improved RDP error reporting + +## [1.62] - 2010-01-19 +### Added +- Switched to VncSharp, an open source VNC component +- VNC is supported again except for the following features: + - Windows authentication + - Setting the compression, encoding and color settings + - Connecting through a proxy server + - Free SmartSize mode (it does the same thing as Aspect SmartSize mode now) +- Added option to change how often updates are checked +- Added RDP, VNC and ICA version numbers to Components Check page +### Changed +- Rearranged the Options page and added an Updates tab +- Open Updates options tab before connecting for the first time +- No longer show About page on first run +- Renamed Quicky toolbar to Quick Connect toolbar +- Changed back to allowing toolbars to dock to the left or right of the menu bar and added gripper to move it around +### Fixed +- Fixed a bug with the inheritance buttons on the Config panel disappearing after awhile + +## [1.61] - 2010-01-14 +### Changed +- This version of mRemoteNG does not support VNC +### Removed +- Removed unlicensed SmartCode Solutions ViewerX VNC Viewer ActiveX + +## [1.60] - 2010-01-09 +### Added +- Added Report a Bug and Support Forum links to the Help menu +### Changed +- Changed name to mRemoteNG +- Changed filename delimiter in title bar from pipe to dash +- Changed default format for saving screenshot images to PNG +- Changed website addresses +- Changed website links in Help menu and About page to load within mRemoteNG instead of launching an external browser +- Moved Check for Updates to the Help menu +### Removed +- Removed snakes game Easter egg +- Removed references to visionapp Remote Desktop +### Fixed +- Fixed menu bar not staying docked to left side + +## [1.50] - 2010-01-06 +### Added +- Added the following formats to the "Save Connections As" function: + - mRemote CSV (standard CSV file with all properties) + - vRD 2008 CSV (standard CSV file with properties relevant for importing connections in vRD 2008) +### Fixed +- Fixed bug in inheritance code (SmartSize Mode and View Only properies were always shown when using VNC) + +## 1.49 +### Added +- Added features to the update function +- Added Announcement feature +### Changed +- mRemote and visionapp Remote Desktop 2008 merge! +- Read more here: ~~http://www.mremote.org/wiki/visionappMerge.ashx~~ +- or in the Announcement panel. +- Changed copyright notice in about screen and text when connecting via VNC +### Fixed +- Fixed some SQL-related problems + +## 1.48 +### Added +- Added startup components check with directions to fix component installation (also available in Tools - Components Check) +- Added "Try to integrate" option to Ext. Apps. If enabled mRemote will try to integrate the app into a tab container like any other connection protocol. +- Added Ext. App as protocol. Any Ext. App can be launched just like a normal connection. +- Added option to completely encrypt connection files (tools - options - advancecd) +- Added Rendering Engine option for HTTP/S protocols +- You can now use the Gecko (Firefox) rendering engine +``` +For this to work you need to download xulrunner (get it here: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/) +It must be the 1.8.1.3 release, 1.9.0.0 does NOT work! +Extract the contents to a path of your choice and set the correct path in Tools - Options - Advanced - XULrunner path +The interface is tab enabled and usage is generally very firefox-like. So you can open new tabs with Ctrl+T, jump to the location bar with Ctrl+L and so on... +``` +- Added "MAC Address", "User Field" fields and %MacAddress%, %UserField% variables to use in Ext. Apps +- Added descriptions for all fields in the config editor### Changed +### Changed +``` +ATTENTION! There is a bug in the automatic update code in 1.45 so you will have to download the new version manually from ~~http://www.mremote.org/wiki/Downloads.ashx~~ + +Example (DameWare Mini Remote Control): +Create a new Ext. App with the following properties: +Display Name: DameWare +Filename: c:\PathToYourDameWareInstallDir\DWRCC.exe +Arguments: -c: -h: -m:%hostname% -u:%username% -p:"%password%" -d:%domain% +Options: Try to integrate +Create a new connection and select Ext. App as protocol +Then choose DameWare in the Ext. App field +If you have problems with a particular app that takes a long time to start up consider setting a higher PuTTY/Ext. Apps wait time in Tools - Options - Advanced### Fixed +``` +``` +WARNING! There have been changes to the connections file/SQL tables +Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables +To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) +These are the added lines: +[RenderingEngine] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , +[MacAddress] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , +[UserField] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , +[ExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , +[InheritRenderingEngine] [bit] NOT NULL , +[InheritMacAddress] [bit] NOT NULL , +[InheritUserField] [bit] NOT NULL , +[InheritExtApp] [bit] NOT NULL , +``` +### Fixed +- Fixed bug in connections loading code when using SQL storage +- Fixed bug in reconnect code +- Fixed VNC sessions not refreshing screen automatically when switching between tabs or panels + +## 1.45 +### Added +- New german language build available +- Added support for RDP 6.1 (XP SP3/Vista SP1) features (Server Authentication, Console Session, TS Gateway not yet...) +- Added basic support for UltraVNC SingleClick (Tools - UltraVNC SingleClick); the listening port is configurable in the options +### Changed +``` +WARNING! There have been changes to the connections file/SQL tables +Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables +To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) +These are the added lines: +[RDPAuthenticationLevel] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , +[InheritRDPAuthenticationLevel] [bit] NOT NULL , +``` +### Fixed +- Fixed VNC connections not working on x64 +- Fixed screenshots save all feature overwriting files with the same name (not actually a bug, but rather a new feature ;) +- Fixed ICA Encryption Strength not inheriting properly + +## 1.43 +### Fixed +- Added function to send either the main form or a connection panel to another screen + - To send the form to another screen, right click the titlebar or the taskbar button and select "Send to..." + - If you want to send a panel to another screen, right click the panel's tab and do the same +### Fixed +- Fixed PuTTY connections not supporting credentials with spaces +- Fixed form not opening on last position when using multiple screens +- Fixed kiosk mode not working on secondary screen + +## 1.42 +### Added +- Added minimize to tray option +- Added option to enable switching to open connections with a single click on the corresponding connection in the tree +- Added button to test proxy settings +### Changed + - IMPORTANT NEWS: Please read the page that opens when you first start this release or go to: ~~http://www.mRemote.org/wiki/MainPage.ashx#Commercial~~ +### Fixed +- Fixed: If the active connection tab is a PuTTY connection, Alt+Tab to mRemote now focuses the PuTTY window +- Fixed encoding problem with PuTTY sessions that included spaces +- Fixed problem that made mRemote inaccesible when closing it on a second monitor and then disabling this monitor +- Fixed: Inheritance defaults of some new VNC properties were not saved in the portable package + +## 1.41 +### Added +- Added complete support for SmartCode's ViewerX and removed VncSharp +``` +Many thx to everyone who donated to make this happen!!! I didn't think that it wouldn't even take a week! =) +I hope everyone will be satisfied by the functions and possibilities this new control provides +If you use one of the non-setup packages you must register the control yourself +Open a cmd and change to the directory you installed mRemote to +Type regsvr32 scvncctrl.dll and click ok +``` +### Changed +- Changed shortcuts and added buttons for them to the view menu under "Jump To" because they were causing several problems +``` +WARNING! There have been changes to the connections file/SQL tables and the Ext. Apps XML file +Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables +To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) +``` + +## 1.40 +### Added +- Added (limited) support for the trial version of SmartCode's VNC ActiveX +``` +To enable it go to Options - Advanced and check "Try SmartCode VNC ActiveX" +When connecting a pop up will open, wait about 10 seconds, then click on "Trial" to continue +I will integrate this control fully into mRemote if I get enough Donations to buy the single developer license ($375,-) +So if you want to see better VNC support (All UltraVNC, TightVNC and RealVNC functions) in mRemote, please help me and donate some bucks +For donations either go to the mRemote Wiki (Info - Website) or click on Info - Donate to directly go to PayPal +I will announce the current donation amount every day (or as often as I can) on the Wiki main page +If you want to know more about the control go here: http://www.s-code.com/products/viewerx/ +``` +- Added feature to choose the panel a connection will open in when... + 1. no panel name was assigned in the properties + 2. you opened a connection with the option to choose the panel before connecting + 3. you checked "Always show panel selection dialog when opening connectins" in Options - Tabs & Panels +- Added Shortcuts to focus the standard panels + - Alt+C: Switch between Connections & Config panel + - Alt+S: Switch between Sessions & Screenshots panel + - Alt+E: Switch to Errors & Infos panel +- Added some new icons + +## 1.39 +### Added +- Added MagicLibrary.dll to the release again (forgot it in the 1.38 packages, sorry) +- Added auto-reconnect for ICA +- Added feature that automatically clears whitespaces in the Quicky Textfield +- Added special feature: Go to the set password dialog and type "ijustwannaplay" (without the quotes) in the password field... ;) + +## 1.38 +### Added +- Added automatic reconnect feature for RDP (Options - Advanced) +- Added connections drop-down to the quicky toolbar (same as the tray icon menu) +- Added setting in the options to enable/disable that double clicking on a connection tab closes it +- Added option to automatically set the hostname like the display name when creating new connections +### Fixed +- Fixed bug that caused the properties of a folder to be filled with "Object reference not set to an instance of an object." when adding a folder to the root with Default Inheritance enabled +- Fixed bug that made the properties of a newly added Connection to the root unavailable when Default Inheritance was enabled +- Fixed bug that the default settings for Pre/Post Ext. App, and their inheritance settings were not being saved +- Fixed bug in settings loading methods that caused the application to hang when an error occured +- Fixed bug in Ext. Apps panel that copied the properties of the previously selected Ext. App when "Wait for exit" was checked +- Fixed bug in the SQL Query that creates the tables needed by mRemote +- Attempt to fix the "Drop-Down on Screenshot" bug on some machines + +## 1.35 +### Added +- Added single instance mode (look in Options - Startup/Exit) - No cmd arguments supported yet! +- Added possibilty to start a Ext. App before connecting and on disconnect (e.g. for VPN/RAS) +- Added option to the Ext. Apps to tell mRemote to wait for the exit of the Ext. App +- Added encryption setting for ICA +### Changed +``` +WARNING! There have been changes to the connections file/SQL tables and the Ext. Apps XML file +Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables +Here's a list of new columns that need to be created before saving connections to an SQL server: +Name: ICAEncryptionStrength, Data-Type: varchar, Length: 64, Allow Nulls: No +Name: InheritICAEncryptionStrength, Data-Type: bit, Length: 1, Allow Nulls: No +Name: PreExtApp, Date-Type: varchar, Length: 512, Allow Nulls: Yes +Name: PostExtApp, Date-Type: varchar, Length: 512, Allow Nulls: Yes +Name: InheritPreExtApp, Date-Type: bit, Length: 1, Allow Nulls: No +Name: InheritPostExtApp, Date-Type: bit, Length: 1, Allow Nulls: No +``` + +## 1.33 +### Fixed +- Fixed problem that caused RDP connections not to initialize properly when using XP SP3 +- Fixed bug in Port Scan that prevented hosts with no hostname from being imported + +## 1.32 +### Added +- Added: Inheritance defaults can now be customized (look in the root properties of your connections tree) +### Changed +- Changed Target CPU to AnyCPU again as I think the x86 setting caused problems on x64 machines (although it shouldn't) +### Fixed +- Fixed bug that made password-secured connection files not load properly because the return value from the password screen was always null +- Fixed a lot of outdated code in the import functions (Import from XML, Import from AD, Import from RDP files) +- Fixed bug that caused properties with a ' character not to be saved properly when using SQL Server + +## 1.31 +### Fixed +- Small speed improvement to the port scanner +- Fixed bug that caused SQL live-update to not work when not using AD Authentication +- Fixed bug that caused Save As not to work + +## 1.30 +### Added +- Added experimental SQL Server with live-update (multi-user) support (see Help - Getting started - SQL Configuration) +- Added bunch of new icons to the UI, most of them by famfamfam.com +- Added dropdown button to Quicky Toolbar to choose protocol +- Many smaller changes and additions +### Fixed +- Fixed: Wrong default PuTTY session name +- Fixed bug in Port Scanner that caused an error when no DNS name could be resolved + +## 1.25 +### Added +- Added inheritance for folders +- Added port scan feature and possibility to import from a scan +- Added toolbar for Ext. Apps (see View - External Applications Toolbar) +- Added quick connect as toolbar +- Added code that creates a backup of the current connections file every time it is loaded (It's named YourConsFile.xml_BAK) +- Added description variable to Ext. Apps +### Fixed +- Fixed bug that allowed inheriting from root node +- Fixed bug that caused Ext. Apps launched from a connection tab to use the selected tree node instead of the current tab +- Fixed bug that caused mRemote not to save panel layout and Ext. Apps on exit + +## 1.24 +### Fixed +- Fixed a bug in connections loading mechanism that caused a corrupted connections file when upgrading from a previous version + +## 1.23 +### Added +- Added feature to remember which connections were opened on last runtime and reconnect to them on the next start (see Tools - Options - Startup/Exit) +- A command line switch is also available to cancel reconnecting (/noreconnect or /norc) +- Added Auto Save feature (Tools - Options - Connections - Auto Save every...) +- Added Ext. Apps to connection tab context menu +- Added better error handling for RDP connection creation +### Fixed +- Fixed problem with Sessions feature on 64bit systems +- Fixed Sessions feature not working when using global credentials +- Fixed several problems with the Active Directory OU picker control +- Fixed bug in Connection duplicate code that caused duplicated connection to still have previous tree node assigned + +## 1.20 +### Added +- Added External Applications feature (check the help section for more info) +- Added duplicate feature to Connections tree +### Fixed +- Fixed: MagicLibrary.dll was not included in the setup package + +## 1.16 +### Added +- New Domain: www.mRemote.org +- There's a new setting in the options to fine tune the time to wait until the window has been created +- Added reconnect feature in tab menu +### Fixed +- Fixed PuTTY connections appearing in a new window +- Fixed export not working + +## 1.15 +### Added +- Added: New portable package +- Added: Defaults for new connections can now be customized + - Click the root item and then the new Properties-like button with a small yellow star to get to the settings +### Fixed +- Fixed Import from Active Directory not working +- Fixed problem with single click connect not focusing correctly +- Fixed root node not being renamed after changing name in property grid + +## 1.10 +### Added +- Added support for setting a password to protect the connections file with (look in the root of your connections tree) +- Added RDP file import feature +- Added new command-line switch to reset panel's positions +- Added HTTPS as protocol +- Added HTTP/S basic authentication +- Added support for setting a Proxy server for automatic updates +### Changed +- Some changes in help section +### Fixed +- Fixed the bug that passwords stored in the options weren't decrypted when a connection was opened +- Fixed "bug" that prevented "Connect to console session" from working in RDC6.1 (Vista SP1 RC1/XP SP3 RC1) + +## 1.00 +Merry Christmas! =) +``` +1.00 is a (almost) complete rewrite of the whole application +The code base is now much cleaner and more (easily) extendable +New features include (but are not limited to): +Every part of the application is now integrated into panels which can be moved, docked and undocked, hidden, moved to another monitor, etc. +This makes many new and exciting ways to manage connection and application windows possible +You can for example open up 4 PuTTY sessions in 4 different panels and align them in the main application so you can use all 4 side by side - 2 on the upper side and 2 on the bottom for example +This can be done for EVERY part of the application, it's completely modular and customizable +Connection and folder (previously called containers) properties have moved to a new property grid control +Every setting (with the exclusion of the hostname, which wouldn't make any sense) can now be inherited from the parent folder +Connection file saving/loading is now handled a bit different (more in the help section) +Application restart is no longer nececary after changing options, they are active with a click of the OK button +Smart size can now be activated also if a connection is already open (in the right click menu of the active tab) +A panel name can be stored with every connection (or folder, if inherting) to always open the connection in the specified panel +And last but not least, many bugs have been fixed, though there are probably many new bugs aswell - Did I already mention this is a rewrite? ;) +I hope you like my work and if you do please consider donating on the mRemote website to support me a little. Any amount will do! Thx! +``` + +## 0.50 +### Added +- Added possibility to change resolution or display mode (Fit to window, Fullscreen, Smart size) +- Added new setting in options to show logon info on tab titles +- Added new feature that catches popup dialogs and puts them in a managed interface. This is another step to make mRemote a single window application. +- Added QuickConnect history and auto-complete functions +- Added a few new Icons (Linux, Windows, ESX, Log, Finance) +- Pressing escape switches back to the connection list +- There is a context menu that allows you to copy selected errors/warnings/infos to the clipboard (text only) or to delete them +- There also are settings in the option to change when to switch to the tab and to switch back to the normal behaviour of displaying message popups + +### Changed +- Connections file version is now 1.2 +### Removed +- Removed old Terminal (SSH, Telnet) control and embedded PuTTY instead +``` +This decision brings mostly good but also some bad news +The good news is that now everything that works in putty also works in mRemote +This means X11 forwarding, SSH port forwarding, session logging, appearance customization, etc. should be working fine now +It also brings some new protocols (Rlogin, RAW) +The bad news is that I cannot fully integrate Putty into mRemote because it is a standalone application and thus has it's own window handle +This means that you won't be able to use Ctrl+Tab to switch between tabs, catching errors or infos through the new Errors and Infos tab isn't possible, etc. +``` +### Fixed +- Improved options tab +- Fixed some form drawing bugs + +## 0.35 +### Added +- Added tab switching/closing hotkeys + - Switch to next tab: Ctrl+Tab + - Switch to previous tab: Ctrl+Shift+Tab + - Close active tab: Ctrl+W + - This does not and will probably never work with RDP connections! +### Changed +- Changed shortcuts to menu items in main menu as they interfered with some terminal key bindings +### Fixed +- Fixed bug in updating code that still displayed the current version in the old format (x.x.x.x instead of x.xx) +- Fixed bug where the colors setting was not correctly read after saving and reloading a connections file (only with 256 colors setting) +- Fixed bug that made connect to console session and fullscreen options not work +- Fixed bug that when opening options, update or about tab caused weird paddings next to the tab or other strange behaviour + +## 0.30 +### Added +- Added HTTP as protocol to allow for basic web-based administration +- Added new connections menu to the toolbar + - Left click on a connection connects + - Right click on a container or connection opens the config tab for the selected item +- Added two new connection context menu entries for quickly connecting to console session or connecting in fullscreen +- The connections tree can now be hidden + - To hide it right click on the splitter (the divider between the connections tree and the tabbing interface) +### Changed +- Changed "Redirect Key combinations (like in fullscreen)" to be disabled when in kiosk mode as it has no effect then anyway +### Fixed +Improved tray icon menu (just like the main connections menu) +- Several small bugfixes and code improvements +### Removed +- Removed overlay (RDP locking) feature in favor of simply grabbing input when clicking inside the control area + - I hope nobody is too sad that the nice looking overlay feature had to go, but..., well, it had to! ;-) + +## 0.20 +### Added +- Added Drag and Drop support for tabs +- Added tab context menu + - Switch to/from fullscreen + - Take a screenshot + - Transfer files via SCP/SFTP (SSH) + - Send special keys (VNC) + - Rename tabs + - Duplicate tabs (Create another instance of the connection) + - Show config + - Close tab (disconnect) +- Added middle click support for tabs (close/disconnect) +- Added SSH file transfer (SCP/SFTP) support +- Added Tools menu to the tree context menu +- Transfer files via SCP/SFTP (SSH) +- Import/Export features +- Sorting +### Changed +- Changed version format +### Removed +- Removed Fullscreen and Send special keys buttons from the main toolbar as they are now in the tab context menu +### Fixed +- Fixed the problem that caused mRemote to crash when dragging a parent node of the connections tree onto one of it's child nodes +- Fixed problem in importing mechanism that allowed importing connections including the root which resulted in multiple root items that couldn't be deleted +- Fixed problem with quick connect + +## 0.0.9.0 +### Added +- Added support for redirecting key combinations (Alt+Tab, Winkey, ...) +- Added Import/Export features +- Added Quick Connect Port support, just type the host you want to connect to followed by a ":" and then the port +- Added Connect/Disconnect buttons to connections context menu +- Added two new icons (Test Server | TST; Build Server | BS) +### Changed +- Many changes to the connections loading/saving mechanisms +- confCons version is now 1.0 +### Fixed +- Some code cleanup +- Fixed auto session info to only try to get session information when a RDP connection is selected +- Fixed AD Import feature (didn't care if imported items were computers, groups, users, ... ;) +- Fixed settings and connections not saving when installing updates from the auto-updater +- Fixed form size and location not saving properly when closing the application in minimized state or in maximized state on a secondary monitor + +## 0.0.8.2 +### Added +- Added SSH1 to Quick Connect GUI +### Changed +- Changed buffer size of terminal control, it's now 500 lines +### Fixed +- Fixed terminal connections not getting focus when changing tabs +- Fixed bug in terminal code that caused hitting "home" to show "~" instead of jumping to the start of the line +- Fixed bug that caused that hitting enter in mRemote wouldn't do anything when options was opened before + +## 0.0.8.0 +### Added +- Added code to check if the msrdp com control is registered +### Changed +- Many Improvements to the terminal control (ssh1(!), ssh2, telnet) +### Fixed +- Fixed bug that caused mRemote to crash when moving connection into root node (only with inheritance enabled) +- Fixed bug: Pressing delete when editing a node's name caused delete messagebox to show + +## 0.0.7.5 +### Added +- Added inheritance feature to inherit connection settings from parent container +### Changed +- Expanded/Collapsed state of tree nodes will now be saved +- Reduced auto session info delay to 700ms +- Some code maintainance +- Some corrections to connections tree and quick search behaviour +- Changed connections file version to 0.9 +### Fixed +- Fixed bug in TerminalControl that caused the error message "error loading string" +- Fixed: Settings saving on exit was broken in 0.0.7.0, this is fixed now +- Fixed connections context menu bug that made import from ad option inaccessible +- Fixed session info filling up with infos about hosts previously selected + +## 0.0.7.0 +### Changed +- Massive GUI redesign and changes, hope you like it! =) +### Fixed +- Fixed bug that made session info to query immediately after selecting a connection (when enabled), there is now a one second delay to prevent collecting session info for more than one host + +## 0.0.6.8 +### Added +- Added connection import feature for Active Directory +### Changed +- Tidied up project references +- Multiple changes to setup routine +### Fixed +- Improved error handling for auto-update +- Improved download handling for auto-update +- Fixed bug that made download finished/failed message box appear multiple times when update was canceled and re-downloaded +- Fixed bug where double-clicking a container opened all connections inside this container + +## 0.0.6.6 +### Changed +- Changed port textbox control to only allow digits +- Small changes to connection code for SSH +### Fixed +- Fixed port setting not saving (or always displaying default port for selected protocol) + +## 0.0.6.5 +### Added +- Added auto update feature +### Changed +- Changed: Multiple UI Changes (added shortcuts, rearranged menu items, ...) +### Fixed +- Fixed the problem where the connections file version was saved either with a dot or a comma, depending on system language +- Fixed not being able to connect to SSH2 hosts without specifying username and password +- Fixed several problems with Quick Connect +- Improved saving of config changes +- Fixed connections tab not closing when using SSH + +## 0.0.6.0 +### Added +- Added new protocols: SSH2 and Telnet +- Added first command line switch/parameter "/consfile" + - Ex.: mRemote.exe /consfile "%PathToYourConnectionsFile%" +- Added button to screenshots to delete a screenshot +- Added Host Status (Ping) feature +### Changed +- Many code rewrites and changes in almost every area +- Changed the way connections get loaded +- The default path for the connection file is no longer in the application directory but in the local application data folder. + - Ex.: c:\Documents and Settings\felix\Local Settings\Application Data\Felix_Deimel\mRemote\ + - If opening a connection file from a custom location (click on open link) saving will also occur in this file and not like in previous versions to the default connections file + - To import your old connection file please use the following procedure: start mRemote, click on "Open" and find your old connection file. Then click on "Save As" and save it with the default file name to the default location +- Changed the font and style of context menus +- Changed Quick Connect UI +### Fixed +- Fixed connection settings in config tab not saving when clicking another connection before jumping to another config field +- Fixed a bug where renaming a container caused the first connection in the same container to be renamed too + +## 0.0.5.0 R2 +### Fixed +- Fixed a bug that prevented connections from opening when icon files were assigned in a previous version of mRemote + +## 0.0.5.0 +### Added +- Added (Global) fullscreen / kiosk feature +- Added redirection settings for disk drives, printers, ports, smart cards and sound +- Added option to write a log file +- Added option to open new tabs on the right side of the currently selected tab +- Added possibility to connect to all nodes in a container +### Changed +- Changed session functions to work in background +- Changed icon choosing mechanism and added a bunch of default icons +- Changed: Containers with connection can now be deleted just like empty containers +- Changed screenshot functions to now collect all screenshots in one tab +- Changed: More settings can now be changed on container basis +- Changed config file version to 0.6 +- Changed: Small internal changes to the connection saving/creating and opening mechanisms +### Fixed +- Fixed "Display Wallpapers" and "Display Themes" settings, they are working now + +## 0.0.3.6 +### Added +- Added Feature to display an overlay when RDP connection tab has lost the focus, clicking on this gives the focus back to the control +- Added standard handlers for F2 (rename) and DEL (delete) keys in the treeview +- Added icon preview for connections in config tab +### Changed +- Changed the way new connections and containers are being created in the treeview. The pop up window will not be displayed any longer, instead everything is handled inplace by the treeview. +- Changed some minor UI related stuff +### Fixed +- Fixed bug in tab closing mechanism that caused icons (play/pause) to not be set on the correct tree nodes + +## 0.0.3.5 +### Added +- Added Feature to query and log off sessions on a remote machine and option to do this automatically +- Added Option to show icon in system tray with connection menu +### Changed +- Changed controls to flat style as I think this fits the whole application more than the old 3D look +- Multiple UI changes to eliminate annoying behaviour + +## 0.0.3.3 +### Added +- Added Feature to specify which login information to use when no info is provided in the config of a remote machine +### Fixed +- Fixed bug in Quick Find where trying to open a connection when no node was found caused an error +- Fixed bug where the main form was not rendered correctly when hiding top bar and using XP Themes +- Fixed bug in drag-drop routine that caused application to hang when trying to drop a node on one of it's child nodes +- Fixed bug where taskbar buttons for fullscreen rdp windows did not disappear after disconnecting + +## 0.0.3.2 +### Added +- Added new Save As Dialog with feature to only save specific connection settings +- Added Option to display Tooltips when hovering over host entries in the connection tree +- Added Option to ask at exit when there are open connections +### Fixed +- Fixed bug where saving connections file with spaces in the root node caused an error -> updated Connection File Version to 0.5 +- Fixed bug in options tab where the browse button for a custom connection file didn't do anything + +## 0.0.3.0 +### Added +- Added Options Tab + - Load connections file from different location + - Save/Don't Save connections file on exit + - Show current tab name in window title +- Added drag and drop functionality to the connections tree +- Added feature to hide top bar +- Added feature to send special keys (VNC) +### Changed +- Updated VncSharp Library to 0.88 (still pretty buggy) + +## 0.0.2.7 +### Added +- Added feature to save connection settings to all connections in the selected container +### Deprecated +- Disabled "Display Wallpaper" and "Display Themes" checkboxes as these features are not implemented +### Fixed +- Icon choosing bug fixed +- Taskbar button had no text when in fullscreen - fixed +- Fixed bug in Quick Connect GUI + +## 0.0.2.5 +### Added +- Added new connections toolstrip (same functions as context menu) +### Changed +- Splitter position is now saved on exit +### Fixed +- Quick connect button bug fixed +- Search field resize bug fixed + +## 0.0.2.4 +### Added +- Added Keep Alive Interval (1 Minute) +- Added Options to choose between RDP & VNC +- Added Port Setting for RDP +- Added Option to connect to console +- Added Menu Entries to move Connections & Containers up & down +### Changed +- Changed default color depth to 16bit +- Some small code improvements + +[Unreleased]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.12...HEAD +[1.76.12]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.11..v1.76.12 +[1.76.11]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.10..v1.76.11 +[1.76.10]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.9..v1.76.10 +[1.76.9]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.8..v1.76.9 +[1.76.8]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.7..v1.76.8 +[1.76.7]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.6..v1.76.7 +[1.76.6]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.5..v1.76.6 +[1.76.5]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha6..v1.76.5 +[1.76.4 Alpha 6]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha5..v1.76Alpha6 +[1.76.3 Alpha 5]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha4..v1.76Alpha5 +[1.76.2 Alpha 4]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha3..v1.76Alpha4 +[1.76.1 Alpha 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha2..v1.76Alpha3 +[1.76.0 Alpha 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha1..v1.76Alpha2 +[1.76.0 Alpha 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7012..v1.76Alpha1 +[1.75.7012]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7011..v1.75.7012 +[1.75.7011]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7010..v1.75.7011 +[1.75.7010]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7009..v1.75.7010 +[1.75.7009]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix8..v1.75.7009 +[1.75.7008]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix7..v1.75Hotfix8 +[1.75.7007]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix6..v1.75.Hotfix7 +[1.75.7006]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix5..v1.75Hotfix6 +[1.75.7005]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix4..v1.74Hotfix5 +[1.75.7004]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix3..v1.75Hotifx4 +[1.75.7003]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotifx2..v1.75Hotifx3 +[1.75.7002]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotifx1..v1.75Hotfix2 +[1.75.7001]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75..v1.75Hotfix1 +[1.75]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Beta3..v1.75 +[1.75 Beta 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Beta2..v1.75Beta3 +[1.75 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Beta1..v1.75Beta2 +[1.75 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Alpha3..v1.75Beta1 +[1.75 Alpha 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Alpha2..v1.75Alpha3 +[1.75 Alpha 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Alpha1..v1.75Alpha2 +[1.75 Alpha 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.74..v1.75Alpha1 +[1.74]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.74Beta2..v1.74 +[1.73 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.73Beta1..v1.73Beta2 +[1.73 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.72..v1.73Beta1 +[1.72]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71..v1.72 +[1.71]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71RC2..v1.71 +[1.71 Release Candidate 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71RC1..v1.71RC2 +[1.71 Release Candidate 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta5..v1.71RC1 +[1.71 Beta 5]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta4..1.71Beta5 +[1.71 Beta 4]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta3..1.71Beta4 +[1.71 Beta 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta2..v1.71Beta3 +[1.71 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta1..v1.71Beta2 +[1.71 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70..v1.71Beta1 +[1.70]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70RC2..v1.70 +[1.70 Release Candidate 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70RC1..v1.70RC2 +[1.70 Release Candidate 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70Beta2..v1.70RC1 +[1.70 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70Beta1..v1.70Beta2 +[1.70 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.69..v1.70Beta1 +[1.69]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.68..v1.69 +[1.68]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.67..v1.68 +[1.67]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.66..v1.67 +[1.66]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.65..v1.66 +[1.65]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.64..v1.65 +[1.64]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.63..v1.64 +[1.63]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.62..v1.63 +[1.62]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.61..v1.62 +[1.61]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.60..v1.61 +[1.60]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.50..v1.60 +[1.50]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.49..v1.50 diff --git a/CREDITS.TXT b/CREDITS.TXT deleted file mode 100644 index cfcf2deb..00000000 --- a/CREDITS.TXT +++ /dev/null @@ -1,150 +0,0 @@ -Contributors -============ - -Current mRemoteNG dev team: -David Sparer (github.com/sparerd) -Sean Kaim (github.com/kmscode) - -Thanks for the awesome new website! -Bennett Blodinger (github.com/benwa) - -Joe Cefoli (github.com/jcefoli) -countchappy (github.com/countchappy) -Tony Lambert -Julien Roncaglia (github.com/vbfox) -github.com/peterchenadded -Brandon Wulf (github.com/mrwulf) -Pedro Rodrigues (github.com/pedro2555) -github.com/dekelMP -Faryan Rezagholi (github.com/farosch) -Bruce (github.com/brucetp) -Camilo Alvarez (github.com/jotatsu) -github.com/DamianBis -github.com/pfjason -github.com/sirLoaf -github.com/Fyers -Vladimir Semenov (github.com/sli-pro) -Stephan (github.com/st-schuler) -Aleksey Reytsman (github.com/areytsman) -Cristian Abelleira (github.com/CrAbelleira) -github.com/MitchellBot - - -Past Contributors -================= - -Felix Deimel - mRemote original developer -Riley McArdle - mRemoteNG original developer - -Hayato Iriumi (github.com/hiriumi) -Jason Barbier -Wiktor Beryt -Lionel Caignec -Ruben d'Arco -Holger Henke -Tom Hiller -Apisitt Rattana -Andreas Rehm -David Vidmar -github.com/Brandhor -github.com/Kvarkas - - -Translators -=========== - -Eugenio "Ryo567" Martnez -Mathieu Pape -Emanuel Silva -Robert Siwiec -Hayato Iriumi -Sebastien Thieury (github.com/SebThieu) -Riza Emet -Lukas Plachy (github.com/rheingold) -Gyuha Shin -Stefan (github.com/polluks) -github.com/emazv72 -Vladimir Semenov (github.com/sli-pro) -Marco Sousa (github.com/marcomsousa) -github.com/wwj402 -github.com/Fyers -github.com/pablomh - - -Included Source Code -==================== - -Command Line Arguments Parser -Copyright 2002 Richard Lopes -MIT License -http://www.codeproject.com/KB/recipes/command_line.aspx - -FilteredPropertyGrid -Copyright 2006 Azuria -http://www.codeproject.com/KB/cs/FilteredPropertyGrid.aspx - -InputBox -Copyright 2016 Jan Slama -http://www.csharp-examples.net/inputbox/ - -IP TextBox -Copyright 2005 mawnkay -http://www.codeproject.com/Articles/11576/IP-TextBox - -PortableSettingsProvider -Copyright 2014 crdx -https://github.com/crdx/PortableSettingsProvider - - -Included Components -=================== - -ADTree -Copyright 2004 Marc Merritt -Copyright 2008 Felix Deimel -http://www.codeproject.com/KB/selection/ADPickerCtrl.aspx - -DockPanel Suite -Copyright 2018 @roken and @lextm (formerly Weifen Luo) -MIT License -https://github.com/dockpanelsuite/dockpanelsuite - -GeckoFX -Copyright 2016 Tom Hindle -Mozilla Public License -https://bitbucket.org/geckofx/ - -log4net -Copyright 2001-2015 The Apache Software Foundation -Apache License Version 2.0 -http://logging.apache.org/log4net/ - -Magic Library -Copyright 2002-2003 Crownwood Consulting, Ltd. -Freely redistributable with attribution -http://www.dotnetmagic.com/magic_download.html - -PuTTY -Copyright 1997-2017 Simon Tatham -MIT License -http://www.chiark.greenend.org.uk/~sgtatham/putty/ - -Silk Icon Set -Copyright 2005-2008 FAMFAMFAM -Creative Commons Attribution 2.5 License -http://www.famfamfam.com/ - -SSH.NET -Copyright 2016 -MIT License -https://github.com/sshnet/SSH.NET - -VncSharp -Copyright 2004-2009 David Humphrey -GNU General Public License (GPL) Version 2 -https://github.com/humphd/VncSharp - -ObjectListView -Copyright 2006-2016 Phillip Piper -GNU General Public License (GPL) Version 3 -https://sourceforge.net/projects/objectlistview/ \ No newline at end of file diff --git a/CREDITS.md b/CREDITS.md new file mode 100644 index 00000000..690b7b3e --- /dev/null +++ b/CREDITS.md @@ -0,0 +1,137 @@ +# Contributors +## Current mRemoteNG dev team +David Sparer (github.com/sparerd) +Sean Kaim (github.com/kmscode) +Faryan Rezagholi (github.com/farosch) + +Thanks for the awesome new website! +Bennett Blodinger (github.com/benwa) + +Joe Cefoli (github.com/jcefoli) +countchappy (github.com/countchappy) +Tony Lambert +Julien Roncaglia (github.com/vbfox) +github.com/peterchenadded +Brandon Wulf (github.com/mrwulf) +Pedro Rodrigues (github.com/pedro2555) +github.com/dekelMP +Bruce (github.com/brucetp) +Camilo Alvarez (github.com/jotatsu) +github.com/DamianBis +github.com/pfjason +github.com/sirLoaf +github.com/Fyers +Vladimir Semenov (github.com/sli-pro) +Stephan (github.com/st-schuler) +Aleksey Reytsman (github.com/areytsman) +Cristian Abelleira (github.com/CrAbelleira) +github.com/MitchellBot + +## Past Contributors +Felix Deimel - mRemote original developer +Riley McArdle - mRemoteNG original developer + +Hayato Iriumi (github.com/hiriumi) +Jason Barbier +Wiktor Beryt +Lionel Caignec +Ruben d'Arco +Holger Henke +Tom Hiller +Apisitt Rattana +Andreas Rehm +David Vidmar +github.com/Brandhor +Dimitrij (github.com/Kvarkas) + +## Translators +Eugenio "Ryo567" Martínez +Mathieu Pape +Emanuel Silva +Robert Siwiec +Hayato Iriumi +Sebastien Thieury (github.com/SebThieu) +Riza Emet +Lukas Plachy (github.com/rheingold) +Gyuha Shin +Stefan (github.com/polluks) +github.com/emazv72 +Vladimir Semenov (github.com/sli-pro) +Marco Sousa (github.com/marcomsousa) +github.com/wwj402 +github.com/Fyers +github.com/pablomh + +## Included Source Code +Command Line Arguments Parser +Copyright © 2002 Richard Lopes +MIT License +http://www.codeproject.com/KB/recipes/command_line.aspx + +FilteredPropertyGrid +Copyright © 2006 Azuria +http://www.codeproject.com/KB/cs/FilteredPropertyGrid.aspx + +InputBox +Copyright © 2016 Jan Slama +http://www.csharp-examples.net/inputbox/ + +IP TextBox +Copyright © 2005 mawnkay +http://www.codeproject.com/Articles/11576/IP-TextBox + +PortableSettingsProvider +Copyright © 2014 crdx +https://github.com/crdx/PortableSettingsProvider + + +## Included Components +ADTree +Copyright © 2004 Marc Merritt +Copyright © 2008 Felix Deimel +http://www.codeproject.com/KB/selection/ADPickerCtrl.aspx + +DockPanel Suite +Copyright © 2018 @roken and @lextm (formerly Weifen Luo) +MIT License +https://github.com/dockpanelsuite/dockpanelsuite + +GeckoFX +Copyright © 2016 Tom Hindle +Mozilla Public License +https://bitbucket.org/geckofx/ + +log4net +Copyright © 2001-2015 The Apache Software Foundation +Apache License Version 2.0 +http://logging.apache.org/log4net/ + +Magic Library +Copyright © 2002-2003 Crownwood Consulting, Ltd. +Freely redistributable with attribution +http://www.dotnetmagic.com/magic_download.html + +PuTTY +Copyright © 1997-2017 Simon Tatham +MIT License +http://www.chiark.greenend.org.uk/~sgtatham/putty/ + +Silk Icon Set +Copyright © 2005-2008 FAMFAMFAM +Creative Commons Attribution 2.5 License +http://www.famfamfam.com/ + +SSH.NET +Copyright © 2016 +MIT License +https://github.com/sshnet/SSH.NET + +VncSharp +Copyright © 2004-2009 David Humphrey +GNU General Public License (GPL) Version 2 +https://github.com/humphd/VncSharp + +ObjectListView +Copyright © 2006-2016 Phillip Piper +GNU General Public License (GPL) Version 3 +https://sourceforge.net/projects/objectlistview/ diff --git a/mRemoteV1/UI/Window/AboutWindow.cs b/mRemoteV1/UI/Window/AboutWindow.cs index d2c49b5d..56fc502d 100644 --- a/mRemoteV1/UI/Window/AboutWindow.cs +++ b/mRemoteV1/UI/Window/AboutWindow.cs @@ -18,10 +18,8 @@ namespace mRemoteNG.UI.Window internal Controls.Base.NGLabel lblVersion; internal Controls.Base.NGLabel lblLicense; internal Controls.Base.NGTextBox txtChangeLog; - internal Controls.Base.NGLabel lblChangeLog; internal Panel pnlBottom; internal PictureBox pbLogo; - internal Controls.Base.NGLabel lblCredits; internal Controls.Base.NGTextBox txtCredits; internal Panel pnlTop; @@ -31,12 +29,10 @@ namespace mRemoteNG.UI.Window this.pnlTop = new System.Windows.Forms.Panel(); this.pbLogo = new System.Windows.Forms.PictureBox(); this.pnlBottom = new System.Windows.Forms.Panel(); - this.lblCredits = new mRemoteNG.UI.Controls.Base.NGLabel(); this.txtCredits = new mRemoteNG.UI.Controls.Base.NGTextBox(); this.txtChangeLog = new mRemoteNG.UI.Controls.Base.NGTextBox(); this.lblTitle = new mRemoteNG.UI.Controls.Base.NGLabel(); this.lblVersion = new mRemoteNG.UI.Controls.Base.NGLabel(); - this.lblChangeLog = new mRemoteNG.UI.Controls.Base.NGLabel(); this.lblLicense = new mRemoteNG.UI.Controls.Base.NGLabel(); this.lblCopyright = new mRemoteNG.UI.Controls.Base.NGLabel(); this.pnlTop.SuspendLayout(); @@ -68,12 +64,10 @@ namespace mRemoteNG.UI.Window // pnlBottom // this.pnlBottom.BackColor = System.Drawing.SystemColors.Control; - this.pnlBottom.Controls.Add(this.lblCredits); this.pnlBottom.Controls.Add(this.txtCredits); this.pnlBottom.Controls.Add(this.txtChangeLog); this.pnlBottom.Controls.Add(this.lblTitle); this.pnlBottom.Controls.Add(this.lblVersion); - this.pnlBottom.Controls.Add(this.lblChangeLog); this.pnlBottom.Controls.Add(this.lblLicense); this.pnlBottom.Controls.Add(this.lblCopyright); this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Fill; @@ -83,18 +77,6 @@ namespace mRemoteNG.UI.Window this.pnlBottom.Size = new System.Drawing.Size(1117, 583); this.pnlBottom.TabIndex = 1; // - // lblCredits - // - this.lblCredits.AutoSize = true; - this.lblCredits.Font = new System.Drawing.Font("Segoe UI", 11F); - this.lblCredits.ForeColor = System.Drawing.SystemColors.ControlText; - this.lblCredits.Location = new System.Drawing.Point(3, 131); - this.lblCredits.Name = "lblCredits"; - this.lblCredits.Size = new System.Drawing.Size(55, 25); - this.lblCredits.TabIndex = 11; - this.lblCredits.Text = "Credits:"; - this.lblCredits.UseCompatibleTextRendering = true; - // // txtCredits // this.txtCredits.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -104,13 +86,13 @@ namespace mRemoteNG.UI.Window this.txtCredits.Cursor = System.Windows.Forms.Cursors.Default; this.txtCredits.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.txtCredits.ForeColor = System.Drawing.SystemColors.ControlText; - this.txtCredits.Location = new System.Drawing.Point(8, 156); + this.txtCredits.Location = new System.Drawing.Point(8, 131); this.txtCredits.MinimumSize = new System.Drawing.Size(370, 260); this.txtCredits.Multiline = true; this.txtCredits.Name = "txtCredits"; this.txtCredits.ReadOnly = true; this.txtCredits.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.txtCredits.Size = new System.Drawing.Size(400, 424); + this.txtCredits.Size = new System.Drawing.Size(400, 449); this.txtCredits.TabIndex = 7; this.txtCredits.TabStop = false; // @@ -124,13 +106,13 @@ namespace mRemoteNG.UI.Window this.txtChangeLog.Cursor = System.Windows.Forms.Cursors.Default; this.txtChangeLog.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.txtChangeLog.ForeColor = System.Drawing.SystemColors.ControlText; - this.txtChangeLog.Location = new System.Drawing.Point(414, 156); + this.txtChangeLog.Location = new System.Drawing.Point(414, 131); this.txtChangeLog.MinimumSize = new System.Drawing.Size(370, 260); this.txtChangeLog.Multiline = true; this.txtChangeLog.Name = "txtChangeLog"; this.txtChangeLog.ReadOnly = true; this.txtChangeLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.txtChangeLog.Size = new System.Drawing.Size(696, 424); + this.txtChangeLog.Size = new System.Drawing.Size(696, 449); this.txtChangeLog.TabIndex = 10; this.txtChangeLog.TabStop = false; // @@ -158,18 +140,6 @@ namespace mRemoteNG.UI.Window this.lblVersion.Text = "Version"; this.lblVersion.UseCompatibleTextRendering = true; // - // lblChangeLog - // - this.lblChangeLog.AutoSize = true; - this.lblChangeLog.Font = new System.Drawing.Font("Segoe UI", 11F); - this.lblChangeLog.ForeColor = System.Drawing.SystemColors.ControlText; - this.lblChangeLog.Location = new System.Drawing.Point(414, 131); - this.lblChangeLog.Name = "lblChangeLog"; - this.lblChangeLog.Size = new System.Drawing.Size(89, 25); - this.lblChangeLog.TabIndex = 6; - this.lblChangeLog.Text = "Change Log:"; - this.lblChangeLog.UseCompatibleTextRendering = true; - // // lblLicense // this.lblLicense.AutoSize = true; @@ -236,7 +206,6 @@ namespace mRemoteNG.UI.Window private void ApplyLanguage() { lblLicense.Text = Language.strLabelReleasedUnderGPL; - lblChangeLog.Text = Language.strLabelChangeLog; TabText = Language.strAbout; Text = Language.strAbout; } @@ -305,13 +274,13 @@ namespace mRemoteNG.UI.Window //if (UnxEndRx.IsMatch(txtChangeLog.Text)) // txtChangeLog.Text = txtChangeLog.Text.Replace("\n", Environment.NewLine); // - // But for some reason that I couldn't figure out, the RegEx.IsMatch on CREDITS.TXT/txtCredits.Text + // But for some reason that I couldn't figure out, the RegEx.IsMatch on CREDITS.md/txtCredits.Text // did not work at all despite it CLEARLY ending with \n when pulled from AppVeyor... // The Changelog is a bit long anyways... Limit the number of lines to something reasonable. - if (File.Exists(GeneralAppInfo.HomePath + "\\CHANGELOG.TXT")) + if (File.Exists(GeneralAppInfo.HomePath + "\\CHANGELOG.md")) { - using (var sR = new StreamReader(GeneralAppInfo.HomePath + "\\CHANGELOG.TXT", Encoding.Default, true)) + using (var sR = new StreamReader(GeneralAppInfo.HomePath + "\\CHANGELOG.md", Encoding.UTF8, true)) { string line; var i = 0; @@ -324,14 +293,14 @@ namespace mRemoteNG.UI.Window if (i == 128) { txtChangeLog.Text += - $"{Environment.NewLine}****************************************{Environment.NewLine}See CHANGELOG.TXT for full History...{Environment.NewLine}****************************************{Environment.NewLine}"; + $"{Environment.NewLine}****************************************{Environment.NewLine}See CHANGELOG.md for full History...{Environment.NewLine}****************************************{Environment.NewLine}"; } } } - if (File.Exists(GeneralAppInfo.HomePath + "\\CREDITS.TXT")) + if (File.Exists(GeneralAppInfo.HomePath + "\\CREDITS.md")) { - using (var sR = new StreamReader(GeneralAppInfo.HomePath + "\\CREDITS.TXT", Encoding.Default, true)) + using (var sR = new StreamReader(GeneralAppInfo.HomePath + "\\CREDITS.md", Encoding.UTF8, true)) { string line; while ((line = sR.ReadLine()) != null) From dab605f50d1e6243df19ca7c11f8607d66130d74 Mon Sep 17 00:00:00 2001 From: Bennett Blodinger Date: Fri, 19 Apr 2019 19:16:13 -0500 Subject: [PATCH 02/38] Update CHANGELOG.md --- CHANGELOG.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df6a9869..8b2f740c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,29 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - #1141: 'Copy Hostname' option added to connection tree context menu - #951: Added property to Enable/Disable Clipboard Sharing for RDP connections - #928: Add context menu items to 'Close all but this' and 'Close all tabs to the right' +- #1336: Added ability to run External tools on folders +- #1320: Added ability to favorite items in the connection tree +- #1318: Added support for saving connections in MySQL +- #1293: Importing .rdp files now imports gateway settings +- #1246: Improved connections loading to tolerate missing attributes in the confCons xml file +- #1230: Added option to track the currently focused connection in the connection tree +- #1220: Added an Apple/Mac connection icon +- #1218: A splashscreen has been added when mRemoteNG starts +- #1216: Connection tree search bar can be placed at the top or bottom of connection tree +- #1201: The help files packaged with mRemoteNG have been rewritten +- #1186: Certain dialogs are not correctly using localized text for buttons +- #1170: The Options window no longer displays in the Windows taskbar when open +- #1141: 'Copy Hostname' option added to connection tree context menu +- #1123: Added a dialog that will display when unhandled exceptions occur +- #1102: Added a button to clear connections searchbox +- #1042: Added a connection icon for OSX/MacOS +- #951: Added property to Enable/Disable Clipboard Sharing for RDP connections +- #929: Added the hostname to certain RDP error/disconnect messages where it was missing +- #928: Add context menu items to 'Close all but this' and 'Close all tabs to the right' +- #907: Added option to disable trimming whitespace from username field +- #896: Added a "view only" mode for RDP connections +- #416: Added ability to Enable/Disable Clipboard Sharing for RDP connections +- #321: Added support for displaying on HiDPI screens ### Changed - #1223: Open External Links in Default Web Browser - #1129: Spanish translation improvements @@ -19,6 +42,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Fixed +- #1383: Fixed issue where default Computer OU was not showing up when importing from Active Directory - #1248: RemoveMagicLib Bugs - various bugs that cropped up as a result of removing magiclib - #1245: Options form takes nearly 3 seconds to appear when Theming is active - #1240: Theming problem with NGNumericUpDown @@ -29,6 +53,33 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - #1044: Dragging (grabbing) the program window requires 2 clicks +## [1.76.20] - 2019-04-12 +### Fixed +- #1401: Connections corrupted when importing RDC Manager files that are missing certain fields + +## [1.76.19] - 2019-04-04 +### Fixed +- #1374: Vertical Scroll Bar missing in PuTTYNG after 0.70.0.1 & 0.71 updates + +## [1.76.18] - 2019-03-20 +### Fixeed +- #1365: PuTTY window not centered after 0.71 update + +## [1.76.16] - 2019-03-14 +### Fixed +- #1362: Updated PuTTYNG to 0.71 + +## [1.76.15] - 2019-03-09 +### Added +- Importing multiple files now only causes 1 save event, rather than 1 per file imported +### Fixed +- #1303: Exception on first connection with new SQL server database +- #1304: Resolved several issues with importing multiple RDP Manager v2.7 files + +## [1.76.14] - 2019-02-08 +### Changed +- #222: Pre-Release Test build for running on systems with FIPS Enabled + ## [1.76.12] - 2018-11-08 ### Added - #1180: Allow saving certain connection properties locally when using database @@ -1441,7 +1492,15 @@ Improved tray icon menu (just like the main connections menu) - Changed default color depth to 16bit - Some small code improvements -[Unreleased]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.12...HEAD +[Unreleased]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.20..HEAD +[1.76.20]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.19..v1.76.20 +[1.76.19]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.18..v1.76.19 +[1.76.18]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.17..v1.76.18 +[1.76.17]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.16..v1.76.17 +[1.76.16]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.15..v1.76.16 +[1.76.15]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.14..v1.76.15 +[1.76.14]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.13..v1.76.14 +[1.76.13]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.12...v1.76.13 [1.76.12]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.11..v1.76.12 [1.76.11]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.10..v1.76.11 [1.76.10]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.9..v1.76.10 From ffd8a9e87bf955f62af520b54b2f05d4d8b8dd8b Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Wed, 24 Apr 2019 23:10:37 +0200 Subject: [PATCH 03/38] Added new markdown files to project --- mRemoteV1/CHANGELOG.md | 1564 ++++++++++++++++++++++++++++++++++++ mRemoteV1/CREDITS.md | 137 ++++ mRemoteV1/mRemoteV1.csproj | 6 + 3 files changed, 1707 insertions(+) create mode 100644 mRemoteV1/CHANGELOG.md create mode 100644 mRemoteV1/CREDITS.md diff --git a/mRemoteV1/CHANGELOG.md b/mRemoteV1/CHANGELOG.md new file mode 100644 index 00000000..8b2f740c --- /dev/null +++ b/mRemoteV1/CHANGELOG.md @@ -0,0 +1,1564 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] +### Added +- #1141: 'Copy Hostname' option added to connection tree context menu +- #951: Added property to Enable/Disable Clipboard Sharing for RDP connections +- #928: Add context menu items to 'Close all but this' and 'Close all tabs to the right' +- #1336: Added ability to run External tools on folders +- #1320: Added ability to favorite items in the connection tree +- #1318: Added support for saving connections in MySQL +- #1293: Importing .rdp files now imports gateway settings +- #1246: Improved connections loading to tolerate missing attributes in the confCons xml file +- #1230: Added option to track the currently focused connection in the connection tree +- #1220: Added an Apple/Mac connection icon +- #1218: A splashscreen has been added when mRemoteNG starts +- #1216: Connection tree search bar can be placed at the top or bottom of connection tree +- #1201: The help files packaged with mRemoteNG have been rewritten +- #1186: Certain dialogs are not correctly using localized text for buttons +- #1170: The Options window no longer displays in the Windows taskbar when open +- #1141: 'Copy Hostname' option added to connection tree context menu +- #1123: Added a dialog that will display when unhandled exceptions occur +- #1102: Added a button to clear connections searchbox +- #1042: Added a connection icon for OSX/MacOS +- #951: Added property to Enable/Disable Clipboard Sharing for RDP connections +- #929: Added the hostname to certain RDP error/disconnect messages where it was missing +- #928: Add context menu items to 'Close all but this' and 'Close all tabs to the right' +- #907: Added option to disable trimming whitespace from username field +- #896: Added a "view only" mode for RDP connections +- #416: Added ability to Enable/Disable Clipboard Sharing for RDP connections +- #321: Added support for displaying on HiDPI screens +### Changed +- #1223: Open External Links in Default Web Browser +- #1129: Spanish translation improvements +- #1072: Russian translation improvements +- #1016: Chinese (simplified) translation improvements +- #765: Port Scan Issues (single port scan option now available) +- #155: Replace MagicLibrary with DockPanelSuite +- #154: MR-139: Close Button on Each Tab - new default theme has a close button on each tab + + +### Fixed +- #1383: Fixed issue where default Computer OU was not showing up when importing from Active Directory +- #1248: RemoveMagicLib Bugs - various bugs that cropped up as a result of removing magiclib +- #1245: Options form takes nearly 3 seconds to appear when Theming is active +- #1240: Theming problem with NGNumericUpDown +- #1238: Connection panel not translated until opened for the first time +- #1186: Fixed several dialog boxes to use localized button text +- #1170: Prevent Options window from showing up in taskbar +- #1064: "Esc" button does does not close some dialogs +- #1044: Dragging (grabbing) the program window requires 2 clicks + + +## [1.76.20] - 2019-04-12 +### Fixed +- #1401: Connections corrupted when importing RDC Manager files that are missing certain fields + +## [1.76.19] - 2019-04-04 +### Fixed +- #1374: Vertical Scroll Bar missing in PuTTYNG after 0.70.0.1 & 0.71 updates + +## [1.76.18] - 2019-03-20 +### Fixeed +- #1365: PuTTY window not centered after 0.71 update + +## [1.76.16] - 2019-03-14 +### Fixed +- #1362: Updated PuTTYNG to 0.71 + +## [1.76.15] - 2019-03-09 +### Added +- Importing multiple files now only causes 1 save event, rather than 1 per file imported +### Fixed +- #1303: Exception on first connection with new SQL server database +- #1304: Resolved several issues with importing multiple RDP Manager v2.7 files + +## [1.76.14] - 2019-02-08 +### Changed +- #222: Pre-Release Test build for running on systems with FIPS Enabled + +## [1.76.12] - 2018-11-08 +### Added +- #1180: Allow saving certain connection properties locally when using database +### Fixed +- #1181: Connections sometimes dont immediately load when switching to sql feature +- #1173: Fixed memory leak when loading connections multiple times +- #1168: Autohide Connection and Config tab won't open when ssh connection active +- #1134: Fixed issue where opening a connection opens same connection on other clients when using database feature +- #449: Encrypt passwords saved to database + +## [1.76.11] - 2018-10-18 +### Fixed +- #1139: Feature "Reconnect to previously opened sessions" not working +- #1136: Putty window not maximized + +## [1.76.10] - 2018-10-07 +### Fixed +- #1124: Enabling themes causes an exception + +## [1.76.9] - 2018-10-07 +### Fixed +- #1117: Duplicate panel created when "Reconnect on Startup" and "Create Empty Panel" settings enabled +- #1115: Exception when changing from xml data storage to SQL +- #1110: Pressing Delete button during connection rename attempts to delete the connection instead of the text +- #1106: Inheritance does not work when parent has C# default type set +- #1092: Invalid Cast Exceptions loading default connectioninfo +- #1091: Minor themeing issues +- #853: Added some additional safety checks and logging to help address RDP crashes + +## [1.76.8] - 2018-08-25 +### Fixed +- #1088: Delete and Launch buttons are not disabled when last external tool deleted +- ${1}'Save connections after every edit' setting not honored +- #1082: Connections not given GUID if Id is empty in connection xml + +## [1.76.7] - 2018-08-22 +### Fixed +- #1076: Wrong object selected when duplicating connection then switching between properties and inheritance in config window +- #1068: Fixed some toolbar positioning bugs + +## [1.76.6] - 2018-08-03) +### Fixed +- #1062: Entering correct password when starting app does not load connections file + +## [1.76.5] - 2018-08-02) +### Removed +- #893: Removed unneeded files from build/package +### Fixed +- #1057: Hitting F2 with no connection node selected caused unhandled exception +- #1052: 'Switch to notification panel' feature does not always switch +- #1051: Tooltips always displayed regardless of 'Show description tooltips in connection tree' setting +- #1050: Config window retains access to previously selected node after loading new connections file +- #1045: Config window shows several incorrect properties for HTTPS connections +- #1040: Canceling "select panel" form does not cancel +- #1039: Set default theme when themes disabled +- #1038: Unable to add connection with active filter +- #1036: Exception when themes are active and options page closed on Connections then reopened +- #1034: Connection context menu not being translated +- #1030: Exception thrown if importing from port scan and no tree node is selected +- #1020: BackupFileKeepCount setting not limiting backup file count +- #1004: Duplicating root or PuTTy node through hotkey causes unhandled exception +- #1002: Disabling filtering without clearing keyword leaves filtered state +- #1001: Connection tree context menu hotkeys stop working and disappear in some cases +- #999: Some hotkeys stop working if File menu was called when PuTTy Saved Sessions was selected +- #998: Can sometimes add connection under PuTTY Sessions node +- #991: Error when deleting host in filtered view +- #971: Portable Settings now apply to any machine they are used on +- #961: Connections file overwritten if correct decryption password not provided +- #868: if statement returned the same value +- #762: Increased button size to fit locaized text + +## [1.76.4 Alpha 6] - 2018-06-03 +### Added +- #924: Notification for "No Host Specified" when clicking folders in quick-connect menu +- Added option for creating an empty panel on startup +### Changed +- #942: Improved Russian translation of several items +- #902: Menu bar can once again be moved. View -> "Lock toolbar positions" now also locks the menu position +### Fixed +- #948: Fixed issue where many menu item translations were not being used +- #938: Minor layout improvements on the Port Scan screen +- #916: Default properties were not being saved + +## [1.76.3 Alpha 5] - 2018-03-14 +### Fixed +- #911: Csv exports sometimes do not include all fields +- #807: Inheritance is sometimes turned on for nodes under root Connections node + +## [1.76.2 Alpha 4] - 2018-03-03 +### Fixed +- #899: DoNotPlay is Case Sensitive in XML Serialization + +## [1.76.1 Alpha 3] - 2018-02-24 +### Added +- #625: Added ability to import mRemoteNG formatted CSV files +- #648: The port scan ping timeout is now configurable +### Fixed +- Fixed a few Xml serialization bugs that would occur if boolean values weren't capitalized + +## [1.76.0 Alpha 2] - 2018-02-01 +### Added +- #838: Added an option to lock toolbars +- #836: Added a Read Only option for SQL connections +- #829: Add option that fixes connecting to Azure instances with LoadBalanceInfo +### Fixed +- #840: Fix theme loading issue in installer version +- #800: Fixed issue with PuTTY sessions not showing some extended characters +- Fixed a few toolbar layout issues + +## [1.76.0 Alpha 1] - 2017-12-08 +### Added +- #799: Added option to save connections on every edit +- #798: Added button to test SQL database connections on SQL options page +- #611: Added multi-ssh toolbar for sending commands to many SSH clients at once +- #519: You can now import normal mRemoteNG files - they do not have to be exports +- #504: Added Korean translation +- #485: The Domain field is now visible/editable for connection with the IntApp protocol +- #468: Default connection info Panel property is now saved +- #429: Added Czech translation +- #421: When a connection file cannot be loaded, we will now prompt for how to proceed rather than always exiting. +- #338: Added option to filter connection tree when searching +- #225: Added support for importing Remote Desktop Connection Manager v2.7 RDG files +- #207: Can now specify a working directory for external tools +- #197: Selecting a quick connect protocol will start a connection with that host +- #184: Improve search to include description and hostname fields +- #152: Added option "Show on Toolbar" to external tools +- Added more logging/notifications options +### Changed +- #784: Rearranged some settings in the Options pages to prevent overlap with some translations +- #704: Portable version now saves settings in application directory +- #671: Revamped UI theme system +- #608: The Help -> Support Forum menu item now directs users to our Reddit community +- #558: Connection tree now shows customizable icons instead of play/pause icon +- #493: Changed backup file name time stamp to use local system time rather than UTC +- #357: Updated GeckoFX to v45.45.0.32 +- Improved compatability between environments when building mRemoteNG from source +### Removed +- #797: Removed duplicate translation strings +### Fixed +- #747: Fixed unnecessary "PuttySessions.Watcher.StartWatching" error message +- #650: Fixed German translation typo +- #639: Fixed Italian translation typo +- #479: New connection tree nodes not starting in edit mode +- #233: Fixed crash that can occur when disconnecting from VNC server +- #195: Access to https with self-signed certificates not working + +## [1.75.7012] - 2017-12-01 +### Changed +- #810: Official mRemoteNG builds will now be signed with a DigiCert certificate +### Fixed +- #814: Fixed bug that prevented reordering connections by dragging +- #803: File path command line argument not working with network path + +## [1.75.7011] - 2017-11-07 +### Fixed +- #778: Custom connection file path command line argument (/c) not working +- #763: Sometimes minimizing folder causes connection tree to disappear +- #761: Connections using external tools do not start (introduced in 1.75.7009) +- #758: "Decryption failed" message when loading from SQL server +- Fixed issues with /resetpanels and /resetpos command line arguments +- Resolved bug where connection tree hotkeys would sometimes be disabled + +## [1.75.7010] - 2017-10-29 +### Fixed +- #756: CustomConsPath always null + +## [1.75.7009] - 2017-10-28 +### Changed +- #635: Updated PuTTYNG to 0.70 +- Minor error message correction +- Minor code refactoring +### Fixed +- #676: Portable version ignores /cons param on first run +- #675: Attempting to add new connection/folder does not work in some situations +- #665: Can not add new connection or new folder in some situations +- #658: Keep Port Scan tab open after import +- #646: Exception after click on import port scan +- #610: mRemoteNG cannot start /crashes for some users on Windows server 2012 R2 server +- #600: Missing horizontal scrollbar on Connections Panel +- #596: Exception when launching external tool without a connection selected +- #550: Sometimes double-clicking connection tree node began rename instead of connecting +- #536: Prevented log file creation when writeLogFile option is not set +- #529: Erratic Tree Selection when using SQL Database +- #482: Default connection password not decrypted when loaded +- #335: The Quick Connect Toolbar > Connection view does not show open connections with the play icon +- #176: Unable to enter text in Quick Connect when SSH connection active + + +## NO RELEASE - 2017-06-15 +### Fixed +- #466: Installer still failing on Win7 for updates - 1.75.7005 (Hotifx 5) +- #462: Remove no longer used files from portable version - 1.75.7003 (Hotfix 4) + +## [1.75.7008] - 2017-06-15 +### Changed +- Minor updates to the installer build +### Fixed +- #589: MSI doesn't update with newer PuTTYNG version that fixes #583 (Again, Sorry!) + +## [1.75.7007] - 2017-06-14 +### Fixed +- #583: SSH (PuTTYNG) Sessions are not properly integrated into the main mRemoteNG window (Sorry!) + +## [1.75.7006] - 2017-06-13 +### Changed +- #531: Update PuTTYNG to 0.69 +### Fixed +- #377: Use all space on About page +- #527: Additional protections to avoid problems on update check in heavily firewalled environments +- #530: Fixed issue where using External Tool on existing connection causes creation of 'New Connection' entry +- #546: Quick Connect from notification area icon displays warning when clicking on a folder (see #334) + +## [1.75.7005] - 2017-04-27 +### Changed +- #410: Update PuTTYNG to 0.68 +- Minor code cleanup/optimizations/null checks +### Fixed +- #434: Fix complier warnings CA1049 & CA2111 +- #442: Fixed issue loading PuTTY sessions that have spaces in the name +- #502: Problems with ParentID for Duplicated Containers/Connections with SQL Connection Storage +- #514: Expanded property not saved/loaded properly from SQL +- #518: Exception when Importing File + +## [1.75.7003] - 2017-03-24 +### Fixed +- #464: Resolved issue when importing a connections file while using SQL server feature + +## [1.75.7002] - 2017-03-10 +### Fixed +- #448: Resolved issue with SQL saving + +## [1.75.7001] - 2017-03-10 +### Changed +- #408: Update SQL scripts + +## [1.75 hotfix 1] - 2017-03-06 +### Changed +- #437: Modify version numbering scheme +### Fixed +- #422: Uncaught exception when clicking in connection tree whitespace +- #312: Resolved KeePass auto-type issue +- #427: Export does not respect filtering user/password/domain + +## [1.75] - 2017-03-01 +### Known Issues +- File hash check will fail when updating from 1.75 Beta 1 to newer versions. + - Exception will be: "MD5 Hashes didn't match!" for 1.75 Beta 1 - 1.75 RC1 +### Added +- #344: Use SHA512 File Hashes to validate downloads (in the update mechanism & posted to the Downloads page) +- Added Release Channels to the update check functionality allowing users to select one of 3 release channels for updates: Stable, Beta, Dev +- #360: Help -> About, Version # is now selectable/copyable +- #221: RDP: Optional disconnect after X number of minutes of inactivity +### Changed +- The usual general code clean up and refactoring +- #325: Code clean up and additional logging for External Tools based connections +- #298: Code clean up and additional logging around application startup +- #291, #236: External Tools code clean up and additional logging +### Fixed +- #369: Reset Layout Option Does Not Reset Notification Pane +- #362: Invalid cast exception when using the Notification Area Icon minimize/restore +- #334: Quick Connect displays warning when clicking on a folder +- #325: When using a connection with an external app, results in opening the same external app continuously +- #311: Import from Active Directory does not use machine's domain by default +- #258: Rename Tab dialog - populate original name in dialog (1.72 functionality) +- #211, #267: Recursive AD Import wasn't fully functional + +## [1.75 Beta 3] - 2016-12-01 +### Known Issues +- Portable build MD5 check will fail when updating from 1.75 Beta 1 to newer versions. +### Fixed +- #289: Install fails during update process (only affects 1.75 beta 1 - 1.75 beta 2) + +## [1.75 Beta 2] - 2016-12-01 +### Added +- #273: Added Turkish translation provided by forum user "rizaemet" +- #217: Create user manual documentation for the SSH File Transfer feature +### Fixed +- #254: Component check window position issues and uncaught exception +- #260: Crash when attempting to load fully encrypted confCons v2.5 +- #261: Double clicking folder in treeview doesn't expand it in 1.75 beta1 +- #271: Install package is not using the last installation path +- #278: Silent installs not detecting prerequisites + +## [1.75 Beta 1] - 2016-11-15 +### Added +- MR-971: Added Right Click method to Port Scan to import discovered hosts +- MR-1000, - #211: Sub OU AD Import +- #172: Implement "audioqualitymode" for RDP sessions +- #160: Allow portable version to perform an update check (and download the latest .zip) +- #157: Implement new cryptography providers (See Tools -> Options -> Security) +### Changed +- Lots of code clean up and refactoring +- Limit log file size to 1 main log + 5 backups * 10MB. +- Minor UI Tweak: Default Menubar and QuickConnect Bar to same line +- MR-364: Removed "Announcement" functionality +- MR-366: Show PuTTY type and version on components check screen +- MR-586: Reduce HTTP/HTTPS document title length that is appended to the connection tab title +- MR-938: Adjust RDP Resolution list (ensure most common resolutions were available) +- MR-975: Replaced TreeView with TreeListView for displaying connection tree. This was a large change which separated the GUI from the domain model. +- #144: Removed export option for "VisionApp Remote Desktop 2008" +- MR-220: Don't close the AD importer after import +- #167: fix/implement the update check (was disabled in 1.74 as part of the C# conversion) +### Fixed +- MR-967: File transfer doesn't work when specifying full path and file name (as prompted) +- MR-979: switched to notifications panel incorrectly (when configured NOT to do so) + +## [1.75 Alpha 3] - 2016-08-12 +### Added +- MR-896: Added prerequisite installer check for KB2574819. Prevents "Class not registered" errors when opening RDP connections. +### Changed +- PR-130: Fix Scan button width to fit Russian translation +### Removed +- MR-946: Remove old/insecure SharpSSH and related components. Replace with SSH.NET for File Transfer Functionality +### Fixed +- MR-965, MR-871, MR-629: Error 264 on RDP Connect attempt - Added timeout value to Tools -> Options -> Connections + +## [1.75 Alpha 2] - 2016-08-03 +### Added +- MR-961, PR-133: Option to reconnect all currently opened connection tabs +- MR-917: Improved cryptographic support +### Changed +- Updated GeckoFx package +- Updated DockPanelSuite library to 2.10 Final +- Japanese translation updated +- MR-942: Refactored code relating to loading the connections file +### Fixed +- MR-910: Fixes to support Remote Desktop Gateways +- MR-874: Incorrect RDP prerequisite check in installer + +## [1.75 Alpha 1] - 2016-07-08 +### Changed +- Additional code cleanup +### Fixed +- MR-905: mRemoteNG crashes at startup (in FIPS policy check) +- MR-902: mRemoteNG crashes after locking/unlocking the local system after loading a VNC connection + +## [1.74] - 2016-06-28 +### Added +- MR-821: Initial Japanese translation included +### Changed +- New operating system requirements + - Windows 7 SP1 (with RDP Client v8: KB2592687/KB2923545) or later + - .NET Framework 4 or later +- XULRunner is no longer required for Gecko support (see below) +- Converted source from Visual Basic to C Sharp +- Lots of code refactoring/clean up/general stability changes +- Updated to latest DockPanelSuite and enabled a slick new theme! +- MR-145: Installer is now MSI based +- MR-255: Updated RDP Client to version 8 +- MR-389: Updates to IE rendering engine + - Support for latest version of IE (9-11) + - Dropped support for IE 7 & IE 8 +- MR-850: Replaced XULRunner with GeckoFx + - No need to manually configure to have the Gecko rendering engine available now + - Install image is now significantly larger due to the inclusion of the Gecko Engine +- Port Scan is now Asynchronous (and is significantly faster) +### Removed +- MR-714: Removed Keyboard shortcut functionality + - Introduced in 1.73 beta that was never officially released + - This caused stability issues + - May be re-added in a future release + - Removal does *NOT* impact the ability to send keyboard shortcuts to RDP sessions (when redirect key combinations is set to "yes") +- MR-559: Removed RDP Sessions panel functionality. This required a library for which no trusted origin/source could be located +- Removed a bunch of old code/libraries and replaced them accordingly +### Security +- MR-775, MR-745: Updated PuTTY to 0.67 +### Fixed +- MR-874: Added work-around to installer to ignore installation prerequisites +- MR-884: Slow startup in some scenarios checking authenticode certificate +- MR-872: Crash in External Tools when arguments aren't quoted +- MR-854: crashes when right clicking on connection tab +- MR-852: Option "Allow only a single instance of the application" non-functional +- MR-836: Trying to delete a folder of connections only deletes 2 connections at a time +- MR-824, MR-706: Suppress Script Errors when using the IE rendering engine +- MR-822: Improve RDP error code messages +- MR-640: Fixed Inheritance not working +- MR-639: RDP: Connect to console session +- MR-610, MR-582, MR-451: RDP: Protocol Error 3334 or exceptions with large number of connections open + - This problem appears largely resolved by most reports and testing + - Further workarounds/problem avoidance: Disable Bitmap Caching on all RDP session configuration +- MR-429: Display issue on the Options -> Advanced panel +- MR-385: Inheritance settings lost when moving item to the root of the tree + +## New Dev Team + +## [1.73 Beta 2] - [NEVER RELEASED] +### Added +- Added support for importing files from PuTTY Connection Manager. +### Fixed +- Fixed issue MR-619 - Keyboard shortcuts stop working after locking the screen with Win+L +- Improved the import and export functionality. + +## [1.73 Beta 1] - 2013-11-19 +### Added +- 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 +- MR-590: Added "Reset" to config panel context menu to allow resetting some config settings to their default value. +- Added and improved menu icons. +### Changed +- 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 +- Improved handling of variables in external tool arguments. +### Removed +- Removed misleading log messages about RD Gateway support. +- Removed invalid "Site" configuration option from PuTTY Saved Sessions. +- 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 +- 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. + +## [1.72] - 2013-11-13 +### Fixed +- 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 +### Removed +- Removed warning message when mRemoteNG is started for the first time about new connections file being created. +### Fixed +- 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. + +## [1.71 Release Candidate 2] - 2013-10-16 +### Fixed +- 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. + +## [1.71 Release Candidate 1] - 2013-10-01 +### Added +- Added Chinese (Traditional) translation. +- Added partial Greek and Hungarian translations. +### Changed +- Updated PuTTY to version 0.63. +- Updated translations. +### Fixed +- Fixed issue MR-495 - Having a negative range in port scan creates memory exhaustion. +- Fixed issue MR-514 - Window Proxy test failed without close button +- Fixed issue MR-521 - Right-Clicking in "Sessions" panel crashes mRemoteNG +- Fixed issue MR-525 - Could not start on windows 7 64bit +- Fixed issue MR-535 - SQL error saving Connections +- Fixed issue MR-538 - RDP loses connection when hiding config or connections pane +- Fixed issue MR-542 - Wrapped putty has security flaw +- Made minor improvements to the port scan functionality. +- Fixed possible cross-thread operation exception when loading connections from SQL. +- Fixed PuTTY Saved Sessions not showing after loading a new connections file. + +## [1.71 Beta 5] - 2013-06-09 +### Fixed +- Fixed issue MR-491 - Could not start RDP Connection +- Fixed issue MR-499 - TS Gateway is not working in latest release 1.71 +- Fixed typo in SQL queries. + +## [1.71 Beta 4] - 2013-05-28 +### Added +- Added feature MR-435 - Add digital signature check to updater +- Added Norwegian (Bokmal) and Portuguese (Brazil) translations. +- Added Spanish translation to the installer. +- Added PuTTY Session Settings command to the Config panel for PuTTY Saved Sessions. +### Changed +- Updated translations. +- Changed Internet Explorer to no longer force IE7 compatibility mode. +- Changed the "Launch PuTTY" button in the "Options" dialog to open PuTTY from the path the user has currently set, instead of what was previously saved. +- Updated VncSharpNG to 1.3.4896.25007 +- Lowered required version of RDC from 6.1 to 6.0. +### Fixed +- Fixed issue MR-255 - The version of the RDP AX client should be updated to 7 +- Fixed issue MR-392 - Sessions Panel - context menu entries need to be context aware +- Fixed issue MR-422 - Gives error Object reference not set to an instance of an object. +- Fixed issue MR-424 - Import of a few Linux SSH2 hosts discovered via the port scan tool results in a UE +- Fixed issue MR-439 - MRemoteNG 1.70 does not start +- Fixed issue MR-440 - RDP import with non-standard port +- Fixed issue MR-443 - Instructions for eolwtscom.dll registration for Portable version are inaccurate +- Fixed issue MR-446 - Putty saved sessions show in connection panel +- Fixed issue MR-459 - Maximized -> Minimized -> Restored results in mangled active display +- Fixed issue MR-463 - Add support for LoadBalanceInfo to RDP +- Fixed issue MR-470 - Quick Connect to Linux server uses invalid credentials +- Fixed issue MR-471 - PuTTY Saved Sessions disappears from connection list +- Fixed issue MR-487 - Initiate connections on MouseUp event +- Fixed an exception or crash when choosing unnamed colors for themes. +- Fixed possible error "Control does not support transparent background colors" when modifying themes. +- Fixed changes to the active theme not being saved reliably. +- Fixed handling of the plus (+) character in PuTTY session names. +- Improved update and announcement checking. +- Improved the PuTTY Saved Sessions list to update automatically when any changes are made. +- Improved loading time of large connection files. + +## [1.71 Beta 3] - 2013-03-20 +### Fixed +- Fixed issue MR-397 - Putty disappears from the screen +- Fixed issue MR-398 - Full Screen mode doesn't correctly make use of available space +- Fixed issue MR-402 - scrollbar touch moves putty window +- Fixed issue MR-406 - Items disappear from External Tools toolbar when accessing External Tools panel +- Fixed issue MR-410 - Unhandled exception when clicking New button under Theme +- Fixed issue MR-413 - Can't use application +- Fixed new connections having a globe icon. +- Fixed the category names in the themes tab of the options dialog on Windows XP not showing correctly. +- Fixed PuTTY saved sessions with spaces or special characters not being listed. + +## [1.71 Beta 2] - 2013-03-19 +### Added +- Added feature MR-336 - Customizable background color for the windows/panels +- Added feature MR-345 - Two separate options for confirming closure of Tabs and Connection Panels +- Added feature MR-346 - Option to show/hide the description box at the bottom of the Config panel +- Added feature MR-351 - Import connections from PuTTY +### Changed +- The username and domain settings are now hidden for VNC connections since they are not supported. +- Changed "Automatically get session information" to be disabled by default. +- RDP connections can now be switched to full screen mode when redirect key combinations is enabled. +### Fixed +- Fixed issue MR-354 - Re-ordering tabs doesn't give good, reliable visual feedback +- Fixed issue MR-375 - Changing a connection's icon using the picture button should immediately update Icon field +- Fixed issue MR-377 - Several redundant panels can be opened +- Fixed issue MR-379 - Connection variables not working with external tools +- Fixed issue MR-381 - Notifications panel - whitespace context menu allows Copy and Delete on nothing +- Fixed issue MR-401 - Checkbox misaligned + +## [1.71 Beta 1] - 2013-03-04 +### Added +- Added feature MR-329 - Create Option to disable the "Quick: " prefix +- Added detection of newer versions of connection files and database schemata. mRemoteNG will now refuse to open them to avoid data loss. +### Fixed +- Fixed issue MR-67 - Sort does not recursively sort +- Fixed issue MR-117 - Remote Session Info Window / Tab does not populate +- Fixed issue MR-121 - Config pane not sorting properties correctly when switching between alphabetical and categorized view +- Fixed issue MR-130 - Issues duplicating folders +- Fixed issue MR-142 - Start of mRemoteNG takes about one minute and consumes excessive CPU +- Fixed issue MR-158 - Password field not accepting Pipe +- Fixed issue MR-330 - Portable version saves log to user's profile folder +- Fixed issue MR-333 - Unnecessary prompt for 'close all open connections?' +- Fixed issue MR-342 - Incorrect view in config pane of new connection after viewing default inheritance +- Fixed issue MR-352 - Passwords with " (quotation mark) and # (hash key) characters make mRemoteNG to open PuttyNG dialog +- Fixed issue MR-362 - Rename 'Screenshot Manager' to 'Screenshots' on the View menu to match Panel name +- Improved appearance and discoverability of the connection search box. +- If RDC 7.0 or higher is installed, the connection bar is no longer briefly shown when connecting to an RDP connection with redirect key combinations enabled. +- If RDC 8.0 or higher is installed, RDP connections automatically adjust their size when the window is resized or when toggling full screen mode. + +## [1.70] - 2013-03-07 +### Fixed +- Fixed issue MR-339 - Connection group collapses with just one click +- Fixed issue MR-340 - Object reference not set to an instance of an object. +- Fixed issue MR-344 - Move "Always show panel tabs" option +- Fixed issue MR-350 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long. +- Fixed issue MR-355 - Moving sub folders to top level causes property loss +- Fixed tabs not closing on double-click when the active tab is a PuTTY connection. + +## [1.70 Release Candidate 2] - 2013-02-25 +### Changed +- Re-enabled PuTTYNG integration enhancements on Windows 8 +### Fixed +- Fixed issue MR-332 - Can't select different tab with one click after disconnecting existing tab +- Fixed issue MR-338 - PuTTYNG crashing on fresh install of mRemoteNG +Re-enabled PuTTYNG integration enhancements on Windows 8 + +## [1.70 Release Candidate 1] - 2013-02-22 +- Fixed issue MR-183 - Error trying to save connections when using SQL - Invalid column name _parentConstantId +- Fixed issue MR-225 - Tabs do not open in a panel until multiple panels are displayed. +- Fixed issue MR-229 - Integrated PuTTY doesn't work in Windows 8 RP +- Fixed issue MR-264 - Windows 8 support +- Fixed issue MR-317 - Difficulty right-clicking on Tab +- Fixed issue MR-318 - Wrong tab gets selected when tab names overflow on the tab bar +- Fixed issue MR-321 - New connection panel doesn't get panel header if its the only one or is moved +- Fixed issue MR-322 - Connection Button not listing servers +- Added option to always show panel tabs. +- Fixed "Decryption failed. Padding is invalid and cannot be removed." notification. +- Fixed KiTTY opening in a separate window when using a saved session. + +## [1.70 Beta 2] - 2013-02-18 +### Added +- Added translations for Spanish (Argentina), Italian, Polish, Portuguese, Chinese (Simplified). +### Changed +- mRemoteNG now requires .NET Framework 3.0 instead of 2.0. +- Updated translations. +- Improved the use of Tab and Shift-Tab to cycle through entries in the Config grid. +- Improved loading of XML files from older versions of mRemote/mRemoteNG. +### Fixed +- Fixed issue MR-47 - Silent Installation Prompts for Language +- Fixed issue MR-54 - Error When disconnecting from SSL channel RDP +- Fixed issue MR-58 - Bug when duplicating connection in connection view +- Fixed issue MR-68 - Config Window Loses Options +- Fixed issue MR-71 - Minimizing mRemoteNG causes temporary re-size of Putty sessions (windows) +- Fixed issue MR-80 - Reconnect previous sessions +- Fixed issue MR-81 - Problem Duplicating Folder w/ Sub-Folders +- Fixed issue MR-85 - Microsoft .NET Framework warning +- Fixed issue MR-86 - Citrix GDI+ Error when screen is locked +- Fixed issue MR-96 - When pressing SHIFT+F4 to create a new connection inside a folder, the new connections doesn't inherit any properties from its parent +- Fixed issue MR-101 - Collapse all folders causes a NullReferenceException +- Fixed issue MR-165 - Can't close About window if it is the last tab +- Fixed issue MR-166 - Inheritance button is disabled on some connections +- Fixed issue MR-167 - Name and description of properties not show in inheritance list +- Fixed issue MR-171 - Inherit configuration not showing friendly names for each inherit component +- Fixed issue MR-172 - RDGatewayPassword is unencrypted in confCons.xml file +- Fixed issue MR-174 - Trailing Space on a Hostname/IP will cause the connection not to happen. +- Fixed issue MR-175 - Problem with focus when 2 or more PuTTY sessions opened +- Fixed issue MR-176 - Del key while editing connection name triggers 'Delete Connection' +- Fixed issue MR-178 - 3 different panels crashes all connections +- Fixed issue MR-181 - Sessions on startup +- Fixed issue MR-190 - Can't click on tab/session +- Fixed issue MR-196 - Cannot export list without usernames and passwords +- Fixed issue MR-199 - when using screen inside putty, screen becomes dead when reduce mremoteNG +- Fixed issue MR-202 - The Connection "Tab" show Ampersands as underscores. +- Fixed issue MR-214 - Hostname/IP reset +- Fixed issue MR-224 - Session tabs become un-clickable after duplicating a tab or opening a new one in the same panel +- Fixed issue MR-233 - Backslash at end of password prevents success of putty invocation and corresponding auto-logon +- Fixed issue MR-235 - Config file gets corrupted when leaving the password entry box with ESC +- Fixed issue MR-264 - Windows 8 support +- Fixed issue MR-277 - Inheritance configuration button not appear in configuration tab +- Fixed issue MR-284 - SSH: Text not showing properly +- Fixed issue MR-299 - mRemoteNG crashes while using remotely (Windows XP remote desktop) +- Fixed issue MR-306 - Fatal .NET exception on program start +- Fixed issue MR-313 - PuTTY window not maximized when loading from saved session + +## [1.70 Beta 1] - 2012-02-27 +### Added +- Added compatibility check for "Use FIPS compliant algorithms" security setting. +Improved reporting of errors when encrypting and decrypting connection files. +- Added partial Polish translation. +- Added the option to use a smart card for RD Gateway credentials. +- Added debugging symbols for VncSharpNG. +- A backup of the connection file is saved when it is loaded. The most recent ten backup copies are kept. +### Changed +- The panel tabs are now hidden if only one panel is open. +- Show changes live as connection tabs are being dragged around to change their order. +- Updated PuTTY to version 0.62. +- Made the use of CredSSP for RDP connections optional. +- Updated VncSharpNG to version 1.2.4440.36644. +### Fixed +- Fixed issue MR-77 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long. +- Fixed issue MR-78 - Renaming Connections +- Fixed issue MR-79 - MoveUp/Down item doesn't work + Sort button broken +- Fixed issue MR-93 - Regional settings problem when using SQL connection in mRemoteNG +- Fixed issue MR-97 - Integrate Dutch translation +- Fixed issue MR-98 - Integrate Russian and Ukranian translations +- Fixed issue MR-99 - Integrate Spanish translation +- Fixed issue MR-131 - RD Gateway does not respect setting for use different credentials +- Fix focus issue with RDP connections when changing tabs. +- Improved error handling when loading connection files. +- Fixed bugs with creating a new connection file. + +## [1.69] - 2011-12-09 +### Added +- Added Credits, License, and Version History items to the Start Menu and made Start Menu item names localizable. +### Changed +- Updated PuTTY to version 0.61 +- Binaries are now digitally signed +### Deprecated +- Disabled automatic updates in the portable edition +### Fixed +- Fixed issue #66 - Fresh Install Fails to Create Config +- Fixed issue #69 - Connection file gets erased +- Fixed issue #72 - scrollbars added to RDP window after minimize/restore of mRemoteNG +- Fixed file name in window title changing when exporting an XML file. +- Fixed Use only Notifications panel checkbox. + +## [1.68] - 2011-07-07 +### Fixed +- Fixed issue #48 - VerifyDatabaseVersion fails with new (empty) database tables. +- Fixed issue #60 - Can't save connections file +- Fixed issue #62 - Connection file error upon launch. + +## [1.67] - 2011-06-05 +### Added +- Added a language selection option so users can override the language if they don't want it automatically detected. +- Added partial French translation to the application. +- Added Thai translation to the installer. +- Added buttons for Add Connection, Add Folder, and Sort Ascending (A-Z) to the Connections panel toolbar. +- Added 15-bit Color RDP setting. +- Added Font Smoothing and Desktop Composition RDP settings. +- Added the mRemoteNG icon to the list of selectable icons for connection entries. +- Added confirmation before closing connection tabs. +### Changed +- Updated graphics in the installer to mRemoteNG logo. +- Moved the items under Tools in the Connections panel context menu up to the top level. +- Changed sorting to sort all subfolders below the selected folder. +- Allow sorting of connections if a connection entry is selected. +- Changed the Options page into a normal dialog. +- Changed to use full four part version numbers with major, minor, build, and revision. +- Changed hard coded SQL database name into a user configurable setting. +### Fixed +- Fixed migration of external tools configuration and panel layout from Local to Roaming folder. +- Disable ICA Hotkeys for Citrix connections.Fixes issue with international users. +- Fixed RD Gateway default properties and RDP reconnection count setting not being saved. +- Fixed bug 33 - IPv6 doesn't work in quick Connect box. +- Fixed rename edit control staying open when collapsing all folders. +- Fixed adding a connection entry if nothing is selected in the tree. +- Fixed loading of RDP Colors setting from SQL. +- Improved error handling when loading XML connection files. +- Fixed bug 42 - Maximized location not remembered with multiple monitors. +- Improved loading and saving of window location. +- Removed flickering on start up. +- Improved Reset Layout function. +- Fixed tab order of controls in Options dialog. +- Fixed bug 45 - Changing some settings in the config file may not save. + +## [1.66] - 2011-05-02 +### Fixed +- Fixed connections not working + +## [1.65] - 2011-05-02 +### Added +- Added code to the installer to check that the user is in the 'Power Users' or 'Administrators' group +### Changed +- Ctrl-Tab and Ctrl-Shift-Tab no longer work to switch tabs within mRemoteNG +### Fixed +- Fixed Ctrl-Tab and Ctrl-Shift-Tab not working in any other applications while mRemoteNG is running +- Fixed bug 36 - Install creates shortcuts only for the installing user +- Fixed bug 38 - Application uses the wrong Application Data settings folder (in Local Settings) + +## [1.64] - 2011-04-27 +### Added +- Added multilanguage support and German translation to the application +- Added Czech, Dutch, French, German, Polish, and Spanish translations to the installer +- Added Ctrl-Tab hotkey to switch to the next tab and Ctrl-Shift-Tab to switch to the previous tab +- Added Tab key to cycle through entries in the Config grid and Shift-Tab to cycle in reverse +- Added ability to configure external tools to run before or after a connection is established +- Added credit for the DockPanel Suite to the About page +### Changed +- Changed how new connection files are created +- Changed the internal namespace of the application to mRemoteNG instead of mRemote +- Updated DockPanel Suite to version 2.5 RC1 +- Updated VNCSharpNG to correct Ctrl and Alt key pass-through behavior +### Fixed +- Fixed bug 6 - VNC CTRL+key & keyboard combo mappings are broken +- Fixed bug 12 - Tab switch is not working in config panel +- Fixed bug 14 - RDP Connection authentication problem +- Fixed bug 22 - External App parameter macro expansion doesn't work with "try to integrate" +- Fixed bug 25 - Unhandled exception when mRemoteNG opens +- Fixed missing parameters in macro expansion for external tools +- Fixed RD Gateway and other inheritance bugs + +## [1.63] - 2010-02-02 +### Added +- Added View->Reset Layout menu item +- Added F11 shortcut key to View->Full Screen +- Added support for Credential Security Support Provider (CredSSP) which is required for Network Level Authentication (NLA) +- Added support for connecting through Remote Desktop Gateway servers +- Added PuTTY Settings item to tab context menu +### Changed +- New icon and logo +- Updated DockPanel Suite from 2.2.0 to 2.3.1 +- Popups can now be allowed in Internet Explorer by holding Ctrl+Alt when clicking a link +### Fixed +- Fixed problems moving or resizing the main window while PuTTY (SSH/telnet/rlogin/raw) connections are open +- Fixed PuTTY processes not closing on Vista and 7 with UAC enabled +- Fixed error if the mouse is clicked outside of the remote screen area of a VNC connection +- Fixed flashing and red lines at bottom of the window on first run +- Improved RDP error reporting + +## [1.62] - 2010-01-19 +### Added +- Switched to VncSharp, an open source VNC component +- VNC is supported again except for the following features: + - Windows authentication + - Setting the compression, encoding and color settings + - Connecting through a proxy server + - Free SmartSize mode (it does the same thing as Aspect SmartSize mode now) +- Added option to change how often updates are checked +- Added RDP, VNC and ICA version numbers to Components Check page +### Changed +- Rearranged the Options page and added an Updates tab +- Open Updates options tab before connecting for the first time +- No longer show About page on first run +- Renamed Quicky toolbar to Quick Connect toolbar +- Changed back to allowing toolbars to dock to the left or right of the menu bar and added gripper to move it around +### Fixed +- Fixed a bug with the inheritance buttons on the Config panel disappearing after awhile + +## [1.61] - 2010-01-14 +### Changed +- This version of mRemoteNG does not support VNC +### Removed +- Removed unlicensed SmartCode Solutions ViewerX VNC Viewer ActiveX + +## [1.60] - 2010-01-09 +### Added +- Added Report a Bug and Support Forum links to the Help menu +### Changed +- Changed name to mRemoteNG +- Changed filename delimiter in title bar from pipe to dash +- Changed default format for saving screenshot images to PNG +- Changed website addresses +- Changed website links in Help menu and About page to load within mRemoteNG instead of launching an external browser +- Moved Check for Updates to the Help menu +### Removed +- Removed snakes game Easter egg +- Removed references to visionapp Remote Desktop +### Fixed +- Fixed menu bar not staying docked to left side + +## [1.50] - 2010-01-06 +### Added +- Added the following formats to the "Save Connections As" function: + - mRemote CSV (standard CSV file with all properties) + - vRD 2008 CSV (standard CSV file with properties relevant for importing connections in vRD 2008) +### Fixed +- Fixed bug in inheritance code (SmartSize Mode and View Only properies were always shown when using VNC) + +## 1.49 +### Added +- Added features to the update function +- Added Announcement feature +### Changed +- mRemote and visionapp Remote Desktop 2008 merge! +- Read more here: ~~http://www.mremote.org/wiki/visionappMerge.ashx~~ +- or in the Announcement panel. +- Changed copyright notice in about screen and text when connecting via VNC +### Fixed +- Fixed some SQL-related problems + +## 1.48 +### Added +- Added startup components check with directions to fix component installation (also available in Tools - Components Check) +- Added "Try to integrate" option to Ext. Apps. If enabled mRemote will try to integrate the app into a tab container like any other connection protocol. +- Added Ext. App as protocol. Any Ext. App can be launched just like a normal connection. +- Added option to completely encrypt connection files (tools - options - advancecd) +- Added Rendering Engine option for HTTP/S protocols +- You can now use the Gecko (Firefox) rendering engine +``` +For this to work you need to download xulrunner (get it here: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/) +It must be the 1.8.1.3 release, 1.9.0.0 does NOT work! +Extract the contents to a path of your choice and set the correct path in Tools - Options - Advanced - XULrunner path +The interface is tab enabled and usage is generally very firefox-like. So you can open new tabs with Ctrl+T, jump to the location bar with Ctrl+L and so on... +``` +- Added "MAC Address", "User Field" fields and %MacAddress%, %UserField% variables to use in Ext. Apps +- Added descriptions for all fields in the config editor### Changed +### Changed +``` +ATTENTION! There is a bug in the automatic update code in 1.45 so you will have to download the new version manually from ~~http://www.mremote.org/wiki/Downloads.ashx~~ + +Example (DameWare Mini Remote Control): +Create a new Ext. App with the following properties: +Display Name: DameWare +Filename: c:\PathToYourDameWareInstallDir\DWRCC.exe +Arguments: -c: -h: -m:%hostname% -u:%username% -p:"%password%" -d:%domain% +Options: Try to integrate +Create a new connection and select Ext. App as protocol +Then choose DameWare in the Ext. App field +If you have problems with a particular app that takes a long time to start up consider setting a higher PuTTY/Ext. Apps wait time in Tools - Options - Advanced### Fixed +``` +``` +WARNING! There have been changes to the connections file/SQL tables +Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables +To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) +These are the added lines: +[RenderingEngine] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , +[MacAddress] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , +[UserField] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , +[ExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , +[InheritRenderingEngine] [bit] NOT NULL , +[InheritMacAddress] [bit] NOT NULL , +[InheritUserField] [bit] NOT NULL , +[InheritExtApp] [bit] NOT NULL , +``` +### Fixed +- Fixed bug in connections loading code when using SQL storage +- Fixed bug in reconnect code +- Fixed VNC sessions not refreshing screen automatically when switching between tabs or panels + +## 1.45 +### Added +- New german language build available +- Added support for RDP 6.1 (XP SP3/Vista SP1) features (Server Authentication, Console Session, TS Gateway not yet...) +- Added basic support for UltraVNC SingleClick (Tools - UltraVNC SingleClick); the listening port is configurable in the options +### Changed +``` +WARNING! There have been changes to the connections file/SQL tables +Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables +To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) +These are the added lines: +[RDPAuthenticationLevel] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , +[InheritRDPAuthenticationLevel] [bit] NOT NULL , +``` +### Fixed +- Fixed VNC connections not working on x64 +- Fixed screenshots save all feature overwriting files with the same name (not actually a bug, but rather a new feature ;) +- Fixed ICA Encryption Strength not inheriting properly + +## 1.43 +### Fixed +- Added function to send either the main form or a connection panel to another screen + - To send the form to another screen, right click the titlebar or the taskbar button and select "Send to..." + - If you want to send a panel to another screen, right click the panel's tab and do the same +### Fixed +- Fixed PuTTY connections not supporting credentials with spaces +- Fixed form not opening on last position when using multiple screens +- Fixed kiosk mode not working on secondary screen + +## 1.42 +### Added +- Added minimize to tray option +- Added option to enable switching to open connections with a single click on the corresponding connection in the tree +- Added button to test proxy settings +### Changed + - IMPORTANT NEWS: Please read the page that opens when you first start this release or go to: ~~http://www.mRemote.org/wiki/MainPage.ashx#Commercial~~ +### Fixed +- Fixed: If the active connection tab is a PuTTY connection, Alt+Tab to mRemote now focuses the PuTTY window +- Fixed encoding problem with PuTTY sessions that included spaces +- Fixed problem that made mRemote inaccesible when closing it on a second monitor and then disabling this monitor +- Fixed: Inheritance defaults of some new VNC properties were not saved in the portable package + +## 1.41 +### Added +- Added complete support for SmartCode's ViewerX and removed VncSharp +``` +Many thx to everyone who donated to make this happen!!! I didn't think that it wouldn't even take a week! =) +I hope everyone will be satisfied by the functions and possibilities this new control provides +If you use one of the non-setup packages you must register the control yourself +Open a cmd and change to the directory you installed mRemote to +Type regsvr32 scvncctrl.dll and click ok +``` +### Changed +- Changed shortcuts and added buttons for them to the view menu under "Jump To" because they were causing several problems +``` +WARNING! There have been changes to the connections file/SQL tables and the Ext. Apps XML file +Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables +To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) +``` + +## 1.40 +### Added +- Added (limited) support for the trial version of SmartCode's VNC ActiveX +``` +To enable it go to Options - Advanced and check "Try SmartCode VNC ActiveX" +When connecting a pop up will open, wait about 10 seconds, then click on "Trial" to continue +I will integrate this control fully into mRemote if I get enough Donations to buy the single developer license ($375,-) +So if you want to see better VNC support (All UltraVNC, TightVNC and RealVNC functions) in mRemote, please help me and donate some bucks +For donations either go to the mRemote Wiki (Info - Website) or click on Info - Donate to directly go to PayPal +I will announce the current donation amount every day (or as often as I can) on the Wiki main page +If you want to know more about the control go here: http://www.s-code.com/products/viewerx/ +``` +- Added feature to choose the panel a connection will open in when... + 1. no panel name was assigned in the properties + 2. you opened a connection with the option to choose the panel before connecting + 3. you checked "Always show panel selection dialog when opening connectins" in Options - Tabs & Panels +- Added Shortcuts to focus the standard panels + - Alt+C: Switch between Connections & Config panel + - Alt+S: Switch between Sessions & Screenshots panel + - Alt+E: Switch to Errors & Infos panel +- Added some new icons + +## 1.39 +### Added +- Added MagicLibrary.dll to the release again (forgot it in the 1.38 packages, sorry) +- Added auto-reconnect for ICA +- Added feature that automatically clears whitespaces in the Quicky Textfield +- Added special feature: Go to the set password dialog and type "ijustwannaplay" (without the quotes) in the password field... ;) + +## 1.38 +### Added +- Added automatic reconnect feature for RDP (Options - Advanced) +- Added connections drop-down to the quicky toolbar (same as the tray icon menu) +- Added setting in the options to enable/disable that double clicking on a connection tab closes it +- Added option to automatically set the hostname like the display name when creating new connections +### Fixed +- Fixed bug that caused the properties of a folder to be filled with "Object reference not set to an instance of an object." when adding a folder to the root with Default Inheritance enabled +- Fixed bug that made the properties of a newly added Connection to the root unavailable when Default Inheritance was enabled +- Fixed bug that the default settings for Pre/Post Ext. App, and their inheritance settings were not being saved +- Fixed bug in settings loading methods that caused the application to hang when an error occured +- Fixed bug in Ext. Apps panel that copied the properties of the previously selected Ext. App when "Wait for exit" was checked +- Fixed bug in the SQL Query that creates the tables needed by mRemote +- Attempt to fix the "Drop-Down on Screenshot" bug on some machines + +## 1.35 +### Added +- Added single instance mode (look in Options - Startup/Exit) - No cmd arguments supported yet! +- Added possibilty to start a Ext. App before connecting and on disconnect (e.g. for VPN/RAS) +- Added option to the Ext. Apps to tell mRemote to wait for the exit of the Ext. App +- Added encryption setting for ICA +### Changed +``` +WARNING! There have been changes to the connections file/SQL tables and the Ext. Apps XML file +Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables +Here's a list of new columns that need to be created before saving connections to an SQL server: +Name: ICAEncryptionStrength, Data-Type: varchar, Length: 64, Allow Nulls: No +Name: InheritICAEncryptionStrength, Data-Type: bit, Length: 1, Allow Nulls: No +Name: PreExtApp, Date-Type: varchar, Length: 512, Allow Nulls: Yes +Name: PostExtApp, Date-Type: varchar, Length: 512, Allow Nulls: Yes +Name: InheritPreExtApp, Date-Type: bit, Length: 1, Allow Nulls: No +Name: InheritPostExtApp, Date-Type: bit, Length: 1, Allow Nulls: No +``` + +## 1.33 +### Fixed +- Fixed problem that caused RDP connections not to initialize properly when using XP SP3 +- Fixed bug in Port Scan that prevented hosts with no hostname from being imported + +## 1.32 +### Added +- Added: Inheritance defaults can now be customized (look in the root properties of your connections tree) +### Changed +- Changed Target CPU to AnyCPU again as I think the x86 setting caused problems on x64 machines (although it shouldn't) +### Fixed +- Fixed bug that made password-secured connection files not load properly because the return value from the password screen was always null +- Fixed a lot of outdated code in the import functions (Import from XML, Import from AD, Import from RDP files) +- Fixed bug that caused properties with a ' character not to be saved properly when using SQL Server + +## 1.31 +### Fixed +- Small speed improvement to the port scanner +- Fixed bug that caused SQL live-update to not work when not using AD Authentication +- Fixed bug that caused Save As not to work + +## 1.30 +### Added +- Added experimental SQL Server with live-update (multi-user) support (see Help - Getting started - SQL Configuration) +- Added bunch of new icons to the UI, most of them by famfamfam.com +- Added dropdown button to Quicky Toolbar to choose protocol +- Many smaller changes and additions +### Fixed +- Fixed: Wrong default PuTTY session name +- Fixed bug in Port Scanner that caused an error when no DNS name could be resolved + +## 1.25 +### Added +- Added inheritance for folders +- Added port scan feature and possibility to import from a scan +- Added toolbar for Ext. Apps (see View - External Applications Toolbar) +- Added quick connect as toolbar +- Added code that creates a backup of the current connections file every time it is loaded (It's named YourConsFile.xml_BAK) +- Added description variable to Ext. Apps +### Fixed +- Fixed bug that allowed inheriting from root node +- Fixed bug that caused Ext. Apps launched from a connection tab to use the selected tree node instead of the current tab +- Fixed bug that caused mRemote not to save panel layout and Ext. Apps on exit + +## 1.24 +### Fixed +- Fixed a bug in connections loading mechanism that caused a corrupted connections file when upgrading from a previous version + +## 1.23 +### Added +- Added feature to remember which connections were opened on last runtime and reconnect to them on the next start (see Tools - Options - Startup/Exit) +- A command line switch is also available to cancel reconnecting (/noreconnect or /norc) +- Added Auto Save feature (Tools - Options - Connections - Auto Save every...) +- Added Ext. Apps to connection tab context menu +- Added better error handling for RDP connection creation +### Fixed +- Fixed problem with Sessions feature on 64bit systems +- Fixed Sessions feature not working when using global credentials +- Fixed several problems with the Active Directory OU picker control +- Fixed bug in Connection duplicate code that caused duplicated connection to still have previous tree node assigned + +## 1.20 +### Added +- Added External Applications feature (check the help section for more info) +- Added duplicate feature to Connections tree +### Fixed +- Fixed: MagicLibrary.dll was not included in the setup package + +## 1.16 +### Added +- New Domain: www.mRemote.org +- There's a new setting in the options to fine tune the time to wait until the window has been created +- Added reconnect feature in tab menu +### Fixed +- Fixed PuTTY connections appearing in a new window +- Fixed export not working + +## 1.15 +### Added +- Added: New portable package +- Added: Defaults for new connections can now be customized + - Click the root item and then the new Properties-like button with a small yellow star to get to the settings +### Fixed +- Fixed Import from Active Directory not working +- Fixed problem with single click connect not focusing correctly +- Fixed root node not being renamed after changing name in property grid + +## 1.10 +### Added +- Added support for setting a password to protect the connections file with (look in the root of your connections tree) +- Added RDP file import feature +- Added new command-line switch to reset panel's positions +- Added HTTPS as protocol +- Added HTTP/S basic authentication +- Added support for setting a Proxy server for automatic updates +### Changed +- Some changes in help section +### Fixed +- Fixed the bug that passwords stored in the options weren't decrypted when a connection was opened +- Fixed "bug" that prevented "Connect to console session" from working in RDC6.1 (Vista SP1 RC1/XP SP3 RC1) + +## 1.00 +Merry Christmas! =) +``` +1.00 is a (almost) complete rewrite of the whole application +The code base is now much cleaner and more (easily) extendable +New features include (but are not limited to): +Every part of the application is now integrated into panels which can be moved, docked and undocked, hidden, moved to another monitor, etc. +This makes many new and exciting ways to manage connection and application windows possible +You can for example open up 4 PuTTY sessions in 4 different panels and align them in the main application so you can use all 4 side by side - 2 on the upper side and 2 on the bottom for example +This can be done for EVERY part of the application, it's completely modular and customizable +Connection and folder (previously called containers) properties have moved to a new property grid control +Every setting (with the exclusion of the hostname, which wouldn't make any sense) can now be inherited from the parent folder +Connection file saving/loading is now handled a bit different (more in the help section) +Application restart is no longer nececary after changing options, they are active with a click of the OK button +Smart size can now be activated also if a connection is already open (in the right click menu of the active tab) +A panel name can be stored with every connection (or folder, if inherting) to always open the connection in the specified panel +And last but not least, many bugs have been fixed, though there are probably many new bugs aswell - Did I already mention this is a rewrite? ;) +I hope you like my work and if you do please consider donating on the mRemote website to support me a little. Any amount will do! Thx! +``` + +## 0.50 +### Added +- Added possibility to change resolution or display mode (Fit to window, Fullscreen, Smart size) +- Added new setting in options to show logon info on tab titles +- Added new feature that catches popup dialogs and puts them in a managed interface. This is another step to make mRemote a single window application. +- Added QuickConnect history and auto-complete functions +- Added a few new Icons (Linux, Windows, ESX, Log, Finance) +- Pressing escape switches back to the connection list +- There is a context menu that allows you to copy selected errors/warnings/infos to the clipboard (text only) or to delete them +- There also are settings in the option to change when to switch to the tab and to switch back to the normal behaviour of displaying message popups + +### Changed +- Connections file version is now 1.2 +### Removed +- Removed old Terminal (SSH, Telnet) control and embedded PuTTY instead +``` +This decision brings mostly good but also some bad news +The good news is that now everything that works in putty also works in mRemote +This means X11 forwarding, SSH port forwarding, session logging, appearance customization, etc. should be working fine now +It also brings some new protocols (Rlogin, RAW) +The bad news is that I cannot fully integrate Putty into mRemote because it is a standalone application and thus has it's own window handle +This means that you won't be able to use Ctrl+Tab to switch between tabs, catching errors or infos through the new Errors and Infos tab isn't possible, etc. +``` +### Fixed +- Improved options tab +- Fixed some form drawing bugs + +## 0.35 +### Added +- Added tab switching/closing hotkeys + - Switch to next tab: Ctrl+Tab + - Switch to previous tab: Ctrl+Shift+Tab + - Close active tab: Ctrl+W + - This does not and will probably never work with RDP connections! +### Changed +- Changed shortcuts to menu items in main menu as they interfered with some terminal key bindings +### Fixed +- Fixed bug in updating code that still displayed the current version in the old format (x.x.x.x instead of x.xx) +- Fixed bug where the colors setting was not correctly read after saving and reloading a connections file (only with 256 colors setting) +- Fixed bug that made connect to console session and fullscreen options not work +- Fixed bug that when opening options, update or about tab caused weird paddings next to the tab or other strange behaviour + +## 0.30 +### Added +- Added HTTP as protocol to allow for basic web-based administration +- Added new connections menu to the toolbar + - Left click on a connection connects + - Right click on a container or connection opens the config tab for the selected item +- Added two new connection context menu entries for quickly connecting to console session or connecting in fullscreen +- The connections tree can now be hidden + - To hide it right click on the splitter (the divider between the connections tree and the tabbing interface) +### Changed +- Changed "Redirect Key combinations (like in fullscreen)" to be disabled when in kiosk mode as it has no effect then anyway +### Fixed +Improved tray icon menu (just like the main connections menu) +- Several small bugfixes and code improvements +### Removed +- Removed overlay (RDP locking) feature in favor of simply grabbing input when clicking inside the control area + - I hope nobody is too sad that the nice looking overlay feature had to go, but..., well, it had to! ;-) + +## 0.20 +### Added +- Added Drag and Drop support for tabs +- Added tab context menu + - Switch to/from fullscreen + - Take a screenshot + - Transfer files via SCP/SFTP (SSH) + - Send special keys (VNC) + - Rename tabs + - Duplicate tabs (Create another instance of the connection) + - Show config + - Close tab (disconnect) +- Added middle click support for tabs (close/disconnect) +- Added SSH file transfer (SCP/SFTP) support +- Added Tools menu to the tree context menu +- Transfer files via SCP/SFTP (SSH) +- Import/Export features +- Sorting +### Changed +- Changed version format +### Removed +- Removed Fullscreen and Send special keys buttons from the main toolbar as they are now in the tab context menu +### Fixed +- Fixed the problem that caused mRemote to crash when dragging a parent node of the connections tree onto one of it's child nodes +- Fixed problem in importing mechanism that allowed importing connections including the root which resulted in multiple root items that couldn't be deleted +- Fixed problem with quick connect + +## 0.0.9.0 +### Added +- Added support for redirecting key combinations (Alt+Tab, Winkey, ...) +- Added Import/Export features +- Added Quick Connect Port support, just type the host you want to connect to followed by a ":" and then the port +- Added Connect/Disconnect buttons to connections context menu +- Added two new icons (Test Server | TST; Build Server | BS) +### Changed +- Many changes to the connections loading/saving mechanisms +- confCons version is now 1.0 +### Fixed +- Some code cleanup +- Fixed auto session info to only try to get session information when a RDP connection is selected +- Fixed AD Import feature (didn't care if imported items were computers, groups, users, ... ;) +- Fixed settings and connections not saving when installing updates from the auto-updater +- Fixed form size and location not saving properly when closing the application in minimized state or in maximized state on a secondary monitor + +## 0.0.8.2 +### Added +- Added SSH1 to Quick Connect GUI +### Changed +- Changed buffer size of terminal control, it's now 500 lines +### Fixed +- Fixed terminal connections not getting focus when changing tabs +- Fixed bug in terminal code that caused hitting "home" to show "~" instead of jumping to the start of the line +- Fixed bug that caused that hitting enter in mRemote wouldn't do anything when options was opened before + +## 0.0.8.0 +### Added +- Added code to check if the msrdp com control is registered +### Changed +- Many Improvements to the terminal control (ssh1(!), ssh2, telnet) +### Fixed +- Fixed bug that caused mRemote to crash when moving connection into root node (only with inheritance enabled) +- Fixed bug: Pressing delete when editing a node's name caused delete messagebox to show + +## 0.0.7.5 +### Added +- Added inheritance feature to inherit connection settings from parent container +### Changed +- Expanded/Collapsed state of tree nodes will now be saved +- Reduced auto session info delay to 700ms +- Some code maintainance +- Some corrections to connections tree and quick search behaviour +- Changed connections file version to 0.9 +### Fixed +- Fixed bug in TerminalControl that caused the error message "error loading string" +- Fixed: Settings saving on exit was broken in 0.0.7.0, this is fixed now +- Fixed connections context menu bug that made import from ad option inaccessible +- Fixed session info filling up with infos about hosts previously selected + +## 0.0.7.0 +### Changed +- Massive GUI redesign and changes, hope you like it! =) +### Fixed +- Fixed bug that made session info to query immediately after selecting a connection (when enabled), there is now a one second delay to prevent collecting session info for more than one host + +## 0.0.6.8 +### Added +- Added connection import feature for Active Directory +### Changed +- Tidied up project references +- Multiple changes to setup routine +### Fixed +- Improved error handling for auto-update +- Improved download handling for auto-update +- Fixed bug that made download finished/failed message box appear multiple times when update was canceled and re-downloaded +- Fixed bug where double-clicking a container opened all connections inside this container + +## 0.0.6.6 +### Changed +- Changed port textbox control to only allow digits +- Small changes to connection code for SSH +### Fixed +- Fixed port setting not saving (or always displaying default port for selected protocol) + +## 0.0.6.5 +### Added +- Added auto update feature +### Changed +- Changed: Multiple UI Changes (added shortcuts, rearranged menu items, ...) +### Fixed +- Fixed the problem where the connections file version was saved either with a dot or a comma, depending on system language +- Fixed not being able to connect to SSH2 hosts without specifying username and password +- Fixed several problems with Quick Connect +- Improved saving of config changes +- Fixed connections tab not closing when using SSH + +## 0.0.6.0 +### Added +- Added new protocols: SSH2 and Telnet +- Added first command line switch/parameter "/consfile" + - Ex.: mRemote.exe /consfile "%PathToYourConnectionsFile%" +- Added button to screenshots to delete a screenshot +- Added Host Status (Ping) feature +### Changed +- Many code rewrites and changes in almost every area +- Changed the way connections get loaded +- The default path for the connection file is no longer in the application directory but in the local application data folder. + - Ex.: c:\Documents and Settings\felix\Local Settings\Application Data\Felix_Deimel\mRemote\ + - If opening a connection file from a custom location (click on open link) saving will also occur in this file and not like in previous versions to the default connections file + - To import your old connection file please use the following procedure: start mRemote, click on "Open" and find your old connection file. Then click on "Save As" and save it with the default file name to the default location +- Changed the font and style of context menus +- Changed Quick Connect UI +### Fixed +- Fixed connection settings in config tab not saving when clicking another connection before jumping to another config field +- Fixed a bug where renaming a container caused the first connection in the same container to be renamed too + +## 0.0.5.0 R2 +### Fixed +- Fixed a bug that prevented connections from opening when icon files were assigned in a previous version of mRemote + +## 0.0.5.0 +### Added +- Added (Global) fullscreen / kiosk feature +- Added redirection settings for disk drives, printers, ports, smart cards and sound +- Added option to write a log file +- Added option to open new tabs on the right side of the currently selected tab +- Added possibility to connect to all nodes in a container +### Changed +- Changed session functions to work in background +- Changed icon choosing mechanism and added a bunch of default icons +- Changed: Containers with connection can now be deleted just like empty containers +- Changed screenshot functions to now collect all screenshots in one tab +- Changed: More settings can now be changed on container basis +- Changed config file version to 0.6 +- Changed: Small internal changes to the connection saving/creating and opening mechanisms +### Fixed +- Fixed "Display Wallpapers" and "Display Themes" settings, they are working now + +## 0.0.3.6 +### Added +- Added Feature to display an overlay when RDP connection tab has lost the focus, clicking on this gives the focus back to the control +- Added standard handlers for F2 (rename) and DEL (delete) keys in the treeview +- Added icon preview for connections in config tab +### Changed +- Changed the way new connections and containers are being created in the treeview. The pop up window will not be displayed any longer, instead everything is handled inplace by the treeview. +- Changed some minor UI related stuff +### Fixed +- Fixed bug in tab closing mechanism that caused icons (play/pause) to not be set on the correct tree nodes + +## 0.0.3.5 +### Added +- Added Feature to query and log off sessions on a remote machine and option to do this automatically +- Added Option to show icon in system tray with connection menu +### Changed +- Changed controls to flat style as I think this fits the whole application more than the old 3D look +- Multiple UI changes to eliminate annoying behaviour + +## 0.0.3.3 +### Added +- Added Feature to specify which login information to use when no info is provided in the config of a remote machine +### Fixed +- Fixed bug in Quick Find where trying to open a connection when no node was found caused an error +- Fixed bug where the main form was not rendered correctly when hiding top bar and using XP Themes +- Fixed bug in drag-drop routine that caused application to hang when trying to drop a node on one of it's child nodes +- Fixed bug where taskbar buttons for fullscreen rdp windows did not disappear after disconnecting + +## 0.0.3.2 +### Added +- Added new Save As Dialog with feature to only save specific connection settings +- Added Option to display Tooltips when hovering over host entries in the connection tree +- Added Option to ask at exit when there are open connections +### Fixed +- Fixed bug where saving connections file with spaces in the root node caused an error -> updated Connection File Version to 0.5 +- Fixed bug in options tab where the browse button for a custom connection file didn't do anything + +## 0.0.3.0 +### Added +- Added Options Tab + - Load connections file from different location + - Save/Don't Save connections file on exit + - Show current tab name in window title +- Added drag and drop functionality to the connections tree +- Added feature to hide top bar +- Added feature to send special keys (VNC) +### Changed +- Updated VncSharp Library to 0.88 (still pretty buggy) + +## 0.0.2.7 +### Added +- Added feature to save connection settings to all connections in the selected container +### Deprecated +- Disabled "Display Wallpaper" and "Display Themes" checkboxes as these features are not implemented +### Fixed +- Icon choosing bug fixed +- Taskbar button had no text when in fullscreen - fixed +- Fixed bug in Quick Connect GUI + +## 0.0.2.5 +### Added +- Added new connections toolstrip (same functions as context menu) +### Changed +- Splitter position is now saved on exit +### Fixed +- Quick connect button bug fixed +- Search field resize bug fixed + +## 0.0.2.4 +### Added +- Added Keep Alive Interval (1 Minute) +- Added Options to choose between RDP & VNC +- Added Port Setting for RDP +- Added Option to connect to console +- Added Menu Entries to move Connections & Containers up & down +### Changed +- Changed default color depth to 16bit +- Some small code improvements + +[Unreleased]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.20..HEAD +[1.76.20]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.19..v1.76.20 +[1.76.19]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.18..v1.76.19 +[1.76.18]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.17..v1.76.18 +[1.76.17]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.16..v1.76.17 +[1.76.16]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.15..v1.76.16 +[1.76.15]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.14..v1.76.15 +[1.76.14]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.13..v1.76.14 +[1.76.13]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.12...v1.76.13 +[1.76.12]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.11..v1.76.12 +[1.76.11]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.10..v1.76.11 +[1.76.10]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.9..v1.76.10 +[1.76.9]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.8..v1.76.9 +[1.76.8]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.7..v1.76.8 +[1.76.7]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.6..v1.76.7 +[1.76.6]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.5..v1.76.6 +[1.76.5]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha6..v1.76.5 +[1.76.4 Alpha 6]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha5..v1.76Alpha6 +[1.76.3 Alpha 5]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha4..v1.76Alpha5 +[1.76.2 Alpha 4]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha3..v1.76Alpha4 +[1.76.1 Alpha 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha2..v1.76Alpha3 +[1.76.0 Alpha 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha1..v1.76Alpha2 +[1.76.0 Alpha 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7012..v1.76Alpha1 +[1.75.7012]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7011..v1.75.7012 +[1.75.7011]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7010..v1.75.7011 +[1.75.7010]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7009..v1.75.7010 +[1.75.7009]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix8..v1.75.7009 +[1.75.7008]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix7..v1.75Hotfix8 +[1.75.7007]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix6..v1.75.Hotfix7 +[1.75.7006]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix5..v1.75Hotfix6 +[1.75.7005]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix4..v1.74Hotfix5 +[1.75.7004]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix3..v1.75Hotifx4 +[1.75.7003]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotifx2..v1.75Hotifx3 +[1.75.7002]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotifx1..v1.75Hotfix2 +[1.75.7001]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75..v1.75Hotfix1 +[1.75]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Beta3..v1.75 +[1.75 Beta 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Beta2..v1.75Beta3 +[1.75 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Beta1..v1.75Beta2 +[1.75 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Alpha3..v1.75Beta1 +[1.75 Alpha 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Alpha2..v1.75Alpha3 +[1.75 Alpha 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Alpha1..v1.75Alpha2 +[1.75 Alpha 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.74..v1.75Alpha1 +[1.74]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.74Beta2..v1.74 +[1.73 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.73Beta1..v1.73Beta2 +[1.73 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.72..v1.73Beta1 +[1.72]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71..v1.72 +[1.71]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71RC2..v1.71 +[1.71 Release Candidate 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71RC1..v1.71RC2 +[1.71 Release Candidate 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta5..v1.71RC1 +[1.71 Beta 5]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta4..1.71Beta5 +[1.71 Beta 4]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta3..1.71Beta4 +[1.71 Beta 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta2..v1.71Beta3 +[1.71 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta1..v1.71Beta2 +[1.71 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70..v1.71Beta1 +[1.70]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70RC2..v1.70 +[1.70 Release Candidate 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70RC1..v1.70RC2 +[1.70 Release Candidate 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70Beta2..v1.70RC1 +[1.70 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70Beta1..v1.70Beta2 +[1.70 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.69..v1.70Beta1 +[1.69]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.68..v1.69 +[1.68]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.67..v1.68 +[1.67]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.66..v1.67 +[1.66]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.65..v1.66 +[1.65]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.64..v1.65 +[1.64]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.63..v1.64 +[1.63]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.62..v1.63 +[1.62]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.61..v1.62 +[1.61]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.60..v1.61 +[1.60]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.50..v1.60 +[1.50]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.49..v1.50 diff --git a/mRemoteV1/CREDITS.md b/mRemoteV1/CREDITS.md new file mode 100644 index 00000000..690b7b3e --- /dev/null +++ b/mRemoteV1/CREDITS.md @@ -0,0 +1,137 @@ +# Contributors +## Current mRemoteNG dev team +David Sparer (github.com/sparerd) +Sean Kaim (github.com/kmscode) +Faryan Rezagholi (github.com/farosch) + +Thanks for the awesome new website! +Bennett Blodinger (github.com/benwa) + +Joe Cefoli (github.com/jcefoli) +countchappy (github.com/countchappy) +Tony Lambert +Julien Roncaglia (github.com/vbfox) +github.com/peterchenadded +Brandon Wulf (github.com/mrwulf) +Pedro Rodrigues (github.com/pedro2555) +github.com/dekelMP +Bruce (github.com/brucetp) +Camilo Alvarez (github.com/jotatsu) +github.com/DamianBis +github.com/pfjason +github.com/sirLoaf +github.com/Fyers +Vladimir Semenov (github.com/sli-pro) +Stephan (github.com/st-schuler) +Aleksey Reytsman (github.com/areytsman) +Cristian Abelleira (github.com/CrAbelleira) +github.com/MitchellBot + +## Past Contributors +Felix Deimel - mRemote original developer +Riley McArdle - mRemoteNG original developer + +Hayato Iriumi (github.com/hiriumi) +Jason Barbier +Wiktor Beryt +Lionel Caignec +Ruben d'Arco +Holger Henke +Tom Hiller +Apisitt Rattana +Andreas Rehm +David Vidmar +github.com/Brandhor +Dimitrij (github.com/Kvarkas) + +## Translators +Eugenio "Ryo567" Martínez +Mathieu Pape +Emanuel Silva +Robert Siwiec +Hayato Iriumi +Sebastien Thieury (github.com/SebThieu) +Riza Emet +Lukas Plachy (github.com/rheingold) +Gyuha Shin +Stefan (github.com/polluks) +github.com/emazv72 +Vladimir Semenov (github.com/sli-pro) +Marco Sousa (github.com/marcomsousa) +github.com/wwj402 +github.com/Fyers +github.com/pablomh + +## Included Source Code +Command Line Arguments Parser +Copyright © 2002 Richard Lopes +MIT License +http://www.codeproject.com/KB/recipes/command_line.aspx + +FilteredPropertyGrid +Copyright © 2006 Azuria +http://www.codeproject.com/KB/cs/FilteredPropertyGrid.aspx + +InputBox +Copyright © 2016 Jan Slama +http://www.csharp-examples.net/inputbox/ + +IP TextBox +Copyright © 2005 mawnkay +http://www.codeproject.com/Articles/11576/IP-TextBox + +PortableSettingsProvider +Copyright © 2014 crdx +https://github.com/crdx/PortableSettingsProvider + + +## Included Components +ADTree +Copyright © 2004 Marc Merritt +Copyright © 2008 Felix Deimel +http://www.codeproject.com/KB/selection/ADPickerCtrl.aspx + +DockPanel Suite +Copyright © 2018 @roken and @lextm (formerly Weifen Luo) +MIT License +https://github.com/dockpanelsuite/dockpanelsuite + +GeckoFX +Copyright © 2016 Tom Hindle +Mozilla Public License +https://bitbucket.org/geckofx/ + +log4net +Copyright © 2001-2015 The Apache Software Foundation +Apache License Version 2.0 +http://logging.apache.org/log4net/ + +Magic Library +Copyright © 2002-2003 Crownwood Consulting, Ltd. +Freely redistributable with attribution +http://www.dotnetmagic.com/magic_download.html + +PuTTY +Copyright © 1997-2017 Simon Tatham +MIT License +http://www.chiark.greenend.org.uk/~sgtatham/putty/ + +Silk Icon Set +Copyright © 2005-2008 FAMFAMFAM +Creative Commons Attribution 2.5 License +http://www.famfamfam.com/ + +SSH.NET +Copyright © 2016 +MIT License +https://github.com/sshnet/SSH.NET + +VncSharp +Copyright © 2004-2009 David Humphrey +GNU General Public License (GPL) Version 2 +https://github.com/humphd/VncSharp + +ObjectListView +Copyright © 2006-2016 Phillip Piper +GNU General Public License (GPL) Version 3 +https://sourceforge.net/projects/objectlistview/ diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 1d837238..d98f54cb 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -1063,6 +1063,12 @@ + + Always + + + Always + From 4a72a0535b22822b3a5f6d04bf5ae7a53ed1b05f Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 25 Apr 2019 03:36:41 +0200 Subject: [PATCH 04/38] beautified file --- CREDITS.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CREDITS.md b/CREDITS.md index 690b7b3e..68a2bdc1 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -135,3 +135,8 @@ ObjectListView Copyright © 2006-2016 Phillip Piper GNU General Public License (GPL) Version 3 https://sourceforge.net/projects/objectlistview/ + +Markdig +Copyright © 2016-2019 Alexandre Mutel +BSD 2-Clause "Simplified" +https://github.com/lunet-io/markdig From 527d0b85adb9f4a04904b517730fdfecda49614b Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 25 Apr 2019 03:37:10 +0200 Subject: [PATCH 05/38] Added Markdig markdown parser --- mRemoteV1/packages.config | 1 + 1 file changed, 1 insertion(+) diff --git a/mRemoteV1/packages.config b/mRemoteV1/packages.config index b9cdf9d4..71038af3 100644 --- a/mRemoteV1/packages.config +++ b/mRemoteV1/packages.config @@ -8,6 +8,7 @@ + From ee0fabca8e7c6b529a978c69681f6fd271f4f7e8 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 25 Apr 2019 03:38:41 +0200 Subject: [PATCH 06/38] revised about window to show markdown file as html in gecko web browser --- mRemoteV1/CREDITS.md | 124 +++++----- mRemoteV1/UI/Window/AboutWindow.Designer.cs | 202 ++++++++++++++++ mRemoteV1/UI/Window/AboutWindow.cs | 246 +++----------------- mRemoteV1/mRemoteV1.csproj | 6 + 4 files changed, 302 insertions(+), 276 deletions(-) create mode 100644 mRemoteV1/UI/Window/AboutWindow.Designer.cs diff --git a/mRemoteV1/CREDITS.md b/mRemoteV1/CREDITS.md index 690b7b3e..1c303ca1 100644 --- a/mRemoteV1/CREDITS.md +++ b/mRemoteV1/CREDITS.md @@ -1,37 +1,37 @@ # Contributors ## Current mRemoteNG dev team -David Sparer (github.com/sparerd) -Sean Kaim (github.com/kmscode) -Faryan Rezagholi (github.com/farosch) +[David Sparer](https://www.github.com/sparerd) +[Sean Kaim](https://www.github.com/kmscode) +[Faryan Rezagholi](https://www.github.com/farosch) -Thanks for the awesome new website! -Bennett Blodinger (github.com/benwa) +**Thanks for the awesome new website!** +[Bennett Blodinger](https://www.github.com/benwa) -Joe Cefoli (github.com/jcefoli) -countchappy (github.com/countchappy) +[Joe Cefoli](https://www.github.com/jcefoli) +[countchappy](https://www.github.com/countchappy) Tony Lambert -Julien Roncaglia (github.com/vbfox) -github.com/peterchenadded -Brandon Wulf (github.com/mrwulf) -Pedro Rodrigues (github.com/pedro2555) -github.com/dekelMP -Bruce (github.com/brucetp) -Camilo Alvarez (github.com/jotatsu) -github.com/DamianBis -github.com/pfjason -github.com/sirLoaf -github.com/Fyers -Vladimir Semenov (github.com/sli-pro) -Stephan (github.com/st-schuler) -Aleksey Reytsman (github.com/areytsman) -Cristian Abelleira (github.com/CrAbelleira) -github.com/MitchellBot +[Julien Roncaglia](https://www.github.com/vbfox) +[peterchenadded](https://www.github.com/peterchenadded) +[Brandon Wulf](https://www.github.com/mrwulf) +[Pedro Rodrigues](https://www.github.com/pedro2555) +[dekelMP](https://www.github.com/dekelMP) +[Bruce](https://www.github.com/brucetp) +[Camilo Alvarez](https://www.github.com/jotatsu) +[DamianBis](https://www.github.com/DamianBis) +[pfjason](https://www.github.com/pfjason) +[sirLoaf](https://www.github.com/sirLoaf) +[Fyers](https://www.github.com/Fyers) +[Vladimir Semenov](https://www.github.com/sli-pro) +[Stephan](https://www.github.com/st-schuler) +[Aleksey Reytsman](https://www.github.com/areytsman) +[Cristian Abelleira](https://www.github.com/CrAbelleira) +[MitchellBot ](https://www.github.com/MitchellBot) ## Past Contributors Felix Deimel - mRemote original developer Riley McArdle - mRemoteNG original developer -Hayato Iriumi (github.com/hiriumi) +[Hayato Iriumi](https://www.github.com/hiriumi) Jason Barbier Wiktor Beryt Lionel Caignec @@ -40,98 +40,86 @@ Holger Henke Tom Hiller Apisitt Rattana Andreas Rehm -David Vidmar -github.com/Brandhor -Dimitrij (github.com/Kvarkas) +[David Vidmar](https://www.github.com/Brandhor) +[Dimitrij](https://www.github.com/Kvarkas) ## Translators -Eugenio "Ryo567" Martínez +Eugenio *"Ryo567"* Martínez Mathieu Pape Emanuel Silva Robert Siwiec Hayato Iriumi -Sebastien Thieury (github.com/SebThieu) +[Sebastien Thieury](https://www.github.com/SebThieu) Riza Emet -Lukas Plachy (github.com/rheingold) +[Lukas Plachy](https://www.github.com/rheingold) Gyuha Shin -Stefan (github.com/polluks) -github.com/emazv72 -Vladimir Semenov (github.com/sli-pro) -Marco Sousa (github.com/marcomsousa) -github.com/wwj402 -github.com/Fyers -github.com/pablomh +[Stefan](https://www.github.com/polluks) +[emazv72](https://www.github.com/emazv72) +[Vladimir Semenov](https://www.github.com/sli-pro) +[Marco Sousa](https://www.github.com/marcomsousa) +[wwj402](https://www.github.com/wwj402) +[Fyers](https://www.github.com/Fyers) +[pablomh](https://www.github.com/pablomh) ## Included Source Code -Command Line Arguments Parser +[**Command Line Arguments Parser**](http://www.codeproject.com/KB/recipes/command_line.aspx) Copyright © 2002 Richard Lopes MIT License -http://www.codeproject.com/KB/recipes/command_line.aspx -FilteredPropertyGrid +[**FilteredPropertyGrid**](http://www.codeproject.com/KB/cs/FilteredPropertyGrid.aspx) Copyright © 2006 Azuria -http://www.codeproject.com/KB/cs/FilteredPropertyGrid.aspx -InputBox +[**InputBox**](http://www.csharp-examples.net/inputbox/) Copyright © 2016 Jan Slama -http://www.csharp-examples.net/inputbox/ -IP TextBox +[**IP TextBox**](http://www.codeproject.com/Articles/11576/IP-TextBox) Copyright © 2005 mawnkay -http://www.codeproject.com/Articles/11576/IP-TextBox -PortableSettingsProvider +[**PortableSettingsProvider**](https://https://www.github.com/crdx/PortableSettingsProvider) Copyright © 2014 crdx -https://github.com/crdx/PortableSettingsProvider - ## Included Components -ADTree +[**ADTree**](http://www.codeproject.com/KB/selection/ADPickerCtrl.aspx) Copyright © 2004 Marc Merritt Copyright © 2008 Felix Deimel -http://www.codeproject.com/KB/selection/ADPickerCtrl.aspx -DockPanel Suite +[**DockPanel Suite**](https://https://www.github.com/dockpanelsuite/dockpanelsuite) Copyright © 2018 @roken and @lextm (formerly Weifen Luo) MIT License -https://github.com/dockpanelsuite/dockpanelsuite -GeckoFX +[**GeckoFX**](https://bitbucket.org/geckofx/) Copyright © 2016 Tom Hindle Mozilla Public License -https://bitbucket.org/geckofx/ -log4net +[**log4net**](http://logging.apache.org/log4net/) Copyright © 2001-2015 The Apache Software Foundation Apache License Version 2.0 -http://logging.apache.org/log4net/ -Magic Library +[**Magic Library**](http://www.dotnetmagic.com/magic_download.html) Copyright © 2002-2003 Crownwood Consulting, Ltd. Freely redistributable with attribution -http://www.dotnetmagic.com/magic_download.html -PuTTY +[**PuTTY**](http://www.chiark.greenend.org.uk/~sgtatham/putty/) Copyright © 1997-2017 Simon Tatham MIT License -http://www.chiark.greenend.org.uk/~sgtatham/putty/ -Silk Icon Set +[**Silk Icon Set**](http://www.famfamfam.com/) Copyright © 2005-2008 FAMFAMFAM Creative Commons Attribution 2.5 License -http://www.famfamfam.com/ -SSH.NET +[**SSH.NET**](https://https://www.github.com/sshnet/SSH.NET) Copyright © 2016 MIT License -https://github.com/sshnet/SSH.NET -VncSharp +[**VncSharp**](https://https://www.github.com/humphd/VncSharp) Copyright © 2004-2009 David Humphrey GNU General Public License (GPL) Version 2 -https://github.com/humphd/VncSharp -ObjectListView +[**ObjectListView**](https://sourceforge.net/projects/objectlistview/) Copyright © 2006-2016 Phillip Piper GNU General Public License (GPL) Version 3 -https://sourceforge.net/projects/objectlistview/ + +[**Markdig**](https://https://www.github.com/lunet-io/markdig) +Copyright © 2016-2019 Alexandre Mutel +BSD 2-Clause "Simplified" + diff --git a/mRemoteV1/UI/Window/AboutWindow.Designer.cs b/mRemoteV1/UI/Window/AboutWindow.Designer.cs new file mode 100644 index 00000000..31ffbfae --- /dev/null +++ b/mRemoteV1/UI/Window/AboutWindow.Designer.cs @@ -0,0 +1,202 @@ +namespace mRemoteNG.UI.Window +{ + public partial class AboutWindow : BaseWindow + { + #region Windows Form Designer generated code + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutWindow)); + this.pnlTop = new System.Windows.Forms.Panel(); + this.pbLogo = new System.Windows.Forms.PictureBox(); + this.pnlBottom = new System.Windows.Forms.Panel(); + this.lblTitle = new mRemoteNG.UI.Controls.Base.NGLabel(); + this.lblVersion = new mRemoteNG.UI.Controls.Base.NGLabel(); + this.lblLicense = new mRemoteNG.UI.Controls.Base.NGLabel(); + this.lblCopyright = new mRemoteNG.UI.Controls.Base.NGLabel(); + this.tlpBottom = new System.Windows.Forms.TableLayoutPanel(); + this.gwbCredits = new Gecko.GeckoWebBrowser(); + this.gwbChangeLog = new Gecko.GeckoWebBrowser(); + this.tlpTop = new System.Windows.Forms.TableLayoutPanel(); + this.pnlTop.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pbLogo)).BeginInit(); + this.pnlBottom.SuspendLayout(); + this.tlpBottom.SuspendLayout(); + this.tlpTop.SuspendLayout(); + this.SuspendLayout(); + // + // pnlTop + // + this.pnlTop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(58)))), ((int)(((byte)(64))))); + this.pnlTop.Controls.Add(this.pbLogo); + this.pnlTop.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnlTop.ForeColor = System.Drawing.Color.White; + this.pnlTop.Location = new System.Drawing.Point(3, 3); + this.pnlTop.Name = "pnlTop"; + this.pnlTop.Size = new System.Drawing.Size(1111, 116); + this.pnlTop.TabIndex = 0; + // + // pbLogo + // + this.pbLogo.Image = global::mRemoteNG.Resources.Header_dark; + this.pbLogo.Location = new System.Drawing.Point(0, 0); + this.pbLogo.Name = "pbLogo"; + this.pbLogo.Size = new System.Drawing.Size(450, 120); + this.pbLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pbLogo.TabIndex = 1; + this.pbLogo.TabStop = false; + // + // pnlBottom + // + this.pnlBottom.BackColor = System.Drawing.SystemColors.Control; + this.pnlBottom.Controls.Add(this.lblTitle); + this.pnlBottom.Controls.Add(this.lblVersion); + this.pnlBottom.Controls.Add(this.lblLicense); + this.pnlBottom.Controls.Add(this.lblCopyright); + this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnlBottom.ForeColor = System.Drawing.SystemColors.ControlText; + this.pnlBottom.Location = new System.Drawing.Point(3, 125); + this.pnlBottom.Name = "pnlBottom"; + this.pnlBottom.Size = new System.Drawing.Size(1111, 194); + this.pnlBottom.TabIndex = 1; + // + // lblTitle + // + this.lblTitle.AutoSize = true; + this.lblTitle.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblTitle.ForeColor = System.Drawing.SystemColors.ControlText; + this.lblTitle.Location = new System.Drawing.Point(3, 3); + this.lblTitle.Name = "lblTitle"; + this.lblTitle.Size = new System.Drawing.Size(126, 31); + this.lblTitle.TabIndex = 0; + this.lblTitle.Text = "mRemoteNG"; + this.lblTitle.UseCompatibleTextRendering = true; + // + // lblVersion + // + this.lblVersion.AutoSize = true; + this.lblVersion.Font = new System.Drawing.Font("Segoe UI", 11F); + this.lblVersion.ForeColor = System.Drawing.SystemColors.ControlText; + this.lblVersion.Location = new System.Drawing.Point(3, 34); + this.lblVersion.Name = "lblVersion"; + this.lblVersion.Size = new System.Drawing.Size(55, 25); + this.lblVersion.TabIndex = 1; + this.lblVersion.Text = "Version"; + this.lblVersion.UseCompatibleTextRendering = true; + // + // lblLicense + // + this.lblLicense.AutoSize = true; + this.lblLicense.Font = new System.Drawing.Font("Segoe UI", 11F); + this.lblLicense.ForeColor = System.Drawing.SystemColors.ControlText; + this.lblLicense.Location = new System.Drawing.Point(3, 84); + this.lblLicense.Name = "lblLicense"; + this.lblLicense.Size = new System.Drawing.Size(54, 25); + this.lblLicense.TabIndex = 5; + this.lblLicense.Text = "License"; + this.lblLicense.UseCompatibleTextRendering = true; + // + // lblCopyright + // + this.lblCopyright.AutoSize = true; + this.lblCopyright.Font = new System.Drawing.Font("Segoe UI", 11F); + this.lblCopyright.ForeColor = System.Drawing.SystemColors.ControlText; + this.lblCopyright.Location = new System.Drawing.Point(3, 59); + this.lblCopyright.Name = "lblCopyright"; + this.lblCopyright.Size = new System.Drawing.Size(71, 25); + this.lblCopyright.TabIndex = 2; + this.lblCopyright.Text = "Copyright"; + this.lblCopyright.UseCompatibleTextRendering = true; + // + // tlpBottom + // + this.tlpBottom.ColumnCount = 2; + this.tlpBottom.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tlpBottom.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tlpBottom.Controls.Add(this.gwbCredits, 0, 0); + this.tlpBottom.Controls.Add(this.gwbChangeLog, 1, 0); + this.tlpBottom.Dock = System.Windows.Forms.DockStyle.Fill; + this.tlpBottom.Location = new System.Drawing.Point(0, 235); + this.tlpBottom.Name = "tlpBottom"; + this.tlpBottom.RowCount = 1; + this.tlpBottom.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tlpBottom.Size = new System.Drawing.Size(1117, 470); + this.tlpBottom.TabIndex = 13; + // + // gwbCredits + // + this.gwbCredits.Dock = System.Windows.Forms.DockStyle.Fill; + this.gwbCredits.FrameEventsPropagateToMainWindow = false; + this.gwbCredits.Location = new System.Drawing.Point(3, 3); + this.gwbCredits.Name = "gwbCredits"; + this.gwbCredits.NoDefaultContextMenu = true; + this.gwbCredits.Size = new System.Drawing.Size(552, 464); + this.gwbCredits.TabIndex = 12; + this.gwbCredits.UseHttpActivityObserver = false; + // + // gwbChangeLog + // + this.gwbChangeLog.Dock = System.Windows.Forms.DockStyle.Fill; + this.gwbChangeLog.FrameEventsPropagateToMainWindow = false; + this.gwbChangeLog.Location = new System.Drawing.Point(561, 3); + this.gwbChangeLog.Name = "gwbChangeLog"; + this.gwbChangeLog.NoDefaultContextMenu = true; + this.gwbChangeLog.Size = new System.Drawing.Size(553, 464); + this.gwbChangeLog.TabIndex = 13; + this.gwbChangeLog.UseHttpActivityObserver = false; + // + // tlpTop + // + this.tlpTop.ColumnCount = 1; + this.tlpTop.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tlpTop.Controls.Add(this.pnlTop, 0, 0); + this.tlpTop.Controls.Add(this.pnlBottom, 0, 1); + this.tlpTop.Dock = System.Windows.Forms.DockStyle.Top; + this.tlpTop.Location = new System.Drawing.Point(0, 0); + this.tlpTop.Name = "tlpTop"; + this.tlpTop.RowCount = 2; + this.tlpTop.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 122F)); + this.tlpTop.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 200F)); + this.tlpTop.Size = new System.Drawing.Size(1117, 235); + this.tlpTop.TabIndex = 14; + // + // AboutWindow + // + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.BackColor = System.Drawing.SystemColors.Control; + this.ClientSize = new System.Drawing.Size(1117, 705); + this.Controls.Add(this.tlpBottom); + this.Controls.Add(this.tlpTop); + this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ForeColor = System.Drawing.SystemColors.ControlText; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximumSize = new System.Drawing.Size(20000, 10000); + this.Name = "AboutWindow"; + this.TabText = "About"; + this.Text = "About"; + this.Load += new System.EventHandler(this.About_Load); + this.pnlTop.ResumeLayout(false); + this.pnlTop.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pbLogo)).EndInit(); + this.pnlBottom.ResumeLayout(false); + this.pnlBottom.PerformLayout(); + this.tlpBottom.ResumeLayout(false); + this.tlpTop.ResumeLayout(false); + this.ResumeLayout(false); + + } + #endregion + + internal Controls.Base.NGLabel lblCopyright; + internal Controls.Base.NGLabel lblTitle; + internal Controls.Base.NGLabel lblVersion; + internal Controls.Base.NGLabel lblLicense; + internal System.Windows.Forms.Panel pnlBottom; + internal System.Windows.Forms.PictureBox pbLogo; + private System.Windows.Forms.TableLayoutPanel tlpBottom; + private System.Windows.Forms.TableLayoutPanel tlpTop; + internal System.Windows.Forms.Panel pnlTop; + private Gecko.GeckoWebBrowser gwbCredits; + private Gecko.GeckoWebBrowser gwbChangeLog; + } +} diff --git a/mRemoteV1/UI/Window/AboutWindow.cs b/mRemoteV1/UI/Window/AboutWindow.cs index 75503c35..980387af 100644 --- a/mRemoteV1/UI/Window/AboutWindow.cs +++ b/mRemoteV1/UI/Window/AboutWindow.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Windows.Forms; using WeifenLuo.WinFormsUI.Docking; using System.IO; @@ -6,206 +6,23 @@ using System.Text; using mRemoteNG.App; using mRemoteNG.App.Info; using mRemoteNG.Themes; +using Markdig; +using System.Diagnostics; +using System.Drawing; +using Gecko; namespace mRemoteNG.UI.Window { - public class AboutWindow : BaseWindow + public partial class AboutWindow : BaseWindow { - #region Form Init - - internal Controls.Base.NGLabel lblCopyright; - internal Controls.Base.NGLabel lblTitle; - internal Controls.Base.NGLabel lblVersion; - internal Controls.Base.NGLabel lblLicense; - internal Controls.Base.NGTextBox txtChangeLog; - internal Panel pnlBottom; - internal PictureBox pbLogo; - internal Controls.Base.NGTextBox txtCredits; - internal Panel pnlTop; - - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = - new System.ComponentModel.ComponentResourceManager(typeof(AboutWindow)); - this.pnlTop = new System.Windows.Forms.Panel(); - this.pbLogo = new System.Windows.Forms.PictureBox(); - this.pnlBottom = new System.Windows.Forms.Panel(); - this.txtCredits = new mRemoteNG.UI.Controls.Base.NGTextBox(); - this.txtChangeLog = new mRemoteNG.UI.Controls.Base.NGTextBox(); - this.lblTitle = new mRemoteNG.UI.Controls.Base.NGLabel(); - this.lblVersion = new mRemoteNG.UI.Controls.Base.NGLabel(); - this.lblLicense = new mRemoteNG.UI.Controls.Base.NGLabel(); - this.lblCopyright = new mRemoteNG.UI.Controls.Base.NGLabel(); - this.pnlTop.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbLogo)).BeginInit(); - this.pnlBottom.SuspendLayout(); - this.SuspendLayout(); - // - // pnlTop - // - this.pnlTop.BackColor = - System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(58)))), ((int)(((byte)(64))))); - this.pnlTop.Controls.Add(this.pbLogo); - this.pnlTop.Dock = System.Windows.Forms.DockStyle.Top; - this.pnlTop.ForeColor = System.Drawing.Color.White; - this.pnlTop.Location = new System.Drawing.Point(0, 0); - this.pnlTop.Name = "pnlTop"; - this.pnlTop.Size = new System.Drawing.Size(1117, 122); - this.pnlTop.TabIndex = 0; - // - // pbLogo - // - this.pbLogo.Image = global::mRemoteNG.Resources.Header_dark; - this.pbLogo.Location = new System.Drawing.Point(0, 0); - this.pbLogo.Name = "pbLogo"; - this.pbLogo.Size = new System.Drawing.Size(450, 120); - this.pbLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; - this.pbLogo.TabIndex = 1; - this.pbLogo.TabStop = false; - // - // pnlBottom - // - this.pnlBottom.BackColor = System.Drawing.SystemColors.Control; - this.pnlBottom.Controls.Add(this.txtCredits); - this.pnlBottom.Controls.Add(this.txtChangeLog); - this.pnlBottom.Controls.Add(this.lblTitle); - this.pnlBottom.Controls.Add(this.lblVersion); - this.pnlBottom.Controls.Add(this.lblLicense); - this.pnlBottom.Controls.Add(this.lblCopyright); - this.pnlBottom.Dock = System.Windows.Forms.DockStyle.Fill; - this.pnlBottom.ForeColor = System.Drawing.SystemColors.ControlText; - this.pnlBottom.Location = new System.Drawing.Point(0, 122); - this.pnlBottom.Name = "pnlBottom"; - this.pnlBottom.Size = new System.Drawing.Size(1117, 583); - this.pnlBottom.TabIndex = 1; - // - // txtCredits - // - this.txtCredits.Anchor = - ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | - System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.txtCredits.BackColor = System.Drawing.SystemColors.Control; - this.txtCredits.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.txtCredits.Cursor = System.Windows.Forms.Cursors.Default; - this.txtCredits.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, - System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtCredits.ForeColor = System.Drawing.SystemColors.ControlText; - this.txtCredits.Location = new System.Drawing.Point(8, 131); - this.txtCredits.MinimumSize = new System.Drawing.Size(370, 260); - this.txtCredits.Multiline = true; - this.txtCredits.Name = "txtCredits"; - this.txtCredits.ReadOnly = true; - this.txtCredits.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.txtCredits.Size = new System.Drawing.Size(400, 449); - this.txtCredits.TabIndex = 7; - this.txtCredits.TabStop = false; - // - // txtChangeLog - // - this.txtChangeLog.Anchor = - ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | - System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txtChangeLog.BackColor = System.Drawing.SystemColors.Control; - this.txtChangeLog.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.txtChangeLog.Cursor = System.Windows.Forms.Cursors.Default; - this.txtChangeLog.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, - System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtChangeLog.ForeColor = System.Drawing.SystemColors.ControlText; - this.txtChangeLog.Location = new System.Drawing.Point(414, 131); - this.txtChangeLog.MinimumSize = new System.Drawing.Size(370, 260); - this.txtChangeLog.Multiline = true; - this.txtChangeLog.Name = "txtChangeLog"; - this.txtChangeLog.ReadOnly = true; - this.txtChangeLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.txtChangeLog.Size = new System.Drawing.Size(696, 449); - this.txtChangeLog.TabIndex = 10; - this.txtChangeLog.TabStop = false; - // - // lblTitle - // - this.lblTitle.AutoSize = true; - this.lblTitle.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, - System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblTitle.ForeColor = System.Drawing.SystemColors.ControlText; - this.lblTitle.Location = new System.Drawing.Point(3, 3); - this.lblTitle.Name = "lblTitle"; - this.lblTitle.Size = new System.Drawing.Size(126, 31); - this.lblTitle.TabIndex = 0; - this.lblTitle.Text = "mRemoteNG"; - this.lblTitle.UseCompatibleTextRendering = true; - // - // lblVersion - // - this.lblVersion.AutoSize = true; - this.lblVersion.Font = new System.Drawing.Font("Segoe UI", 11F); - this.lblVersion.ForeColor = System.Drawing.SystemColors.ControlText; - this.lblVersion.Location = new System.Drawing.Point(3, 34); - this.lblVersion.Name = "lblVersion"; - this.lblVersion.Size = new System.Drawing.Size(55, 25); - this.lblVersion.TabIndex = 1; - this.lblVersion.Text = "Version"; - this.lblVersion.UseCompatibleTextRendering = true; - // - // lblLicense - // - this.lblLicense.AutoSize = true; - this.lblLicense.Font = new System.Drawing.Font("Segoe UI", 11F); - this.lblLicense.ForeColor = System.Drawing.SystemColors.ControlText; - this.lblLicense.Location = new System.Drawing.Point(3, 84); - this.lblLicense.Name = "lblLicense"; - this.lblLicense.Size = new System.Drawing.Size(54, 25); - this.lblLicense.TabIndex = 5; - this.lblLicense.Text = "License"; - this.lblLicense.UseCompatibleTextRendering = true; - // - // lblCopyright - // - this.lblCopyright.AutoSize = true; - this.lblCopyright.Font = new System.Drawing.Font("Segoe UI", 11F); - this.lblCopyright.ForeColor = System.Drawing.SystemColors.ControlText; - this.lblCopyright.Location = new System.Drawing.Point(3, 59); - this.lblCopyright.Name = "lblCopyright"; - this.lblCopyright.Size = new System.Drawing.Size(71, 25); - this.lblCopyright.TabIndex = 2; - this.lblCopyright.Text = "Copyright"; - this.lblCopyright.UseCompatibleTextRendering = true; - // - // AboutWindow - // - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.BackColor = System.Drawing.SystemColors.Control; - this.ClientSize = new System.Drawing.Size(1117, 705); - this.Controls.Add(this.pnlBottom); - this.Controls.Add(this.pnlTop); - this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, - System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ForeColor = System.Drawing.SystemColors.ControlText; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximumSize = new System.Drawing.Size(20000, 10000); - this.Name = "AboutWindow"; - this.TabText = "About"; - this.Text = "About"; - this.Load += new System.EventHandler(this.About_Load); - this.pnlTop.ResumeLayout(false); - this.pnlTop.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbLogo)).EndInit(); - this.pnlBottom.ResumeLayout(false); - this.pnlBottom.PerformLayout(); - this.ResumeLayout(false); - } - - #endregion - #region Public Methods public AboutWindow() { WindowType = WindowType.About; DockPnl = new DockContent(); + if (!Xpcom.IsInitialized) + Xpcom.Initialize("Firefox"); InitializeComponent(); FontOverrider.FontOverride(this); ThemeManager.getInstance().ThemeChanged += ApplyTheme; @@ -233,6 +50,14 @@ namespace mRemoteNG.UI.Window pnlBottom.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground"); pnlTop.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background"); pnlTop.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground"); + + //gwbCredits.Font = new Font("Segoe UI", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0); + //gwbCredits.BackColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background"); ; + //gwbCredits.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground"); ; + + //gwbCHangelog.Font = new Font("Segoe UI", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0); + //gwbCHangelog.BackColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background"); ; + //gwbCHangelog.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground"); ; } private void ApplyEditions() @@ -277,9 +102,10 @@ namespace mRemoteNG.UI.Window try { lblCopyright.Text = GeneralAppInfo.Copyright; - lblVersion.Text = $@"Version {GeneralAppInfo.ApplicationVersion}"; + var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build(); + // AppVeyor seems to pull text files in UNIX format... This messes up the display on the about screen... // // This would be MUCH faster: @@ -293,38 +119,42 @@ namespace mRemoteNG.UI.Window if (File.Exists(GeneralAppInfo.HomePath + "\\CHANGELOG.md")) { + var changelog = ""; + using (var sR = new StreamReader(GeneralAppInfo.HomePath + "\\CHANGELOG.md", Encoding.UTF8, true)) { string line; var i = 0; - while ((line = sR.ReadLine()) != null && i < 128) + while ((line = sR.ReadLine()) != null) { - txtChangeLog.Text += line + Environment.NewLine; + changelog += line + Environment.NewLine; i++; - } - - if (i == 128) - { - txtChangeLog.Text += - $"{Environment.NewLine}****************************************{Environment.NewLine}See CHANGELOG.md for full History...{Environment.NewLine}****************************************{Environment.NewLine}"; + if (i > 128 && line == string.Empty) + { + changelog += $"{Environment.NewLine}***See CHANGELOG.md for full History...***{Environment.NewLine}"; + break; + } } } + + var result = Markdown.ToHtml(changelog, pipeline); + var color = ColorTranslator.ToHtml(ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background")); + result = "" + result + ""; + gwbChangeLog.LoadHtml(result); } if (File.Exists(GeneralAppInfo.HomePath + "\\CREDITS.md")) { - using (var sR = new StreamReader(GeneralAppInfo.HomePath + "\\CREDITS.md", Encoding.UTF8, true)) - { - string line; - while ((line = sR.ReadLine()) != null) - txtCredits.Text += line + Environment.NewLine; - } + var changelog = new StreamReader(GeneralAppInfo.HomePath + "\\CREDITS.md", Encoding.UTF8, true).ReadToEnd(); + var result = Markdown.ToHtml(changelog, pipeline); + var color = ColorTranslator.ToHtml(ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background")); + result = "" + result + ""; + gwbCredits.LoadHtml(result); } } catch (Exception ex) { - Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, - "Loading About failed" + Environment.NewLine + ex.Message, true); + Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Loading About failed" + Environment.NewLine + ex.Message, true); } } diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index d1d5df9f..9d16c5e1 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -62,6 +62,9 @@ ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll + + ..\packages\Markdig.0.16.0\lib\net40\Markdig.dll + @@ -744,6 +747,9 @@ Form + + AboutWindow.cs + ActiveDirectoryImportWindow.cs From 20a33eb69faffb841bf15e994c64c8eed6ebcefb Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 25 Apr 2019 03:58:26 +0200 Subject: [PATCH 07/38] removed implementation instructions, fixes #1153 --- .../Installer/Resources/License.rtf | 411 ++++++++++++++---- 1 file changed, 329 insertions(+), 82 deletions(-) diff --git a/InstallerProjects/Installer/Resources/License.rtf b/InstallerProjects/Installer/Resources/License.rtf index e1878024..0bbfa027 100644 --- a/InstallerProjects/Installer/Resources/License.rtf +++ b/InstallerProjects/Installer/Resources/License.rtf @@ -1,82 +1,329 @@ -{\rtf1\ansi\deff0{\fonttbl{\f0 \fswiss Helvetica;}{\f1 Courier;}} -{\colortbl;\red255\green0\blue0;\red0\green0\blue255;} -\widowctrl\hyphauto - -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 GNU GENERAL PUBLIC LICENSE\line - Version 2, June 1991\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 Preamble\par} -{\pard \ql \f0 \sa180 \li0 \fi0 The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 The precise terms and conditions for copying, distribution and modification follow.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 GNU GENERAL PUBLIC LICENSE\par} -{\pard \ql \f0 \sa180 \li0 \fi0 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\par} -{\pard \ql \f0 \sa0 \li360 \fi-360 0.\tx360\tab This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".\sa180\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.\par} -{\pard \ql \f0 \sa0 \li360 \fi-360 1.\tx360\tab You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.\sa180\par} -{\pard \ql \f0 \sa180 \li0 \fi0 You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 2.\tx360\tab You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\par} -{\pard \ql \f0 \sa180 \li720 \fi-360 a)\tx360\tab You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.\par} -{\pard \ql \f0 \sa180 \li720 \fi-360 b)\tx360\tab You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.\par} -{\pard \ql \f0 \sa180 \li720 \fi-360 c)\tx360\tab If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)\sa180\sa180\par} -{\pard \ql \f0 \sa180 \li0 \fi0 These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 3.\tx360\tab You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:\par} -{\pard \ql \f0 \sa180 \li720 \fi-360 a)\tx360\tab Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par} -{\pard \ql \f0 \sa180 \li720 \fi-360 b)\tx360\tab Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par} -{\pard \ql \f0 \sa180 \li720 \fi-360 c)\tx360\tab Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)\sa180\sa180\par} -{\pard \ql \f0 \sa180 \li0 \fi0 The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 4.\tx360\tab You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 5.\tx360\tab You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 6.\tx360\tab Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 7.\tx360\tab If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.\sa180\par} -{\pard \ql \f0 \sa180 \li0 \fi0 If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 8.\tx360\tab If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 9.\tx360\tab The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\sa180\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 10.\tx360\tab If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\par} -{\pard \ql \f0 \sa180 \li360 \fi0 \f1 NO WARRANTY\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 11.\tx360\tab BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 12.\tx360\tab IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par} -{\pard \ql \f0 \sa180 \li360 \fi0 \f1 END OF TERMS AND CONDITIONS\line -\line -How to Apply These Terms to Your New Programs\sa180\par} -{\pard \ql \f0 \sa180 \li0 \fi0 If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 \line -Copyright (C) \line -\line -This program is free software; you can redistribute it and/or modify\line -it under the terms of the GNU General Public License as published by\line -the Free Software Foundation; either version 2 of the License, or\line -(at your option) any later version.\line -\line -This program is distributed in the hope that it will be useful,\line -but WITHOUT ANY WARRANTY; without even the implied warranty of\line -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\line -GNU General Public License for more details.\line -\line -You should have received a copy of the GNU General Public License along\line -with this program; if not, write to the Free Software Foundation, Inc.,\line -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Also add information on how to contact you by electronic and paper mail.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 If the program is interactive, make it output a short notice like this when it starts in an interactive mode:\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 Gnomovision version 69, Copyright (C) year name of author\line -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\line -This is free software, and you are welcome to redistribute it\line -under certain conditions; type `show c' for details.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 The hypothetical commands {\f1 show w' and}show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than {\f1 show w' and}show c'; they could even be mouse-clicks or menu items--whatever suits your program.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 , 1 April 1989 Ty Coon, President of Vice\par} -{\pard \ql \f0 \sa180 \li0 \fi0 This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.\par} -} +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f4\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica;} +{\f5\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070409020205020404}Courier;}{\f5\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070409020205020404}Courier;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;} +{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} +{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f80\fbidi \fswiss\fcharset238\fprq2 Helvetica CE;}{\f81\fbidi \fswiss\fcharset204\fprq2 Helvetica Cyr;} +{\f83\fbidi \fswiss\fcharset161\fprq2 Helvetica Greek;}{\f84\fbidi \fswiss\fcharset162\fprq2 Helvetica Tur;}{\f85\fbidi \fswiss\fcharset177\fprq2 Helvetica (Hebrew);}{\f86\fbidi \fswiss\fcharset178\fprq2 Helvetica (Arabic);} +{\f87\fbidi \fswiss\fcharset186\fprq2 Helvetica Baltic;}{\f88\fbidi \fswiss\fcharset163\fprq2 Helvetica (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;} +{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);} +{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;} +{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} +{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} +{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} +{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; +\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 +\ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused +Normal Table;}}{\*\rsidtbl \rsid472762\rsid14623029}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Faryan Rezagholi}{\creatim\yr2019\mo4\dy25\hr3\min56} +{\revtim\yr2019\mo4\dy25\hr3\min57}{\version2}{\edmins1}{\nofpages5}{\nofwords2221}{\nofchars12664}{\nofcharsws14856}{\vern97}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} +\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect +\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701 +\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot14623029 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2 +\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 +\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang +{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa180\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 { +\rtlch\fcs1 \af5\afs24 \ltrch\fcs0 \f5\fs24\insrsid472762 \hich\af5\dbch\af31505\loch\f5 GNU GENERAL PUBLIC LICENSE\line Version 2, June 1991 +\par }{\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 +Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. +\par }{\rtlch\fcs1 \af5\afs24 \ltrch\fcs0 \f5\fs24\insrsid472762 \hich\af5\dbch\af31505\loch\f5 Preamble +\par }{\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all it +\hich\af4\dbch\af31505\loch\f4 s\hich\af4\dbch\af31505\loch\f4 + users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License ins +\hich\af4\dbch\af31505\loch\f4 t\hich\af4\dbch\af31505\loch\f4 ead.) You can apply it to your programs, too. +\par \hich\af4\dbch\af31505\loch\f4 When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this +\hich\af4\dbch\af31505\loch\f4 service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. +\par \hich\af4\dbch\af31505\loch\f4 To protect your rights, we need to make restrictions tha\hich\af4\dbch\af31505\loch\f4 +t forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. +\par \hich\af4\dbch\af31505\loch\f4 For example, if you distribute copies of such a \hich\af4\dbch\af31505\loch\f4 +program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. +\par \hich\af4\dbch\af31505\loch\f4 We protect your rights wit\hich\af4\dbch\af31505\loch\f4 h two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. +\par \hich\af4\dbch\af31505\loch\f4 Also, for each author's protection and ours, we want to make certain that everyone understands that the\hich\af4\dbch\af31505\loch\f4 +re is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors +\hich\af4\dbch\af31505\loch\f4 '\hich\af4\dbch\af31505\loch\f4 reputations. +\par \hich\af4\dbch\af31505\loch\f4 +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we +\hich\af4\dbch\af31505\loch\f4 have made it clear that any patent must be licensed for everyone's free use or not licensed at all. +\par \hich\af4\dbch\af31505\loch\f4 The precise terms and conditions for copying, distribution and modification follow. +\par }{\rtlch\fcs1 \af5\afs24 \ltrch\fcs0 \f5\fs24\insrsid472762 \hich\af5\dbch\af31505\loch\f5 GNU GENERAL PUBLIC LICENSE +\par }{\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 TERMS AND CONDITIONS FOR COPYING, DIS\hich\af4\dbch\af31505\loch\f4 TRIBUTION AND MODIFICATION +\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa180\widctlpar\tx360\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 0.\tab \hich\af4\dbch\af31505\loch\f4 +This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such pro +\hich\af4\dbch\af31505\loch\f4 +gram or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another lan +\hich\af4\dbch\af31505\loch\f4 g\hich\af4\dbch\af31505\loch\f4 uage. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". +\par }\pard \ltrpar\ql \li0\ri0\sa180\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The a\hich\af4\dbch\af31505\loch\f4 +ct of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program +\hich\af4\dbch\af31505\loch\f4 d\hich\af4\dbch\af31505\loch\f4 oes. +\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa180\widctlpar\tx360\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 1.\tab +You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intac +\hich\af4\dbch\af31505\loch\f4 t all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. +\par }\pard \ltrpar\ql \li0\ri0\sa180\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 You may charge a fee for the physical act of transferring a copy, and you may at yo +\hich\af4\dbch\af31505\loch\f4 ur option offer warranty protection in exchange for a fee. +\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa180\widctlpar\tx360\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 2.\tab +You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 \hich\af4\dbch\af31505\loch\f4 +above, provided that you also meet all of these conditions: +\par }\pard \ltrpar\ql \fi-360\li720\ri0\sa180\widctlpar\tx360\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 a)\tab +You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. +\par \hich\af4\dbch\af31505\loch\f4 b)\tab You must cause any work that you distribute or publish, that in wh\hich\af4\dbch\af31505\loch\f4 +ole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. +\par \hich\af4\dbch\af31505\loch\f4 c)\tab If the modified program normally reads commands interactively when run, you must cau\hich\af4\dbch\af31505\loch\f4 +se it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that user +\hich\af4\dbch\af31505\loch\f4 s\hich\af4\dbch\af31505\loch\f4 + may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not require +\hich\af4\dbch\af31505\loch\f4 d\hich\af4\dbch\af31505\loch\f4 to print an announcement.) +\par }\pard \ltrpar\ql \li0\ri0\sa180\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, +\hich\af4\dbch\af31505\loch\f4 +and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License +,\hich\af4\dbch\af31505\loch\f4 whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +\par \hich\af4\dbch\af31505\loch\f4 Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the in\hich\af4\dbch\af31505\loch\f4 +tent is to exercise the right to control the distribution of derivative or collective works based on the Program. +\par \hich\af4\dbch\af31505\loch\f4 In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a\hich\af4\dbch\af31505\loch\f4 + storage or distribution medium does not bring the other work under the scope of this License. +\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa180\widctlpar\tx360\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 3.\tab +You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sect\hich\af4\dbch\af31505\loch\f4 ions 1 and 2 above provided that you also do one of the following: +\par }\pard \ltrpar\ql \fi-360\li720\ri0\sa180\widctlpar\tx360\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 a)\tab +Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software i\hich\af4\dbch\af31505\loch\f4 nterchange; or, +\par \hich\af4\dbch\af31505\loch\f4 b)\tab +Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source co +\hich\af4\dbch\af31505\loch\f4 de, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, +\par \hich\af4\dbch\af31505\loch\f4 c)\tab Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allow\hich\af4\dbch\af31505\loch\f4 +ed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) +\par }\pard \ltrpar\ql \li0\ri0\sa180\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 +The source code for a work means the preferred form of the work for making modifications t\hich\af4\dbch\af31505\loch\f4 +o it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a specia +\hich\af4\dbch\af31505\loch\f4 l\hich\af4\dbch\af31505\loch\f4 + exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that comp +\hich\af4\dbch\af31505\loch\f4 o\hich\af4\dbch\af31505\loch\f4 nent itself accompanies the executable. +\par \hich\af4\dbch\af31505\loch\f4 If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the sourc +\hich\af4\dbch\af31505\loch\f4 e code, even though third parties are not compelled to copy the source along with the object code. +\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa180\widctlpar\tx360\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 4.\tab +You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, su\hich\af4\dbch\af31505\loch\f4 +blicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties +\hich\af4\dbch\af31505\loch\f4 r\hich\af4\dbch\af31505\loch\f4 emain in full compliance. +\par \hich\af4\dbch\af31505\loch\f4 5.\tab +You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do n +\hich\af4\dbch\af31505\loch\f4 +ot accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or w +\hich\af4\dbch\af31505\loch\f4 o\hich\af4\dbch\af31505\loch\f4 rks based on it. +\par \hich\af4\dbch\af31505\loch\f4 6.\tab +Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You ma +\hich\af4\dbch\af31505\loch\f4 y not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. +\par \hich\af4\dbch\af31505\loch\f4 7.\tab If, as a consequence of a court judgment or allegation of patent infringem\hich\af4\dbch\af31505\loch\f4 +ent or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you c +\hich\af4\dbch\af31505\loch\f4 a\hich\af4\dbch\af31505\loch\f4 +nnot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redist +\hich\af4\dbch\af31505\loch\f4 r\hich\af4\dbch\af31505\loch\f4 +ibution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. +\par }\pard \ltrpar\ql \li0\ri0\sa180\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 If any portion of this section is held in\hich\af4\dbch\af31505\loch\f4 +valid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. +\par \hich\af4\dbch\af31505\loch\f4 It is not the purpose of this section to induce you to infringe any patents or\hich\af4\dbch\af31505\loch\f4 + other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generou +\hich\af4\dbch\af31505\loch\f4 s\hich\af4\dbch\af31505\loch\f4 + contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a license +\hich\af4\dbch\af31505\loch\f4 e\hich\af4\dbch\af31505\loch\f4 cannot impose that choice. +\par \hich\af4\dbch\af31505\loch\f4 This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. +\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa180\widctlpar\tx360\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 8.\tab +If the distribution and/or use of the Program is restricted in certain countries either by patents or by copy\hich\af4\dbch\af31505\loch\f4 +righted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. +\hich\af4\dbch\af31505\loch\f4 \hich\af4\dbch\af31505\loch\f4 In such case, this License incorporates the limitation as if written in the body of this License. +\par \hich\af4\dbch\af31505\loch\f4 9.\tab The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in \hich\af4\dbch\af31505\loch\f4 +spirit to the present version, but may differ in detail to address new problems or concerns. +\par }\pard \ltrpar\ql \li0\ri0\sa180\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 +Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you h\hich\af4\dbch\af31505\loch\f4 +ave the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by t +\hich\af4\dbch\af31505\loch\f4 h\hich\af4\dbch\af31505\loch\f4 e Free Software Foundation. +\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa180\widctlpar\tx360\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 10.\tab +If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundati\hich\af4\dbch\af31505\loch\f4 +on, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software general +\hich\af4\dbch\af31505\loch\f4 l\hich\af4\dbch\af31505\loch\f4 y. +\par }\pard \ltrpar\ql \li360\ri0\sa180\widctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af5\afs24 \ltrch\fcs0 \f5\fs24\insrsid472762 \hich\af5\dbch\af31505\loch\f5 NO WARRANTY +\par }\pard \ltrpar\ql \fi-360\li360\ri0\sa180\widctlpar\tx360\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 \hich\af4\dbch\af31505\loch\f4 11.\tab +BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGR +\hich\af4\dbch\af31505\loch\f4 +AM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH Y +\hich\af4\dbch\af31505\loch\f4 O\hich\af4\dbch\af31505\loch\f4 U. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +\par \hich\af4\dbch\af31505\loch\f4 12.\tab IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDIS\hich\af4\dbch\af31505\loch\f4 +TRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDE +\hich\af4\dbch\af31505\loch\f4 R\hich\af4\dbch\af31505\loch\f4 +ED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +\par }\pard \ltrpar\ql \li360\ri0\sa180\widctlpar\wrapdefault\faauto\rin0\lin360\itap0\pararsid14623029 {\rtlch\fcs1 \af5\afs24 \ltrch\fcs0 \f5\fs24\insrsid472762 \hich\af5\dbch\af31505\loch\f5 END OF TERMS AND CONDITIONS\line \line }{\rtlch\fcs1 +\af4\afs24 \ltrch\fcs0 \f4\fs24\insrsid472762 +\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a +9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad +5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 +b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 +0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 +a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f +c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 +0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 +a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 +6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b +4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b +4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210007b740aaca0600008f1a0000160000007468656d652f7468656d652f +7468656d65312e786d6cec595b8bdb46147e2ff43f08bd3bbe49be2cf1065bb69336bb49889d943cceda636bb2238dd18c776342a0244f7d2914d2d28706fad6 +87521a68a0a12ffd310b1bdaf447f4cc489667ec71f6420aa1640d8b34face996fce39face48ba7aed51449d239c70c2e2965bbe52721d1c8fd898c4d3967b6f +d82f345c870b148f1165316eb90bccdd6bbb9f7e7215ed881047d801fb98efa0961b0a31db2916f9088611bfc26638866b13964448c069322d8e13740c7e235a +ac944ab5628448ec3a318ac0ededc9848cb033942edddda5f31e85d358703930a2c940bac68685c28e0fcb12c1173ca089738468cb8579c6ec78881f09d7a188 +0bb8d0724beacf2dee5e2da29dcc888a2db69a5d5ffd657699c1f8b0a2e64ca607f9a49ee77bb576ee5f01a8d8c4f5eabd5aaf96fb5300341ac14a532eba4fbf +d3ec74fd0cab81d2438bef6ebd5b2d1b78cd7f758373db973f03af40a97f6f03dfef07104503af4029dedfc07b5ebd1278065e81527c6d035f2fb5bb5eddc02b +5048497cb8812ef9b56ab05c6d0e99307ac30a6ffa5ebf5ec99caf50500d7975c929262c16db6a2d420f59d2078004522448ec88c50c4fd008aa3840941c24c4 +d923d3100a6f8662c661b85429f54b55f82f7f9e3a5211413b1869d6921730e11b43928fc34709998996fb39787535c8e9ebd7274f5f9d3cfdfde4d9b393a7bf +66732b5786dd0d144f75bbb73f7df3cf8b2f9dbf7ffbf1edf36fd3a9d7f15cc7bff9e5ab377ffcf92ef7b0e255284ebf7bf9e6d5cbd3efbffeebe7e716efed04 +1de8f0218930776ee163e72e8b608116fef820b998c5304444b768c7538e622467b1f8ef89d040df5a208a2cb80e36e3783f01a9b101afcf1f1a8407613217c4 +e2f1661819c07dc6688725d628dc947369611ecee3a97df264aee3ee2274649b3b40b191e5de7c061a4b6c2e83101b34ef50140b34c531168ebcc60e31b6acee +0121465cf7c928619c4d84f380381d44ac21199203a39a56463748047959d80842be8dd8ecdf773a8cda56ddc5472612ee0d442de487981a61bc8ee602453697 +4314513de07b48843692834532d2713d2e20d3534c99d31b63ce6d36b71358af96f49b2033f6b4efd345642213410e6d3ef710633ab2cb0e831045331b7640e2 +50c77ec60fa144917387091b7c9f9977883c873ca0786bbaef136ca4fb6c35b8070aab535a1588bc324f2cb9bc8e9951bf83059d20aca4061a80a1eb1189cf14 +f93579f7ff3b7907113dfde1856545ef47d2ed8e8d7c5c50ccdb09b1de4d37d6247c1b6e5db803968cc987afdb5d348fef60b855369bd747d9fe28dbeeff5eb6 +b7ddcfef5fac57fa0cd22db7ade9765d6ddea3ad7bf709a174201614ef71b57de7d095c67d189476eab915e7cf72b3100ee59d0c1318b86982948d9330f10511 +e1204433d8e3975de964ca33d753eecc1887adbf1ab6fa96783a8ff6d9387d642d97e5e3692a1e1c89d578c9cfc7e17143a4e85a7df51896bb576ca7ea717949 +40da5e8484369949a26a21515f0eca20a98773089a85845ad97b61d1b4b06848f7cb546db0006a795660dbe4c066abe5fa1e9880113c55218ac7324f69aa97d9 +55c97c9f99de164ca302600fb1ac8055a69b92ebd6e5c9d5a5a5768e4c1b24b4723349a8c8a81ec64334c65975cad1f3d0b868ae9bab941af46428d47c505a2b +1af5c6bb585c36d760b7ae0d34d69582c6ce71cbad557d2899119ab5dc093cfac3613483dae172bb8be814de9f8d4492def097519659c24517f1300db8129d54 +0d222270e25012b55cb9fc3c0d34561aa2b8952b20081f2cb926c8ca87460e926e26194f267824f4b46b2332d2e929287caa15d6abcafcf26069c9e690ee4138 +3e760ee83cb98ba0c4fc7a5906704c38bc012aa7d11c1378a5990bd9aafed61a5326bbfa3b455543e938a2b310651d4517f314aea43ca7a3cef2186867d99a21 +a05a48b2467830950d560faad14df3ae9172d8da75cf369291d34473d5330d55915dd3ae62c60ccb36b016cbcb35798dd532c4a0697a874fa57b5d729b4bad5b +db27e45d02029ec7cfd275cfd110346aabc90c6a92f1a60c4bcdce46cddeb15ce019d4ced32434d5af2dddaec52def11d6e960f0529d1fecd6ab168626cb7da5 +8ab4faf6a17f9e60070f413cbaf022784e0557a9848f0f09820dd140ed4952d9805be491c86e0d3872e60969b98f4b7edb0b2a7e502835fc5ec1ab7aa542c36f +570b6ddfaf967b7eb9d4ed549e4063116154f6d3ef2e7d780d4517d9d71735bef105265abe69bb32625191a92f2c45455c7d812957b67f81710888cee35aa5df +ac363bb542b3daee17bc6ea7516806b54ea15b0beadd7e37f01bcdfe13d7395260af5d0dbc5aaf51a89583a0e0d54a927ea359a87b954adbabb71b3daffd24db +c6c0ca53f9c86201e155bc76ff050000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72 +656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c08 +2e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd0 +8a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa +4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f +6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72 +656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f746865 +6d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210007b740aaca0600008f1a00001600000000000000000000000000d60200 +007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027000000000000000000000000 +00d40900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cf0a00000000} +{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d +617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 +6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 +656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} +{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; +\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; +\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; +\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; +\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; +\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; +\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; +\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; +\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; +\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; +\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; +\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; +\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; +\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; +\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; +\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; +\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; +\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; +\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; +\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; +\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; +\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; +\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; +\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; +\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; +\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; +\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; +\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; +\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000 +4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 +d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e500000000000000000000000030c4 +1a380afbd401feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file From cd66d335e87e2bbd7d037844d703ba3eefbe60a0 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 25 Apr 2019 11:07:35 +0200 Subject: [PATCH 08/38] code-cleanup --- mRemoteV1/UI/Window/AboutWindow.Designer.cs | 3 +- mRemoteV1/UI/Window/AboutWindow.cs | 97 +++++++++------------ 2 files changed, 42 insertions(+), 58 deletions(-) diff --git a/mRemoteV1/UI/Window/AboutWindow.Designer.cs b/mRemoteV1/UI/Window/AboutWindow.Designer.cs index 31ffbfae..5cfb5175 100644 --- a/mRemoteV1/UI/Window/AboutWindow.Designer.cs +++ b/mRemoteV1/UI/Window/AboutWindow.Designer.cs @@ -1,6 +1,6 @@ namespace mRemoteNG.UI.Window { - public partial class AboutWindow : BaseWindow + public partial class AboutWindow { #region Windows Form Designer generated code private void InitializeComponent() @@ -174,7 +174,6 @@ this.Name = "AboutWindow"; this.TabText = "About"; this.Text = "About"; - this.Load += new System.EventHandler(this.About_Load); this.pnlTop.ResumeLayout(false); this.pnlTop.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbLogo)).EndInit(); diff --git a/mRemoteV1/UI/Window/AboutWindow.cs b/mRemoteV1/UI/Window/AboutWindow.cs index 980387af..7891484c 100644 --- a/mRemoteV1/UI/Window/AboutWindow.cs +++ b/mRemoteV1/UI/Window/AboutWindow.cs @@ -1,15 +1,14 @@ using System; -using System.Windows.Forms; -using WeifenLuo.WinFormsUI.Docking; +using System.Drawing; using System.IO; using System.Text; +using Gecko; using mRemoteNG.App; using mRemoteNG.App.Info; +using mRemoteNG.Messages; using mRemoteNG.Themes; using Markdig; -using System.Diagnostics; -using System.Drawing; -using Gecko; +using WeifenLuo.WinFormsUI.Docking; namespace mRemoteNG.UI.Window { @@ -27,17 +26,21 @@ namespace mRemoteNG.UI.Window FontOverrider.FontOverride(this); ThemeManager.getInstance().ThemeChanged += ApplyTheme; ApplyLanguage(); + ApplyTheme(); + ApplyEditions(); + LoadDocuments(); } #endregion #region Private Methods - private void ApplyLanguage() - { - lblLicense.Text = Language.strLabelReleasedUnderGPL; - TabText = Language.strAbout; - Text = Language.strAbout; - } + + private void ApplyLanguage() + { + lblLicense.Text = Language.strLabelReleasedUnderGPL; + TabText = Language.strAbout; + Text = Language.strAbout; + } private new void ApplyTheme() { @@ -50,20 +53,12 @@ namespace mRemoteNG.UI.Window pnlBottom.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground"); pnlTop.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background"); pnlTop.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground"); - - //gwbCredits.Font = new Font("Segoe UI", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0); - //gwbCredits.BackColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background"); ; - //gwbCredits.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground"); ; - - //gwbCHangelog.Font = new Font("Segoe UI", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0); - //gwbCHangelog.BackColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background"); ; - //gwbCHangelog.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground"); ; } private void ApplyEditions() { #if PORTABLE - lblTitle.Text += " " + Language.strLabelPortableEdition; + lblTitle.Text += $@" {Language.strLabelPortableEdition}"; #endif } @@ -94,17 +89,14 @@ namespace mRemoteNG.UI.Window #region Form Stuff - private void About_Load(object sender, EventArgs e) + private void LoadDocuments() { - ApplyTheme(); - ApplyEditions(); - try { lblCopyright.Text = GeneralAppInfo.Copyright; lblVersion.Text = $@"Version {GeneralAppInfo.ApplicationVersion}"; - var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build(); + var backgroundColor = ColorTranslator.ToHtml(ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background")); // AppVeyor seems to pull text files in UNIX format... This messes up the display on the about screen... // @@ -117,44 +109,37 @@ namespace mRemoteNG.UI.Window // did not work at all despite it CLEARLY ending with \n when pulled from AppVeyor... // The Changelog is a bit long anyways... Limit the number of lines to something reasonable. - if (File.Exists(GeneralAppInfo.HomePath + "\\CHANGELOG.md")) - { - var changelog = ""; - - using (var sR = new StreamReader(GeneralAppInfo.HomePath + "\\CHANGELOG.md", Encoding.UTF8, true)) + if (!File.Exists(GeneralAppInfo.HomePath + @"\CREDITS.md") && !File.Exists(GeneralAppInfo.HomePath + @"\CHANGELOG.md")) return; + + var changelog = ""; + using (var sR = new StreamReader(GeneralAppInfo.HomePath + @"\CHANGELOG.md", Encoding.UTF8, true)) + { + string line; + var i = 0; + while ((line = sR.ReadLine()) != null) { - string line; - var i = 0; - while ((line = sR.ReadLine()) != null) - { - changelog += line + Environment.NewLine; - i++; - if (i > 128 && line == string.Empty) - { - changelog += $"{Environment.NewLine}***See CHANGELOG.md for full History...***{Environment.NewLine}"; - break; - } - } + changelog += line + Environment.NewLine; + i++; + if (i <= 128 || line != string.Empty) continue; + changelog += + $"{Environment.NewLine}***See CHANGELOG.md for full History...***{Environment.NewLine}"; + break; } - - var result = Markdown.ToHtml(changelog, pipeline); - var color = ColorTranslator.ToHtml(ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background")); - result = "" + result + ""; - gwbChangeLog.LoadHtml(result); } + var changelogHtml = Markdown.ToHtml(changelog, pipeline); + changelogHtml = $"{changelogHtml}"; - if (File.Exists(GeneralAppInfo.HomePath + "\\CREDITS.md")) - { - var changelog = new StreamReader(GeneralAppInfo.HomePath + "\\CREDITS.md", Encoding.UTF8, true).ReadToEnd(); - var result = Markdown.ToHtml(changelog, pipeline); - var color = ColorTranslator.ToHtml(ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background")); - result = "" + result + ""; - gwbCredits.LoadHtml(result); - } + var credits = new StreamReader(GeneralAppInfo.HomePath + @"\CREDITS.md", Encoding.UTF8, true).ReadToEnd(); + var creditsHtml = Markdown.ToHtml(credits, pipeline); + creditsHtml = $"{creditsHtml}"; + + gwbChangeLog.LoadHtml(changelogHtml); + gwbCredits.LoadHtml(creditsHtml); } catch (Exception ex) { - Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Loading About failed" + Environment.NewLine + ex.Message, true); + Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, + "Loading About failed" + Environment.NewLine + ex.Message, true); } } From 12c67f42446d1b6811f236e5c194d6b095a6e43e Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 25 Apr 2019 11:31:17 +0200 Subject: [PATCH 09/38] added link to full changelog --- mRemoteV1/UI/Window/AboutWindow.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mRemoteV1/UI/Window/AboutWindow.cs b/mRemoteV1/UI/Window/AboutWindow.cs index 7891484c..030bc37c 100644 --- a/mRemoteV1/UI/Window/AboutWindow.cs +++ b/mRemoteV1/UI/Window/AboutWindow.cs @@ -122,7 +122,7 @@ namespace mRemoteNG.UI.Window i++; if (i <= 128 || line != string.Empty) continue; changelog += - $"{Environment.NewLine}***See CHANGELOG.md for full History...***{Environment.NewLine}"; + $"{Environment.NewLine}***See [CHANGELOG.md](https://github.com/mRemoteNG/mRemoteNG/blob/develop/CHANGELOG.md) for full History...***{Environment.NewLine}"; break; } } From 9b9dfbe46a5f3a01a5c2a9e9bfcf58d080b7f8a1 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 25 Apr 2019 11:52:42 +0200 Subject: [PATCH 10/38] fix display of copyright sign --- mRemoteV1/UI/Window/AboutWindow.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mRemoteV1/UI/Window/AboutWindow.cs b/mRemoteV1/UI/Window/AboutWindow.cs index 030bc37c..595389f6 100644 --- a/mRemoteV1/UI/Window/AboutWindow.cs +++ b/mRemoteV1/UI/Window/AboutWindow.cs @@ -133,8 +133,8 @@ namespace mRemoteNG.UI.Window var creditsHtml = Markdown.ToHtml(credits, pipeline); creditsHtml = $"{creditsHtml}"; - gwbChangeLog.LoadHtml(changelogHtml); - gwbCredits.LoadHtml(creditsHtml); + gwbChangeLog.LoadHtml(changelogHtml.Replace("©", "©")); + gwbCredits.LoadHtml(creditsHtml.Replace("©", "©")); } catch (Exception ex) { From 7985344042e563b026e27f8719ee6bfd7a2c2f03 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Mon, 29 Apr 2019 08:41:20 -0500 Subject: [PATCH 11/38] updated changelog for #1389 --- CHANGELOG.TXT | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT index ee5f573d..1f333102 100644 --- a/CHANGELOG.TXT +++ b/CHANGELOG.TXT @@ -3,6 +3,7 @@ Features/Enhancements: ---------------------- #1414: Add "Remote Audio Capture" option for RDP +#1389: Connection config window refactoring. Default connection info buttons now always available. #1336: Added ability to run External tools on folders #1320: Added ability to favorite items in the connection tree #1318: Added support for saving connections in MySQL From 19ddc9de9753c002a413983236402801df03f3a2 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Mon, 29 Apr 2019 08:42:41 -0500 Subject: [PATCH 12/38] set the release date for 1.77.0 --- CHANGELOG.TXT | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT index 1f333102..e1f2108a 100644 --- a/CHANGELOG.TXT +++ b/CHANGELOG.TXT @@ -1,4 +1,4 @@ -1.77.0 (2019-xx-xx): +1.77.0 (2019-04-29): Features/Enhancements: ---------------------- From 60cef9fa49babd83a4d9602948493b4b0f11e5f9 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Mon, 29 Apr 2019 11:16:35 -0500 Subject: [PATCH 13/38] fixed installer for markdown files --- .../Installer/Fragments/MiscTextFilesFragment.wxs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InstallerProjects/Installer/Fragments/MiscTextFilesFragment.wxs b/InstallerProjects/Installer/Fragments/MiscTextFilesFragment.wxs index b5b84a53..f0742055 100644 --- a/InstallerProjects/Installer/Fragments/MiscTextFilesFragment.wxs +++ b/InstallerProjects/Installer/Fragments/MiscTextFilesFragment.wxs @@ -3,10 +3,10 @@ - + - + From 9994a214b55847644fdb058ef13c4f4a939906d1 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Mon, 29 Apr 2019 19:03:53 +0200 Subject: [PATCH 14/38] Jump between octet fields with tab, fixes #1423 --- mRemoteV1/UI/Controls/IPTextBox.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mRemoteV1/UI/Controls/IPTextBox.cs b/mRemoteV1/UI/Controls/IPTextBox.cs index b3f31ad7..034a926a 100644 --- a/mRemoteV1/UI/Controls/IPTextBox.cs +++ b/mRemoteV1/UI/Controls/IPTextBox.cs @@ -1,4 +1,4 @@ -/* Source modified from here: +/* Source modified from here: * http://www.codeproject.com/Articles/11576/IP-TextBox * Original Author: mawnkay */ @@ -70,6 +70,19 @@ namespace mRemoteNG.UI.Controls { // This call is required by the Windows.Forms Form Designer. InitializeComponent(); + SetTabSTopProperties(); + } + + private void SetTabSTopProperties() + { + Octet1.TabIndex = 0; + Octet2.TabIndex = 1; + Octet3.TabIndex = 2; + Octet4.TabIndex = 3; + Octet1.TabStop = true; + Octet2.TabStop = true; + Octet3.TabStop = true; + Octet4.TabStop = true; } protected override void OnLoad(EventArgs e) From c8c98ebc02968be213f6a81fe6be9d79932e2e44 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Mon, 29 Apr 2019 19:50:38 +0200 Subject: [PATCH 15/38] updated changelog --- mRemoteV1/CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mRemoteV1/CHANGELOG.md b/mRemoteV1/CHANGELOG.md index 8b2f740c..29300867 100644 --- a/mRemoteV1/CHANGELOG.md +++ b/mRemoteV1/CHANGELOG.md @@ -5,7 +5,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] ### Added -- #1141: 'Copy Hostname' option added to connection tree context menu - #951: Added property to Enable/Disable Clipboard Sharing for RDP connections - #928: Add context menu items to 'Close all but this' and 'Close all tabs to the right' - #1336: Added ability to run External tools on folders @@ -23,6 +22,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - #1141: 'Copy Hostname' option added to connection tree context menu - #1123: Added a dialog that will display when unhandled exceptions occur - #1102: Added a button to clear connections searchbox +- #1141: 'Copy Hostname' option added to connection tree context menu - #1042: Added a connection icon for OSX/MacOS - #951: Added property to Enable/Disable Clipboard Sharing for RDP connections - #929: Added the hostname to certain RDP error/disconnect messages where it was missing @@ -32,6 +32,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - #416: Added ability to Enable/Disable Clipboard Sharing for RDP connections - #321: Added support for displaying on HiDPI screens ### Changed +- #1419: Moved CHANGELOG.TXT to CHANGELOG.md and improved about window - #1223: Open External Links in Default Web Browser - #1129: Spanish translation improvements - #1072: Russian translation improvements @@ -51,6 +52,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - #1170: Prevent Options window from showing up in taskbar - #1064: "Esc" button does does not close some dialogs - #1044: Dragging (grabbing) the program window requires 2 clicks +- #1423: Using tab in IP textbox ## [1.76.20] - 2019-04-12 From 017934ab8ea3d25cff60d165a6251e3612680d4d Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Mon, 29 Apr 2019 21:46:47 +0200 Subject: [PATCH 16/38] open links in about form with system default browser --- mRemoteV1/UI/Window/AboutWindow.Designer.cs | 2 ++ mRemoteV1/UI/Window/AboutWindow.cs | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/mRemoteV1/UI/Window/AboutWindow.Designer.cs b/mRemoteV1/UI/Window/AboutWindow.Designer.cs index 5cfb5175..a1c9910f 100644 --- a/mRemoteV1/UI/Window/AboutWindow.Designer.cs +++ b/mRemoteV1/UI/Window/AboutWindow.Designer.cs @@ -132,6 +132,7 @@ this.gwbCredits.Size = new System.Drawing.Size(552, 464); this.gwbCredits.TabIndex = 12; this.gwbCredits.UseHttpActivityObserver = false; + this.gwbCredits.DomClick += new System.EventHandler(this.LinkClicked); // // gwbChangeLog // @@ -143,6 +144,7 @@ this.gwbChangeLog.Size = new System.Drawing.Size(553, 464); this.gwbChangeLog.TabIndex = 13; this.gwbChangeLog.UseHttpActivityObserver = false; + this.gwbChangeLog.DomClick += new System.EventHandler(this.LinkClicked); // // tlpTop // diff --git a/mRemoteV1/UI/Window/AboutWindow.cs b/mRemoteV1/UI/Window/AboutWindow.cs index 595389f6..05f8633d 100644 --- a/mRemoteV1/UI/Window/AboutWindow.cs +++ b/mRemoteV1/UI/Window/AboutWindow.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using System.Drawing; using System.IO; using System.Text; @@ -161,5 +162,11 @@ namespace mRemoteNG.UI.Window #endif #endregion + + private void LinkClicked(object sender, DomMouseEventArgs e) + { + Process.Start(((GeckoWebBrowser)sender).StatusText); + e.Handled = true; + } } } \ No newline at end of file From 70deb278e55cf13081a673a5af278213f8503ea8 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Mon, 29 Apr 2019 21:53:58 +0200 Subject: [PATCH 17/38] removed stale code and small code refractoring --- mRemoteV1/UI/Window/AboutWindow.cs | 63 +++++------------------------- 1 file changed, 9 insertions(+), 54 deletions(-) diff --git a/mRemoteV1/UI/Window/AboutWindow.cs b/mRemoteV1/UI/Window/AboutWindow.cs index 05f8633d..7dee515e 100644 --- a/mRemoteV1/UI/Window/AboutWindow.cs +++ b/mRemoteV1/UI/Window/AboutWindow.cs @@ -28,11 +28,10 @@ namespace mRemoteNG.UI.Window ThemeManager.getInstance().ThemeChanged += ApplyTheme; ApplyLanguage(); ApplyTheme(); - ApplyEditions(); LoadDocuments(); } - #endregion + #endregion Public Methods #region Private Methods @@ -41,6 +40,11 @@ namespace mRemoteNG.UI.Window lblLicense.Text = Language.strLabelReleasedUnderGPL; TabText = Language.strAbout; Text = Language.strAbout; + lblCopyright.Text = GeneralAppInfo.Copyright; + lblVersion.Text = $@"Version {GeneralAppInfo.ApplicationVersion}"; +#if PORTABLE + lblTitle.Text += $@" {Language.strLabelPortableEdition}"; +#endif } private new void ApplyTheme() @@ -56,37 +60,7 @@ namespace mRemoteNG.UI.Window pnlTop.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground"); } - private void ApplyEditions() - { -#if PORTABLE - lblTitle.Text += $@" {Language.strLabelPortableEdition}"; -#endif - } - -#if false - private void FillLinkLabel(LinkLabel llbl, string txt, string URL) - { - llbl.Links.Clear(); - - int Open = txt.IndexOf("["); - while (Open != -1) - { - txt = txt.Remove(Open, 1); - int Close = txt.IndexOf("]", Open); - if (Close == -1) - { - break; - } - txt = txt.Remove(Close, 1); - llbl.Links.Add(Open, Close - Open, URL); - Open = txt.IndexOf("[", Open); - } - - llbl.Text = txt; - } -#endif - - #endregion + #endregion Private Methods #region Form Stuff @@ -94,8 +68,6 @@ namespace mRemoteNG.UI.Window { try { - lblCopyright.Text = GeneralAppInfo.Copyright; - lblVersion.Text = $@"Version {GeneralAppInfo.ApplicationVersion}"; var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build(); var backgroundColor = ColorTranslator.ToHtml(ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("Dialog_Background")); @@ -144,29 +116,12 @@ namespace mRemoteNG.UI.Window } } -#if false - private void llblFAMFAMFAM_LinkClicked(Object sender, LinkLabelLinkClickedEventArgs e) - { - Runtime.GoToURL(Language.strFAMFAMFAMAttributionURL); - } - - private void llblMagicLibrary_LinkClicked(Object sender, LinkLabelLinkClickedEventArgs e) - { - Runtime.GoToURL(Language.strMagicLibraryAttributionURL); - } - - private void llblWeifenLuo_LinkClicked(Object sender, LinkLabelLinkClickedEventArgs e) - { - Runtime.GoToURL(Language.strWeifenLuoAttributionURL); - } -#endif - - #endregion - private void LinkClicked(object sender, DomMouseEventArgs e) { Process.Start(((GeckoWebBrowser)sender).StatusText); e.Handled = true; } + + #endregion Form Stuff } } \ No newline at end of file From dda6726a43ec01f269cdb4bc1279bad7e0c12586 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Mon, 29 Apr 2019 15:03:16 -0500 Subject: [PATCH 18/38] removed the unreleased section of the changelog for release --- CHANGELOG.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c2eea98..71a7eb87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,14 +3,6 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] -### Added -### Changed - - -### Fixed - - ## [1.77.0] - 2019-04-29 ### Added - #1414: Add "Remote Audio Capture" option for RDP From 7ea08a0f6b75f70329e23d3bce4779e3485b7717 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Mon, 29 Apr 2019 17:00:36 -0500 Subject: [PATCH 19/38] fixed changelog and credits links in the csproj --- mRemoteV1/CHANGELOG.md | 1566 ------------------------------------ mRemoteV1/CREDITS.md | 125 --- mRemoteV1/mRemoteV1.csproj | 8 +- 3 files changed, 4 insertions(+), 1695 deletions(-) delete mode 100644 mRemoteV1/CHANGELOG.md delete mode 100644 mRemoteV1/CREDITS.md diff --git a/mRemoteV1/CHANGELOG.md b/mRemoteV1/CHANGELOG.md deleted file mode 100644 index 29300867..00000000 --- a/mRemoteV1/CHANGELOG.md +++ /dev/null @@ -1,1566 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] -### Added -- #951: Added property to Enable/Disable Clipboard Sharing for RDP connections -- #928: Add context menu items to 'Close all but this' and 'Close all tabs to the right' -- #1336: Added ability to run External tools on folders -- #1320: Added ability to favorite items in the connection tree -- #1318: Added support for saving connections in MySQL -- #1293: Importing .rdp files now imports gateway settings -- #1246: Improved connections loading to tolerate missing attributes in the confCons xml file -- #1230: Added option to track the currently focused connection in the connection tree -- #1220: Added an Apple/Mac connection icon -- #1218: A splashscreen has been added when mRemoteNG starts -- #1216: Connection tree search bar can be placed at the top or bottom of connection tree -- #1201: The help files packaged with mRemoteNG have been rewritten -- #1186: Certain dialogs are not correctly using localized text for buttons -- #1170: The Options window no longer displays in the Windows taskbar when open -- #1141: 'Copy Hostname' option added to connection tree context menu -- #1123: Added a dialog that will display when unhandled exceptions occur -- #1102: Added a button to clear connections searchbox -- #1141: 'Copy Hostname' option added to connection tree context menu -- #1042: Added a connection icon for OSX/MacOS -- #951: Added property to Enable/Disable Clipboard Sharing for RDP connections -- #929: Added the hostname to certain RDP error/disconnect messages where it was missing -- #928: Add context menu items to 'Close all but this' and 'Close all tabs to the right' -- #907: Added option to disable trimming whitespace from username field -- #896: Added a "view only" mode for RDP connections -- #416: Added ability to Enable/Disable Clipboard Sharing for RDP connections -- #321: Added support for displaying on HiDPI screens -### Changed -- #1419: Moved CHANGELOG.TXT to CHANGELOG.md and improved about window -- #1223: Open External Links in Default Web Browser -- #1129: Spanish translation improvements -- #1072: Russian translation improvements -- #1016: Chinese (simplified) translation improvements -- #765: Port Scan Issues (single port scan option now available) -- #155: Replace MagicLibrary with DockPanelSuite -- #154: MR-139: Close Button on Each Tab - new default theme has a close button on each tab - - -### Fixed -- #1383: Fixed issue where default Computer OU was not showing up when importing from Active Directory -- #1248: RemoveMagicLib Bugs - various bugs that cropped up as a result of removing magiclib -- #1245: Options form takes nearly 3 seconds to appear when Theming is active -- #1240: Theming problem with NGNumericUpDown -- #1238: Connection panel not translated until opened for the first time -- #1186: Fixed several dialog boxes to use localized button text -- #1170: Prevent Options window from showing up in taskbar -- #1064: "Esc" button does does not close some dialogs -- #1044: Dragging (grabbing) the program window requires 2 clicks -- #1423: Using tab in IP textbox - - -## [1.76.20] - 2019-04-12 -### Fixed -- #1401: Connections corrupted when importing RDC Manager files that are missing certain fields - -## [1.76.19] - 2019-04-04 -### Fixed -- #1374: Vertical Scroll Bar missing in PuTTYNG after 0.70.0.1 & 0.71 updates - -## [1.76.18] - 2019-03-20 -### Fixeed -- #1365: PuTTY window not centered after 0.71 update - -## [1.76.16] - 2019-03-14 -### Fixed -- #1362: Updated PuTTYNG to 0.71 - -## [1.76.15] - 2019-03-09 -### Added -- Importing multiple files now only causes 1 save event, rather than 1 per file imported -### Fixed -- #1303: Exception on first connection with new SQL server database -- #1304: Resolved several issues with importing multiple RDP Manager v2.7 files - -## [1.76.14] - 2019-02-08 -### Changed -- #222: Pre-Release Test build for running on systems with FIPS Enabled - -## [1.76.12] - 2018-11-08 -### Added -- #1180: Allow saving certain connection properties locally when using database -### Fixed -- #1181: Connections sometimes dont immediately load when switching to sql feature -- #1173: Fixed memory leak when loading connections multiple times -- #1168: Autohide Connection and Config tab won't open when ssh connection active -- #1134: Fixed issue where opening a connection opens same connection on other clients when using database feature -- #449: Encrypt passwords saved to database - -## [1.76.11] - 2018-10-18 -### Fixed -- #1139: Feature "Reconnect to previously opened sessions" not working -- #1136: Putty window not maximized - -## [1.76.10] - 2018-10-07 -### Fixed -- #1124: Enabling themes causes an exception - -## [1.76.9] - 2018-10-07 -### Fixed -- #1117: Duplicate panel created when "Reconnect on Startup" and "Create Empty Panel" settings enabled -- #1115: Exception when changing from xml data storage to SQL -- #1110: Pressing Delete button during connection rename attempts to delete the connection instead of the text -- #1106: Inheritance does not work when parent has C# default type set -- #1092: Invalid Cast Exceptions loading default connectioninfo -- #1091: Minor themeing issues -- #853: Added some additional safety checks and logging to help address RDP crashes - -## [1.76.8] - 2018-08-25 -### Fixed -- #1088: Delete and Launch buttons are not disabled when last external tool deleted -- ${1}'Save connections after every edit' setting not honored -- #1082: Connections not given GUID if Id is empty in connection xml - -## [1.76.7] - 2018-08-22 -### Fixed -- #1076: Wrong object selected when duplicating connection then switching between properties and inheritance in config window -- #1068: Fixed some toolbar positioning bugs - -## [1.76.6] - 2018-08-03) -### Fixed -- #1062: Entering correct password when starting app does not load connections file - -## [1.76.5] - 2018-08-02) -### Removed -- #893: Removed unneeded files from build/package -### Fixed -- #1057: Hitting F2 with no connection node selected caused unhandled exception -- #1052: 'Switch to notification panel' feature does not always switch -- #1051: Tooltips always displayed regardless of 'Show description tooltips in connection tree' setting -- #1050: Config window retains access to previously selected node after loading new connections file -- #1045: Config window shows several incorrect properties for HTTPS connections -- #1040: Canceling "select panel" form does not cancel -- #1039: Set default theme when themes disabled -- #1038: Unable to add connection with active filter -- #1036: Exception when themes are active and options page closed on Connections then reopened -- #1034: Connection context menu not being translated -- #1030: Exception thrown if importing from port scan and no tree node is selected -- #1020: BackupFileKeepCount setting not limiting backup file count -- #1004: Duplicating root or PuTTy node through hotkey causes unhandled exception -- #1002: Disabling filtering without clearing keyword leaves filtered state -- #1001: Connection tree context menu hotkeys stop working and disappear in some cases -- #999: Some hotkeys stop working if File menu was called when PuTTy Saved Sessions was selected -- #998: Can sometimes add connection under PuTTY Sessions node -- #991: Error when deleting host in filtered view -- #971: Portable Settings now apply to any machine they are used on -- #961: Connections file overwritten if correct decryption password not provided -- #868: if statement returned the same value -- #762: Increased button size to fit locaized text - -## [1.76.4 Alpha 6] - 2018-06-03 -### Added -- #924: Notification for "No Host Specified" when clicking folders in quick-connect menu -- Added option for creating an empty panel on startup -### Changed -- #942: Improved Russian translation of several items -- #902: Menu bar can once again be moved. View -> "Lock toolbar positions" now also locks the menu position -### Fixed -- #948: Fixed issue where many menu item translations were not being used -- #938: Minor layout improvements on the Port Scan screen -- #916: Default properties were not being saved - -## [1.76.3 Alpha 5] - 2018-03-14 -### Fixed -- #911: Csv exports sometimes do not include all fields -- #807: Inheritance is sometimes turned on for nodes under root Connections node - -## [1.76.2 Alpha 4] - 2018-03-03 -### Fixed -- #899: DoNotPlay is Case Sensitive in XML Serialization - -## [1.76.1 Alpha 3] - 2018-02-24 -### Added -- #625: Added ability to import mRemoteNG formatted CSV files -- #648: The port scan ping timeout is now configurable -### Fixed -- Fixed a few Xml serialization bugs that would occur if boolean values weren't capitalized - -## [1.76.0 Alpha 2] - 2018-02-01 -### Added -- #838: Added an option to lock toolbars -- #836: Added a Read Only option for SQL connections -- #829: Add option that fixes connecting to Azure instances with LoadBalanceInfo -### Fixed -- #840: Fix theme loading issue in installer version -- #800: Fixed issue with PuTTY sessions not showing some extended characters -- Fixed a few toolbar layout issues - -## [1.76.0 Alpha 1] - 2017-12-08 -### Added -- #799: Added option to save connections on every edit -- #798: Added button to test SQL database connections on SQL options page -- #611: Added multi-ssh toolbar for sending commands to many SSH clients at once -- #519: You can now import normal mRemoteNG files - they do not have to be exports -- #504: Added Korean translation -- #485: The Domain field is now visible/editable for connection with the IntApp protocol -- #468: Default connection info Panel property is now saved -- #429: Added Czech translation -- #421: When a connection file cannot be loaded, we will now prompt for how to proceed rather than always exiting. -- #338: Added option to filter connection tree when searching -- #225: Added support for importing Remote Desktop Connection Manager v2.7 RDG files -- #207: Can now specify a working directory for external tools -- #197: Selecting a quick connect protocol will start a connection with that host -- #184: Improve search to include description and hostname fields -- #152: Added option "Show on Toolbar" to external tools -- Added more logging/notifications options -### Changed -- #784: Rearranged some settings in the Options pages to prevent overlap with some translations -- #704: Portable version now saves settings in application directory -- #671: Revamped UI theme system -- #608: The Help -> Support Forum menu item now directs users to our Reddit community -- #558: Connection tree now shows customizable icons instead of play/pause icon -- #493: Changed backup file name time stamp to use local system time rather than UTC -- #357: Updated GeckoFX to v45.45.0.32 -- Improved compatability between environments when building mRemoteNG from source -### Removed -- #797: Removed duplicate translation strings -### Fixed -- #747: Fixed unnecessary "PuttySessions.Watcher.StartWatching" error message -- #650: Fixed German translation typo -- #639: Fixed Italian translation typo -- #479: New connection tree nodes not starting in edit mode -- #233: Fixed crash that can occur when disconnecting from VNC server -- #195: Access to https with self-signed certificates not working - -## [1.75.7012] - 2017-12-01 -### Changed -- #810: Official mRemoteNG builds will now be signed with a DigiCert certificate -### Fixed -- #814: Fixed bug that prevented reordering connections by dragging -- #803: File path command line argument not working with network path - -## [1.75.7011] - 2017-11-07 -### Fixed -- #778: Custom connection file path command line argument (/c) not working -- #763: Sometimes minimizing folder causes connection tree to disappear -- #761: Connections using external tools do not start (introduced in 1.75.7009) -- #758: "Decryption failed" message when loading from SQL server -- Fixed issues with /resetpanels and /resetpos command line arguments -- Resolved bug where connection tree hotkeys would sometimes be disabled - -## [1.75.7010] - 2017-10-29 -### Fixed -- #756: CustomConsPath always null - -## [1.75.7009] - 2017-10-28 -### Changed -- #635: Updated PuTTYNG to 0.70 -- Minor error message correction -- Minor code refactoring -### Fixed -- #676: Portable version ignores /cons param on first run -- #675: Attempting to add new connection/folder does not work in some situations -- #665: Can not add new connection or new folder in some situations -- #658: Keep Port Scan tab open after import -- #646: Exception after click on import port scan -- #610: mRemoteNG cannot start /crashes for some users on Windows server 2012 R2 server -- #600: Missing horizontal scrollbar on Connections Panel -- #596: Exception when launching external tool without a connection selected -- #550: Sometimes double-clicking connection tree node began rename instead of connecting -- #536: Prevented log file creation when writeLogFile option is not set -- #529: Erratic Tree Selection when using SQL Database -- #482: Default connection password not decrypted when loaded -- #335: The Quick Connect Toolbar > Connection view does not show open connections with the play icon -- #176: Unable to enter text in Quick Connect when SSH connection active - - -## NO RELEASE - 2017-06-15 -### Fixed -- #466: Installer still failing on Win7 for updates - 1.75.7005 (Hotifx 5) -- #462: Remove no longer used files from portable version - 1.75.7003 (Hotfix 4) - -## [1.75.7008] - 2017-06-15 -### Changed -- Minor updates to the installer build -### Fixed -- #589: MSI doesn't update with newer PuTTYNG version that fixes #583 (Again, Sorry!) - -## [1.75.7007] - 2017-06-14 -### Fixed -- #583: SSH (PuTTYNG) Sessions are not properly integrated into the main mRemoteNG window (Sorry!) - -## [1.75.7006] - 2017-06-13 -### Changed -- #531: Update PuTTYNG to 0.69 -### Fixed -- #377: Use all space on About page -- #527: Additional protections to avoid problems on update check in heavily firewalled environments -- #530: Fixed issue where using External Tool on existing connection causes creation of 'New Connection' entry -- #546: Quick Connect from notification area icon displays warning when clicking on a folder (see #334) - -## [1.75.7005] - 2017-04-27 -### Changed -- #410: Update PuTTYNG to 0.68 -- Minor code cleanup/optimizations/null checks -### Fixed -- #434: Fix complier warnings CA1049 & CA2111 -- #442: Fixed issue loading PuTTY sessions that have spaces in the name -- #502: Problems with ParentID for Duplicated Containers/Connections with SQL Connection Storage -- #514: Expanded property not saved/loaded properly from SQL -- #518: Exception when Importing File - -## [1.75.7003] - 2017-03-24 -### Fixed -- #464: Resolved issue when importing a connections file while using SQL server feature - -## [1.75.7002] - 2017-03-10 -### Fixed -- #448: Resolved issue with SQL saving - -## [1.75.7001] - 2017-03-10 -### Changed -- #408: Update SQL scripts - -## [1.75 hotfix 1] - 2017-03-06 -### Changed -- #437: Modify version numbering scheme -### Fixed -- #422: Uncaught exception when clicking in connection tree whitespace -- #312: Resolved KeePass auto-type issue -- #427: Export does not respect filtering user/password/domain - -## [1.75] - 2017-03-01 -### Known Issues -- File hash check will fail when updating from 1.75 Beta 1 to newer versions. - - Exception will be: "MD5 Hashes didn't match!" for 1.75 Beta 1 - 1.75 RC1 -### Added -- #344: Use SHA512 File Hashes to validate downloads (in the update mechanism & posted to the Downloads page) -- Added Release Channels to the update check functionality allowing users to select one of 3 release channels for updates: Stable, Beta, Dev -- #360: Help -> About, Version # is now selectable/copyable -- #221: RDP: Optional disconnect after X number of minutes of inactivity -### Changed -- The usual general code clean up and refactoring -- #325: Code clean up and additional logging for External Tools based connections -- #298: Code clean up and additional logging around application startup -- #291, #236: External Tools code clean up and additional logging -### Fixed -- #369: Reset Layout Option Does Not Reset Notification Pane -- #362: Invalid cast exception when using the Notification Area Icon minimize/restore -- #334: Quick Connect displays warning when clicking on a folder -- #325: When using a connection with an external app, results in opening the same external app continuously -- #311: Import from Active Directory does not use machine's domain by default -- #258: Rename Tab dialog - populate original name in dialog (1.72 functionality) -- #211, #267: Recursive AD Import wasn't fully functional - -## [1.75 Beta 3] - 2016-12-01 -### Known Issues -- Portable build MD5 check will fail when updating from 1.75 Beta 1 to newer versions. -### Fixed -- #289: Install fails during update process (only affects 1.75 beta 1 - 1.75 beta 2) - -## [1.75 Beta 2] - 2016-12-01 -### Added -- #273: Added Turkish translation provided by forum user "rizaemet" -- #217: Create user manual documentation for the SSH File Transfer feature -### Fixed -- #254: Component check window position issues and uncaught exception -- #260: Crash when attempting to load fully encrypted confCons v2.5 -- #261: Double clicking folder in treeview doesn't expand it in 1.75 beta1 -- #271: Install package is not using the last installation path -- #278: Silent installs not detecting prerequisites - -## [1.75 Beta 1] - 2016-11-15 -### Added -- MR-971: Added Right Click method to Port Scan to import discovered hosts -- MR-1000, - #211: Sub OU AD Import -- #172: Implement "audioqualitymode" for RDP sessions -- #160: Allow portable version to perform an update check (and download the latest .zip) -- #157: Implement new cryptography providers (See Tools -> Options -> Security) -### Changed -- Lots of code clean up and refactoring -- Limit log file size to 1 main log + 5 backups * 10MB. -- Minor UI Tweak: Default Menubar and QuickConnect Bar to same line -- MR-364: Removed "Announcement" functionality -- MR-366: Show PuTTY type and version on components check screen -- MR-586: Reduce HTTP/HTTPS document title length that is appended to the connection tab title -- MR-938: Adjust RDP Resolution list (ensure most common resolutions were available) -- MR-975: Replaced TreeView with TreeListView for displaying connection tree. This was a large change which separated the GUI from the domain model. -- #144: Removed export option for "VisionApp Remote Desktop 2008" -- MR-220: Don't close the AD importer after import -- #167: fix/implement the update check (was disabled in 1.74 as part of the C# conversion) -### Fixed -- MR-967: File transfer doesn't work when specifying full path and file name (as prompted) -- MR-979: switched to notifications panel incorrectly (when configured NOT to do so) - -## [1.75 Alpha 3] - 2016-08-12 -### Added -- MR-896: Added prerequisite installer check for KB2574819. Prevents "Class not registered" errors when opening RDP connections. -### Changed -- PR-130: Fix Scan button width to fit Russian translation -### Removed -- MR-946: Remove old/insecure SharpSSH and related components. Replace with SSH.NET for File Transfer Functionality -### Fixed -- MR-965, MR-871, MR-629: Error 264 on RDP Connect attempt - Added timeout value to Tools -> Options -> Connections - -## [1.75 Alpha 2] - 2016-08-03 -### Added -- MR-961, PR-133: Option to reconnect all currently opened connection tabs -- MR-917: Improved cryptographic support -### Changed -- Updated GeckoFx package -- Updated DockPanelSuite library to 2.10 Final -- Japanese translation updated -- MR-942: Refactored code relating to loading the connections file -### Fixed -- MR-910: Fixes to support Remote Desktop Gateways -- MR-874: Incorrect RDP prerequisite check in installer - -## [1.75 Alpha 1] - 2016-07-08 -### Changed -- Additional code cleanup -### Fixed -- MR-905: mRemoteNG crashes at startup (in FIPS policy check) -- MR-902: mRemoteNG crashes after locking/unlocking the local system after loading a VNC connection - -## [1.74] - 2016-06-28 -### Added -- MR-821: Initial Japanese translation included -### Changed -- New operating system requirements - - Windows 7 SP1 (with RDP Client v8: KB2592687/KB2923545) or later - - .NET Framework 4 or later -- XULRunner is no longer required for Gecko support (see below) -- Converted source from Visual Basic to C Sharp -- Lots of code refactoring/clean up/general stability changes -- Updated to latest DockPanelSuite and enabled a slick new theme! -- MR-145: Installer is now MSI based -- MR-255: Updated RDP Client to version 8 -- MR-389: Updates to IE rendering engine - - Support for latest version of IE (9-11) - - Dropped support for IE 7 & IE 8 -- MR-850: Replaced XULRunner with GeckoFx - - No need to manually configure to have the Gecko rendering engine available now - - Install image is now significantly larger due to the inclusion of the Gecko Engine -- Port Scan is now Asynchronous (and is significantly faster) -### Removed -- MR-714: Removed Keyboard shortcut functionality - - Introduced in 1.73 beta that was never officially released - - This caused stability issues - - May be re-added in a future release - - Removal does *NOT* impact the ability to send keyboard shortcuts to RDP sessions (when redirect key combinations is set to "yes") -- MR-559: Removed RDP Sessions panel functionality. This required a library for which no trusted origin/source could be located -- Removed a bunch of old code/libraries and replaced them accordingly -### Security -- MR-775, MR-745: Updated PuTTY to 0.67 -### Fixed -- MR-874: Added work-around to installer to ignore installation prerequisites -- MR-884: Slow startup in some scenarios checking authenticode certificate -- MR-872: Crash in External Tools when arguments aren't quoted -- MR-854: crashes when right clicking on connection tab -- MR-852: Option "Allow only a single instance of the application" non-functional -- MR-836: Trying to delete a folder of connections only deletes 2 connections at a time -- MR-824, MR-706: Suppress Script Errors when using the IE rendering engine -- MR-822: Improve RDP error code messages -- MR-640: Fixed Inheritance not working -- MR-639: RDP: Connect to console session -- MR-610, MR-582, MR-451: RDP: Protocol Error 3334 or exceptions with large number of connections open - - This problem appears largely resolved by most reports and testing - - Further workarounds/problem avoidance: Disable Bitmap Caching on all RDP session configuration -- MR-429: Display issue on the Options -> Advanced panel -- MR-385: Inheritance settings lost when moving item to the root of the tree - -## New Dev Team - -## [1.73 Beta 2] - [NEVER RELEASED] -### Added -- Added support for importing files from PuTTY Connection Manager. -### Fixed -- Fixed issue MR-619 - Keyboard shortcuts stop working after locking the screen with Win+L -- Improved the import and export functionality. - -## [1.73 Beta 1] - 2013-11-19 -### Added -- 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 -- MR-590: Added "Reset" to config panel context menu to allow resetting some config settings to their default value. -- Added and improved menu icons. -### Changed -- 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 -- Improved handling of variables in external tool arguments. -### Removed -- Removed misleading log messages about RD Gateway support. -- Removed invalid "Site" configuration option from PuTTY Saved Sessions. -- 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 -- 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. - -## [1.72] - 2013-11-13 -### Fixed -- 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 -### Removed -- Removed warning message when mRemoteNG is started for the first time about new connections file being created. -### Fixed -- 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. - -## [1.71 Release Candidate 2] - 2013-10-16 -### Fixed -- 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. - -## [1.71 Release Candidate 1] - 2013-10-01 -### Added -- Added Chinese (Traditional) translation. -- Added partial Greek and Hungarian translations. -### Changed -- Updated PuTTY to version 0.63. -- Updated translations. -### Fixed -- Fixed issue MR-495 - Having a negative range in port scan creates memory exhaustion. -- Fixed issue MR-514 - Window Proxy test failed without close button -- Fixed issue MR-521 - Right-Clicking in "Sessions" panel crashes mRemoteNG -- Fixed issue MR-525 - Could not start on windows 7 64bit -- Fixed issue MR-535 - SQL error saving Connections -- Fixed issue MR-538 - RDP loses connection when hiding config or connections pane -- Fixed issue MR-542 - Wrapped putty has security flaw -- Made minor improvements to the port scan functionality. -- Fixed possible cross-thread operation exception when loading connections from SQL. -- Fixed PuTTY Saved Sessions not showing after loading a new connections file. - -## [1.71 Beta 5] - 2013-06-09 -### Fixed -- Fixed issue MR-491 - Could not start RDP Connection -- Fixed issue MR-499 - TS Gateway is not working in latest release 1.71 -- Fixed typo in SQL queries. - -## [1.71 Beta 4] - 2013-05-28 -### Added -- Added feature MR-435 - Add digital signature check to updater -- Added Norwegian (Bokmal) and Portuguese (Brazil) translations. -- Added Spanish translation to the installer. -- Added PuTTY Session Settings command to the Config panel for PuTTY Saved Sessions. -### Changed -- Updated translations. -- Changed Internet Explorer to no longer force IE7 compatibility mode. -- Changed the "Launch PuTTY" button in the "Options" dialog to open PuTTY from the path the user has currently set, instead of what was previously saved. -- Updated VncSharpNG to 1.3.4896.25007 -- Lowered required version of RDC from 6.1 to 6.0. -### Fixed -- Fixed issue MR-255 - The version of the RDP AX client should be updated to 7 -- Fixed issue MR-392 - Sessions Panel - context menu entries need to be context aware -- Fixed issue MR-422 - Gives error Object reference not set to an instance of an object. -- Fixed issue MR-424 - Import of a few Linux SSH2 hosts discovered via the port scan tool results in a UE -- Fixed issue MR-439 - MRemoteNG 1.70 does not start -- Fixed issue MR-440 - RDP import with non-standard port -- Fixed issue MR-443 - Instructions for eolwtscom.dll registration for Portable version are inaccurate -- Fixed issue MR-446 - Putty saved sessions show in connection panel -- Fixed issue MR-459 - Maximized -> Minimized -> Restored results in mangled active display -- Fixed issue MR-463 - Add support for LoadBalanceInfo to RDP -- Fixed issue MR-470 - Quick Connect to Linux server uses invalid credentials -- Fixed issue MR-471 - PuTTY Saved Sessions disappears from connection list -- Fixed issue MR-487 - Initiate connections on MouseUp event -- Fixed an exception or crash when choosing unnamed colors for themes. -- Fixed possible error "Control does not support transparent background colors" when modifying themes. -- Fixed changes to the active theme not being saved reliably. -- Fixed handling of the plus (+) character in PuTTY session names. -- Improved update and announcement checking. -- Improved the PuTTY Saved Sessions list to update automatically when any changes are made. -- Improved loading time of large connection files. - -## [1.71 Beta 3] - 2013-03-20 -### Fixed -- Fixed issue MR-397 - Putty disappears from the screen -- Fixed issue MR-398 - Full Screen mode doesn't correctly make use of available space -- Fixed issue MR-402 - scrollbar touch moves putty window -- Fixed issue MR-406 - Items disappear from External Tools toolbar when accessing External Tools panel -- Fixed issue MR-410 - Unhandled exception when clicking New button under Theme -- Fixed issue MR-413 - Can't use application -- Fixed new connections having a globe icon. -- Fixed the category names in the themes tab of the options dialog on Windows XP not showing correctly. -- Fixed PuTTY saved sessions with spaces or special characters not being listed. - -## [1.71 Beta 2] - 2013-03-19 -### Added -- Added feature MR-336 - Customizable background color for the windows/panels -- Added feature MR-345 - Two separate options for confirming closure of Tabs and Connection Panels -- Added feature MR-346 - Option to show/hide the description box at the bottom of the Config panel -- Added feature MR-351 - Import connections from PuTTY -### Changed -- The username and domain settings are now hidden for VNC connections since they are not supported. -- Changed "Automatically get session information" to be disabled by default. -- RDP connections can now be switched to full screen mode when redirect key combinations is enabled. -### Fixed -- Fixed issue MR-354 - Re-ordering tabs doesn't give good, reliable visual feedback -- Fixed issue MR-375 - Changing a connection's icon using the picture button should immediately update Icon field -- Fixed issue MR-377 - Several redundant panels can be opened -- Fixed issue MR-379 - Connection variables not working with external tools -- Fixed issue MR-381 - Notifications panel - whitespace context menu allows Copy and Delete on nothing -- Fixed issue MR-401 - Checkbox misaligned - -## [1.71 Beta 1] - 2013-03-04 -### Added -- Added feature MR-329 - Create Option to disable the "Quick: " prefix -- Added detection of newer versions of connection files and database schemata. mRemoteNG will now refuse to open them to avoid data loss. -### Fixed -- Fixed issue MR-67 - Sort does not recursively sort -- Fixed issue MR-117 - Remote Session Info Window / Tab does not populate -- Fixed issue MR-121 - Config pane not sorting properties correctly when switching between alphabetical and categorized view -- Fixed issue MR-130 - Issues duplicating folders -- Fixed issue MR-142 - Start of mRemoteNG takes about one minute and consumes excessive CPU -- Fixed issue MR-158 - Password field not accepting Pipe -- Fixed issue MR-330 - Portable version saves log to user's profile folder -- Fixed issue MR-333 - Unnecessary prompt for 'close all open connections?' -- Fixed issue MR-342 - Incorrect view in config pane of new connection after viewing default inheritance -- Fixed issue MR-352 - Passwords with " (quotation mark) and # (hash key) characters make mRemoteNG to open PuttyNG dialog -- Fixed issue MR-362 - Rename 'Screenshot Manager' to 'Screenshots' on the View menu to match Panel name -- Improved appearance and discoverability of the connection search box. -- If RDC 7.0 or higher is installed, the connection bar is no longer briefly shown when connecting to an RDP connection with redirect key combinations enabled. -- If RDC 8.0 or higher is installed, RDP connections automatically adjust their size when the window is resized or when toggling full screen mode. - -## [1.70] - 2013-03-07 -### Fixed -- Fixed issue MR-339 - Connection group collapses with just one click -- Fixed issue MR-340 - Object reference not set to an instance of an object. -- Fixed issue MR-344 - Move "Always show panel tabs" option -- Fixed issue MR-350 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long. -- Fixed issue MR-355 - Moving sub folders to top level causes property loss -- Fixed tabs not closing on double-click when the active tab is a PuTTY connection. - -## [1.70 Release Candidate 2] - 2013-02-25 -### Changed -- Re-enabled PuTTYNG integration enhancements on Windows 8 -### Fixed -- Fixed issue MR-332 - Can't select different tab with one click after disconnecting existing tab -- Fixed issue MR-338 - PuTTYNG crashing on fresh install of mRemoteNG -Re-enabled PuTTYNG integration enhancements on Windows 8 - -## [1.70 Release Candidate 1] - 2013-02-22 -- Fixed issue MR-183 - Error trying to save connections when using SQL - Invalid column name _parentConstantId -- Fixed issue MR-225 - Tabs do not open in a panel until multiple panels are displayed. -- Fixed issue MR-229 - Integrated PuTTY doesn't work in Windows 8 RP -- Fixed issue MR-264 - Windows 8 support -- Fixed issue MR-317 - Difficulty right-clicking on Tab -- Fixed issue MR-318 - Wrong tab gets selected when tab names overflow on the tab bar -- Fixed issue MR-321 - New connection panel doesn't get panel header if its the only one or is moved -- Fixed issue MR-322 - Connection Button not listing servers -- Added option to always show panel tabs. -- Fixed "Decryption failed. Padding is invalid and cannot be removed." notification. -- Fixed KiTTY opening in a separate window when using a saved session. - -## [1.70 Beta 2] - 2013-02-18 -### Added -- Added translations for Spanish (Argentina), Italian, Polish, Portuguese, Chinese (Simplified). -### Changed -- mRemoteNG now requires .NET Framework 3.0 instead of 2.0. -- Updated translations. -- Improved the use of Tab and Shift-Tab to cycle through entries in the Config grid. -- Improved loading of XML files from older versions of mRemote/mRemoteNG. -### Fixed -- Fixed issue MR-47 - Silent Installation Prompts for Language -- Fixed issue MR-54 - Error When disconnecting from SSL channel RDP -- Fixed issue MR-58 - Bug when duplicating connection in connection view -- Fixed issue MR-68 - Config Window Loses Options -- Fixed issue MR-71 - Minimizing mRemoteNG causes temporary re-size of Putty sessions (windows) -- Fixed issue MR-80 - Reconnect previous sessions -- Fixed issue MR-81 - Problem Duplicating Folder w/ Sub-Folders -- Fixed issue MR-85 - Microsoft .NET Framework warning -- Fixed issue MR-86 - Citrix GDI+ Error when screen is locked -- Fixed issue MR-96 - When pressing SHIFT+F4 to create a new connection inside a folder, the new connections doesn't inherit any properties from its parent -- Fixed issue MR-101 - Collapse all folders causes a NullReferenceException -- Fixed issue MR-165 - Can't close About window if it is the last tab -- Fixed issue MR-166 - Inheritance button is disabled on some connections -- Fixed issue MR-167 - Name and description of properties not show in inheritance list -- Fixed issue MR-171 - Inherit configuration not showing friendly names for each inherit component -- Fixed issue MR-172 - RDGatewayPassword is unencrypted in confCons.xml file -- Fixed issue MR-174 - Trailing Space on a Hostname/IP will cause the connection not to happen. -- Fixed issue MR-175 - Problem with focus when 2 or more PuTTY sessions opened -- Fixed issue MR-176 - Del key while editing connection name triggers 'Delete Connection' -- Fixed issue MR-178 - 3 different panels crashes all connections -- Fixed issue MR-181 - Sessions on startup -- Fixed issue MR-190 - Can't click on tab/session -- Fixed issue MR-196 - Cannot export list without usernames and passwords -- Fixed issue MR-199 - when using screen inside putty, screen becomes dead when reduce mremoteNG -- Fixed issue MR-202 - The Connection "Tab" show Ampersands as underscores. -- Fixed issue MR-214 - Hostname/IP reset -- Fixed issue MR-224 - Session tabs become un-clickable after duplicating a tab or opening a new one in the same panel -- Fixed issue MR-233 - Backslash at end of password prevents success of putty invocation and corresponding auto-logon -- Fixed issue MR-235 - Config file gets corrupted when leaving the password entry box with ESC -- Fixed issue MR-264 - Windows 8 support -- Fixed issue MR-277 - Inheritance configuration button not appear in configuration tab -- Fixed issue MR-284 - SSH: Text not showing properly -- Fixed issue MR-299 - mRemoteNG crashes while using remotely (Windows XP remote desktop) -- Fixed issue MR-306 - Fatal .NET exception on program start -- Fixed issue MR-313 - PuTTY window not maximized when loading from saved session - -## [1.70 Beta 1] - 2012-02-27 -### Added -- Added compatibility check for "Use FIPS compliant algorithms" security setting. -Improved reporting of errors when encrypting and decrypting connection files. -- Added partial Polish translation. -- Added the option to use a smart card for RD Gateway credentials. -- Added debugging symbols for VncSharpNG. -- A backup of the connection file is saved when it is loaded. The most recent ten backup copies are kept. -### Changed -- The panel tabs are now hidden if only one panel is open. -- Show changes live as connection tabs are being dragged around to change their order. -- Updated PuTTY to version 0.62. -- Made the use of CredSSP for RDP connections optional. -- Updated VncSharpNG to version 1.2.4440.36644. -### Fixed -- Fixed issue MR-77 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long. -- Fixed issue MR-78 - Renaming Connections -- Fixed issue MR-79 - MoveUp/Down item doesn't work + Sort button broken -- Fixed issue MR-93 - Regional settings problem when using SQL connection in mRemoteNG -- Fixed issue MR-97 - Integrate Dutch translation -- Fixed issue MR-98 - Integrate Russian and Ukranian translations -- Fixed issue MR-99 - Integrate Spanish translation -- Fixed issue MR-131 - RD Gateway does not respect setting for use different credentials -- Fix focus issue with RDP connections when changing tabs. -- Improved error handling when loading connection files. -- Fixed bugs with creating a new connection file. - -## [1.69] - 2011-12-09 -### Added -- Added Credits, License, and Version History items to the Start Menu and made Start Menu item names localizable. -### Changed -- Updated PuTTY to version 0.61 -- Binaries are now digitally signed -### Deprecated -- Disabled automatic updates in the portable edition -### Fixed -- Fixed issue #66 - Fresh Install Fails to Create Config -- Fixed issue #69 - Connection file gets erased -- Fixed issue #72 - scrollbars added to RDP window after minimize/restore of mRemoteNG -- Fixed file name in window title changing when exporting an XML file. -- Fixed Use only Notifications panel checkbox. - -## [1.68] - 2011-07-07 -### Fixed -- Fixed issue #48 - VerifyDatabaseVersion fails with new (empty) database tables. -- Fixed issue #60 - Can't save connections file -- Fixed issue #62 - Connection file error upon launch. - -## [1.67] - 2011-06-05 -### Added -- Added a language selection option so users can override the language if they don't want it automatically detected. -- Added partial French translation to the application. -- Added Thai translation to the installer. -- Added buttons for Add Connection, Add Folder, and Sort Ascending (A-Z) to the Connections panel toolbar. -- Added 15-bit Color RDP setting. -- Added Font Smoothing and Desktop Composition RDP settings. -- Added the mRemoteNG icon to the list of selectable icons for connection entries. -- Added confirmation before closing connection tabs. -### Changed -- Updated graphics in the installer to mRemoteNG logo. -- Moved the items under Tools in the Connections panel context menu up to the top level. -- Changed sorting to sort all subfolders below the selected folder. -- Allow sorting of connections if a connection entry is selected. -- Changed the Options page into a normal dialog. -- Changed to use full four part version numbers with major, minor, build, and revision. -- Changed hard coded SQL database name into a user configurable setting. -### Fixed -- Fixed migration of external tools configuration and panel layout from Local to Roaming folder. -- Disable ICA Hotkeys for Citrix connections.Fixes issue with international users. -- Fixed RD Gateway default properties and RDP reconnection count setting not being saved. -- Fixed bug 33 - IPv6 doesn't work in quick Connect box. -- Fixed rename edit control staying open when collapsing all folders. -- Fixed adding a connection entry if nothing is selected in the tree. -- Fixed loading of RDP Colors setting from SQL. -- Improved error handling when loading XML connection files. -- Fixed bug 42 - Maximized location not remembered with multiple monitors. -- Improved loading and saving of window location. -- Removed flickering on start up. -- Improved Reset Layout function. -- Fixed tab order of controls in Options dialog. -- Fixed bug 45 - Changing some settings in the config file may not save. - -## [1.66] - 2011-05-02 -### Fixed -- Fixed connections not working - -## [1.65] - 2011-05-02 -### Added -- Added code to the installer to check that the user is in the 'Power Users' or 'Administrators' group -### Changed -- Ctrl-Tab and Ctrl-Shift-Tab no longer work to switch tabs within mRemoteNG -### Fixed -- Fixed Ctrl-Tab and Ctrl-Shift-Tab not working in any other applications while mRemoteNG is running -- Fixed bug 36 - Install creates shortcuts only for the installing user -- Fixed bug 38 - Application uses the wrong Application Data settings folder (in Local Settings) - -## [1.64] - 2011-04-27 -### Added -- Added multilanguage support and German translation to the application -- Added Czech, Dutch, French, German, Polish, and Spanish translations to the installer -- Added Ctrl-Tab hotkey to switch to the next tab and Ctrl-Shift-Tab to switch to the previous tab -- Added Tab key to cycle through entries in the Config grid and Shift-Tab to cycle in reverse -- Added ability to configure external tools to run before or after a connection is established -- Added credit for the DockPanel Suite to the About page -### Changed -- Changed how new connection files are created -- Changed the internal namespace of the application to mRemoteNG instead of mRemote -- Updated DockPanel Suite to version 2.5 RC1 -- Updated VNCSharpNG to correct Ctrl and Alt key pass-through behavior -### Fixed -- Fixed bug 6 - VNC CTRL+key & keyboard combo mappings are broken -- Fixed bug 12 - Tab switch is not working in config panel -- Fixed bug 14 - RDP Connection authentication problem -- Fixed bug 22 - External App parameter macro expansion doesn't work with "try to integrate" -- Fixed bug 25 - Unhandled exception when mRemoteNG opens -- Fixed missing parameters in macro expansion for external tools -- Fixed RD Gateway and other inheritance bugs - -## [1.63] - 2010-02-02 -### Added -- Added View->Reset Layout menu item -- Added F11 shortcut key to View->Full Screen -- Added support for Credential Security Support Provider (CredSSP) which is required for Network Level Authentication (NLA) -- Added support for connecting through Remote Desktop Gateway servers -- Added PuTTY Settings item to tab context menu -### Changed -- New icon and logo -- Updated DockPanel Suite from 2.2.0 to 2.3.1 -- Popups can now be allowed in Internet Explorer by holding Ctrl+Alt when clicking a link -### Fixed -- Fixed problems moving or resizing the main window while PuTTY (SSH/telnet/rlogin/raw) connections are open -- Fixed PuTTY processes not closing on Vista and 7 with UAC enabled -- Fixed error if the mouse is clicked outside of the remote screen area of a VNC connection -- Fixed flashing and red lines at bottom of the window on first run -- Improved RDP error reporting - -## [1.62] - 2010-01-19 -### Added -- Switched to VncSharp, an open source VNC component -- VNC is supported again except for the following features: - - Windows authentication - - Setting the compression, encoding and color settings - - Connecting through a proxy server - - Free SmartSize mode (it does the same thing as Aspect SmartSize mode now) -- Added option to change how often updates are checked -- Added RDP, VNC and ICA version numbers to Components Check page -### Changed -- Rearranged the Options page and added an Updates tab -- Open Updates options tab before connecting for the first time -- No longer show About page on first run -- Renamed Quicky toolbar to Quick Connect toolbar -- Changed back to allowing toolbars to dock to the left or right of the menu bar and added gripper to move it around -### Fixed -- Fixed a bug with the inheritance buttons on the Config panel disappearing after awhile - -## [1.61] - 2010-01-14 -### Changed -- This version of mRemoteNG does not support VNC -### Removed -- Removed unlicensed SmartCode Solutions ViewerX VNC Viewer ActiveX - -## [1.60] - 2010-01-09 -### Added -- Added Report a Bug and Support Forum links to the Help menu -### Changed -- Changed name to mRemoteNG -- Changed filename delimiter in title bar from pipe to dash -- Changed default format for saving screenshot images to PNG -- Changed website addresses -- Changed website links in Help menu and About page to load within mRemoteNG instead of launching an external browser -- Moved Check for Updates to the Help menu -### Removed -- Removed snakes game Easter egg -- Removed references to visionapp Remote Desktop -### Fixed -- Fixed menu bar not staying docked to left side - -## [1.50] - 2010-01-06 -### Added -- Added the following formats to the "Save Connections As" function: - - mRemote CSV (standard CSV file with all properties) - - vRD 2008 CSV (standard CSV file with properties relevant for importing connections in vRD 2008) -### Fixed -- Fixed bug in inheritance code (SmartSize Mode and View Only properies were always shown when using VNC) - -## 1.49 -### Added -- Added features to the update function -- Added Announcement feature -### Changed -- mRemote and visionapp Remote Desktop 2008 merge! -- Read more here: ~~http://www.mremote.org/wiki/visionappMerge.ashx~~ -- or in the Announcement panel. -- Changed copyright notice in about screen and text when connecting via VNC -### Fixed -- Fixed some SQL-related problems - -## 1.48 -### Added -- Added startup components check with directions to fix component installation (also available in Tools - Components Check) -- Added "Try to integrate" option to Ext. Apps. If enabled mRemote will try to integrate the app into a tab container like any other connection protocol. -- Added Ext. App as protocol. Any Ext. App can be launched just like a normal connection. -- Added option to completely encrypt connection files (tools - options - advancecd) -- Added Rendering Engine option for HTTP/S protocols -- You can now use the Gecko (Firefox) rendering engine -``` -For this to work you need to download xulrunner (get it here: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/) -It must be the 1.8.1.3 release, 1.9.0.0 does NOT work! -Extract the contents to a path of your choice and set the correct path in Tools - Options - Advanced - XULrunner path -The interface is tab enabled and usage is generally very firefox-like. So you can open new tabs with Ctrl+T, jump to the location bar with Ctrl+L and so on... -``` -- Added "MAC Address", "User Field" fields and %MacAddress%, %UserField% variables to use in Ext. Apps -- Added descriptions for all fields in the config editor### Changed -### Changed -``` -ATTENTION! There is a bug in the automatic update code in 1.45 so you will have to download the new version manually from ~~http://www.mremote.org/wiki/Downloads.ashx~~ - -Example (DameWare Mini Remote Control): -Create a new Ext. App with the following properties: -Display Name: DameWare -Filename: c:\PathToYourDameWareInstallDir\DWRCC.exe -Arguments: -c: -h: -m:%hostname% -u:%username% -p:"%password%" -d:%domain% -Options: Try to integrate -Create a new connection and select Ext. App as protocol -Then choose DameWare in the Ext. App field -If you have problems with a particular app that takes a long time to start up consider setting a higher PuTTY/Ext. Apps wait time in Tools - Options - Advanced### Fixed -``` -``` -WARNING! There have been changes to the connections file/SQL tables -Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables -To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) -These are the added lines: -[RenderingEngine] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , -[MacAddress] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , -[UserField] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , -[ExtApp] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , -[InheritRenderingEngine] [bit] NOT NULL , -[InheritMacAddress] [bit] NOT NULL , -[InheritUserField] [bit] NOT NULL , -[InheritExtApp] [bit] NOT NULL , -``` -### Fixed -- Fixed bug in connections loading code when using SQL storage -- Fixed bug in reconnect code -- Fixed VNC sessions not refreshing screen automatically when switching between tabs or panels - -## 1.45 -### Added -- New german language build available -- Added support for RDP 6.1 (XP SP3/Vista SP1) features (Server Authentication, Console Session, TS Gateway not yet...) -- Added basic support for UltraVNC SingleClick (Tools - UltraVNC SingleClick); the listening port is configurable in the options -### Changed -``` -WARNING! There have been changes to the connections file/SQL tables -Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables -To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) -These are the added lines: -[RDPAuthenticationLevel] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , -[InheritRDPAuthenticationLevel] [bit] NOT NULL , -``` -### Fixed -- Fixed VNC connections not working on x64 -- Fixed screenshots save all feature overwriting files with the same name (not actually a bug, but rather a new feature ;) -- Fixed ICA Encryption Strength not inheriting properly - -## 1.43 -### Fixed -- Added function to send either the main form or a connection panel to another screen - - To send the form to another screen, right click the titlebar or the taskbar button and select "Send to..." - - If you want to send a panel to another screen, right click the panel's tab and do the same -### Fixed -- Fixed PuTTY connections not supporting credentials with spaces -- Fixed form not opening on last position when using multiple screens -- Fixed kiosk mode not working on secondary screen - -## 1.42 -### Added -- Added minimize to tray option -- Added option to enable switching to open connections with a single click on the corresponding connection in the tree -- Added button to test proxy settings -### Changed - - IMPORTANT NEWS: Please read the page that opens when you first start this release or go to: ~~http://www.mRemote.org/wiki/MainPage.ashx#Commercial~~ -### Fixed -- Fixed: If the active connection tab is a PuTTY connection, Alt+Tab to mRemote now focuses the PuTTY window -- Fixed encoding problem with PuTTY sessions that included spaces -- Fixed problem that made mRemote inaccesible when closing it on a second monitor and then disabling this monitor -- Fixed: Inheritance defaults of some new VNC properties were not saved in the portable package - -## 1.41 -### Added -- Added complete support for SmartCode's ViewerX and removed VncSharp -``` -Many thx to everyone who donated to make this happen!!! I didn't think that it wouldn't even take a week! =) -I hope everyone will be satisfied by the functions and possibilities this new control provides -If you use one of the non-setup packages you must register the control yourself -Open a cmd and change to the directory you installed mRemote to -Type regsvr32 scvncctrl.dll and click ok -``` -### Changed -- Changed shortcuts and added buttons for them to the view menu under "Jump To" because they were causing several problems -``` -WARNING! There have been changes to the connections file/SQL tables and the Ext. Apps XML file -Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables -To get SQL working with the new version please update your tables like in the provided script (Info - Help - SQL Configuration) -``` - -## 1.40 -### Added -- Added (limited) support for the trial version of SmartCode's VNC ActiveX -``` -To enable it go to Options - Advanced and check "Try SmartCode VNC ActiveX" -When connecting a pop up will open, wait about 10 seconds, then click on "Trial" to continue -I will integrate this control fully into mRemote if I get enough Donations to buy the single developer license ($375,-) -So if you want to see better VNC support (All UltraVNC, TightVNC and RealVNC functions) in mRemote, please help me and donate some bucks -For donations either go to the mRemote Wiki (Info - Website) or click on Info - Donate to directly go to PayPal -I will announce the current donation amount every day (or as often as I can) on the Wiki main page -If you want to know more about the control go here: http://www.s-code.com/products/viewerx/ -``` -- Added feature to choose the panel a connection will open in when... - 1. no panel name was assigned in the properties - 2. you opened a connection with the option to choose the panel before connecting - 3. you checked "Always show panel selection dialog when opening connectins" in Options - Tabs & Panels -- Added Shortcuts to focus the standard panels - - Alt+C: Switch between Connections & Config panel - - Alt+S: Switch between Sessions & Screenshots panel - - Alt+E: Switch to Errors & Infos panel -- Added some new icons - -## 1.39 -### Added -- Added MagicLibrary.dll to the release again (forgot it in the 1.38 packages, sorry) -- Added auto-reconnect for ICA -- Added feature that automatically clears whitespaces in the Quicky Textfield -- Added special feature: Go to the set password dialog and type "ijustwannaplay" (without the quotes) in the password field... ;) - -## 1.38 -### Added -- Added automatic reconnect feature for RDP (Options - Advanced) -- Added connections drop-down to the quicky toolbar (same as the tray icon menu) -- Added setting in the options to enable/disable that double clicking on a connection tab closes it -- Added option to automatically set the hostname like the display name when creating new connections -### Fixed -- Fixed bug that caused the properties of a folder to be filled with "Object reference not set to an instance of an object." when adding a folder to the root with Default Inheritance enabled -- Fixed bug that made the properties of a newly added Connection to the root unavailable when Default Inheritance was enabled -- Fixed bug that the default settings for Pre/Post Ext. App, and their inheritance settings were not being saved -- Fixed bug in settings loading methods that caused the application to hang when an error occured -- Fixed bug in Ext. Apps panel that copied the properties of the previously selected Ext. App when "Wait for exit" was checked -- Fixed bug in the SQL Query that creates the tables needed by mRemote -- Attempt to fix the "Drop-Down on Screenshot" bug on some machines - -## 1.35 -### Added -- Added single instance mode (look in Options - Startup/Exit) - No cmd arguments supported yet! -- Added possibilty to start a Ext. App before connecting and on disconnect (e.g. for VPN/RAS) -- Added option to the Ext. Apps to tell mRemote to wait for the exit of the Ext. App -- Added encryption setting for ICA -### Changed -``` -WARNING! There have been changes to the connections file/SQL tables and the Ext. Apps XML file -Please always backup your whole config before updating to a new mRemote beta release, especially when there have been changes to the config files/SQL tables -Here's a list of new columns that need to be created before saving connections to an SQL server: -Name: ICAEncryptionStrength, Data-Type: varchar, Length: 64, Allow Nulls: No -Name: InheritICAEncryptionStrength, Data-Type: bit, Length: 1, Allow Nulls: No -Name: PreExtApp, Date-Type: varchar, Length: 512, Allow Nulls: Yes -Name: PostExtApp, Date-Type: varchar, Length: 512, Allow Nulls: Yes -Name: InheritPreExtApp, Date-Type: bit, Length: 1, Allow Nulls: No -Name: InheritPostExtApp, Date-Type: bit, Length: 1, Allow Nulls: No -``` - -## 1.33 -### Fixed -- Fixed problem that caused RDP connections not to initialize properly when using XP SP3 -- Fixed bug in Port Scan that prevented hosts with no hostname from being imported - -## 1.32 -### Added -- Added: Inheritance defaults can now be customized (look in the root properties of your connections tree) -### Changed -- Changed Target CPU to AnyCPU again as I think the x86 setting caused problems on x64 machines (although it shouldn't) -### Fixed -- Fixed bug that made password-secured connection files not load properly because the return value from the password screen was always null -- Fixed a lot of outdated code in the import functions (Import from XML, Import from AD, Import from RDP files) -- Fixed bug that caused properties with a ' character not to be saved properly when using SQL Server - -## 1.31 -### Fixed -- Small speed improvement to the port scanner -- Fixed bug that caused SQL live-update to not work when not using AD Authentication -- Fixed bug that caused Save As not to work - -## 1.30 -### Added -- Added experimental SQL Server with live-update (multi-user) support (see Help - Getting started - SQL Configuration) -- Added bunch of new icons to the UI, most of them by famfamfam.com -- Added dropdown button to Quicky Toolbar to choose protocol -- Many smaller changes and additions -### Fixed -- Fixed: Wrong default PuTTY session name -- Fixed bug in Port Scanner that caused an error when no DNS name could be resolved - -## 1.25 -### Added -- Added inheritance for folders -- Added port scan feature and possibility to import from a scan -- Added toolbar for Ext. Apps (see View - External Applications Toolbar) -- Added quick connect as toolbar -- Added code that creates a backup of the current connections file every time it is loaded (It's named YourConsFile.xml_BAK) -- Added description variable to Ext. Apps -### Fixed -- Fixed bug that allowed inheriting from root node -- Fixed bug that caused Ext. Apps launched from a connection tab to use the selected tree node instead of the current tab -- Fixed bug that caused mRemote not to save panel layout and Ext. Apps on exit - -## 1.24 -### Fixed -- Fixed a bug in connections loading mechanism that caused a corrupted connections file when upgrading from a previous version - -## 1.23 -### Added -- Added feature to remember which connections were opened on last runtime and reconnect to them on the next start (see Tools - Options - Startup/Exit) -- A command line switch is also available to cancel reconnecting (/noreconnect or /norc) -- Added Auto Save feature (Tools - Options - Connections - Auto Save every...) -- Added Ext. Apps to connection tab context menu -- Added better error handling for RDP connection creation -### Fixed -- Fixed problem with Sessions feature on 64bit systems -- Fixed Sessions feature not working when using global credentials -- Fixed several problems with the Active Directory OU picker control -- Fixed bug in Connection duplicate code that caused duplicated connection to still have previous tree node assigned - -## 1.20 -### Added -- Added External Applications feature (check the help section for more info) -- Added duplicate feature to Connections tree -### Fixed -- Fixed: MagicLibrary.dll was not included in the setup package - -## 1.16 -### Added -- New Domain: www.mRemote.org -- There's a new setting in the options to fine tune the time to wait until the window has been created -- Added reconnect feature in tab menu -### Fixed -- Fixed PuTTY connections appearing in a new window -- Fixed export not working - -## 1.15 -### Added -- Added: New portable package -- Added: Defaults for new connections can now be customized - - Click the root item and then the new Properties-like button with a small yellow star to get to the settings -### Fixed -- Fixed Import from Active Directory not working -- Fixed problem with single click connect not focusing correctly -- Fixed root node not being renamed after changing name in property grid - -## 1.10 -### Added -- Added support for setting a password to protect the connections file with (look in the root of your connections tree) -- Added RDP file import feature -- Added new command-line switch to reset panel's positions -- Added HTTPS as protocol -- Added HTTP/S basic authentication -- Added support for setting a Proxy server for automatic updates -### Changed -- Some changes in help section -### Fixed -- Fixed the bug that passwords stored in the options weren't decrypted when a connection was opened -- Fixed "bug" that prevented "Connect to console session" from working in RDC6.1 (Vista SP1 RC1/XP SP3 RC1) - -## 1.00 -Merry Christmas! =) -``` -1.00 is a (almost) complete rewrite of the whole application -The code base is now much cleaner and more (easily) extendable -New features include (but are not limited to): -Every part of the application is now integrated into panels which can be moved, docked and undocked, hidden, moved to another monitor, etc. -This makes many new and exciting ways to manage connection and application windows possible -You can for example open up 4 PuTTY sessions in 4 different panels and align them in the main application so you can use all 4 side by side - 2 on the upper side and 2 on the bottom for example -This can be done for EVERY part of the application, it's completely modular and customizable -Connection and folder (previously called containers) properties have moved to a new property grid control -Every setting (with the exclusion of the hostname, which wouldn't make any sense) can now be inherited from the parent folder -Connection file saving/loading is now handled a bit different (more in the help section) -Application restart is no longer nececary after changing options, they are active with a click of the OK button -Smart size can now be activated also if a connection is already open (in the right click menu of the active tab) -A panel name can be stored with every connection (or folder, if inherting) to always open the connection in the specified panel -And last but not least, many bugs have been fixed, though there are probably many new bugs aswell - Did I already mention this is a rewrite? ;) -I hope you like my work and if you do please consider donating on the mRemote website to support me a little. Any amount will do! Thx! -``` - -## 0.50 -### Added -- Added possibility to change resolution or display mode (Fit to window, Fullscreen, Smart size) -- Added new setting in options to show logon info on tab titles -- Added new feature that catches popup dialogs and puts them in a managed interface. This is another step to make mRemote a single window application. -- Added QuickConnect history and auto-complete functions -- Added a few new Icons (Linux, Windows, ESX, Log, Finance) -- Pressing escape switches back to the connection list -- There is a context menu that allows you to copy selected errors/warnings/infos to the clipboard (text only) or to delete them -- There also are settings in the option to change when to switch to the tab and to switch back to the normal behaviour of displaying message popups - -### Changed -- Connections file version is now 1.2 -### Removed -- Removed old Terminal (SSH, Telnet) control and embedded PuTTY instead -``` -This decision brings mostly good but also some bad news -The good news is that now everything that works in putty also works in mRemote -This means X11 forwarding, SSH port forwarding, session logging, appearance customization, etc. should be working fine now -It also brings some new protocols (Rlogin, RAW) -The bad news is that I cannot fully integrate Putty into mRemote because it is a standalone application and thus has it's own window handle -This means that you won't be able to use Ctrl+Tab to switch between tabs, catching errors or infos through the new Errors and Infos tab isn't possible, etc. -``` -### Fixed -- Improved options tab -- Fixed some form drawing bugs - -## 0.35 -### Added -- Added tab switching/closing hotkeys - - Switch to next tab: Ctrl+Tab - - Switch to previous tab: Ctrl+Shift+Tab - - Close active tab: Ctrl+W - - This does not and will probably never work with RDP connections! -### Changed -- Changed shortcuts to menu items in main menu as they interfered with some terminal key bindings -### Fixed -- Fixed bug in updating code that still displayed the current version in the old format (x.x.x.x instead of x.xx) -- Fixed bug where the colors setting was not correctly read after saving and reloading a connections file (only with 256 colors setting) -- Fixed bug that made connect to console session and fullscreen options not work -- Fixed bug that when opening options, update or about tab caused weird paddings next to the tab or other strange behaviour - -## 0.30 -### Added -- Added HTTP as protocol to allow for basic web-based administration -- Added new connections menu to the toolbar - - Left click on a connection connects - - Right click on a container or connection opens the config tab for the selected item -- Added two new connection context menu entries for quickly connecting to console session or connecting in fullscreen -- The connections tree can now be hidden - - To hide it right click on the splitter (the divider between the connections tree and the tabbing interface) -### Changed -- Changed "Redirect Key combinations (like in fullscreen)" to be disabled when in kiosk mode as it has no effect then anyway -### Fixed -Improved tray icon menu (just like the main connections menu) -- Several small bugfixes and code improvements -### Removed -- Removed overlay (RDP locking) feature in favor of simply grabbing input when clicking inside the control area - - I hope nobody is too sad that the nice looking overlay feature had to go, but..., well, it had to! ;-) - -## 0.20 -### Added -- Added Drag and Drop support for tabs -- Added tab context menu - - Switch to/from fullscreen - - Take a screenshot - - Transfer files via SCP/SFTP (SSH) - - Send special keys (VNC) - - Rename tabs - - Duplicate tabs (Create another instance of the connection) - - Show config - - Close tab (disconnect) -- Added middle click support for tabs (close/disconnect) -- Added SSH file transfer (SCP/SFTP) support -- Added Tools menu to the tree context menu -- Transfer files via SCP/SFTP (SSH) -- Import/Export features -- Sorting -### Changed -- Changed version format -### Removed -- Removed Fullscreen and Send special keys buttons from the main toolbar as they are now in the tab context menu -### Fixed -- Fixed the problem that caused mRemote to crash when dragging a parent node of the connections tree onto one of it's child nodes -- Fixed problem in importing mechanism that allowed importing connections including the root which resulted in multiple root items that couldn't be deleted -- Fixed problem with quick connect - -## 0.0.9.0 -### Added -- Added support for redirecting key combinations (Alt+Tab, Winkey, ...) -- Added Import/Export features -- Added Quick Connect Port support, just type the host you want to connect to followed by a ":" and then the port -- Added Connect/Disconnect buttons to connections context menu -- Added two new icons (Test Server | TST; Build Server | BS) -### Changed -- Many changes to the connections loading/saving mechanisms -- confCons version is now 1.0 -### Fixed -- Some code cleanup -- Fixed auto session info to only try to get session information when a RDP connection is selected -- Fixed AD Import feature (didn't care if imported items were computers, groups, users, ... ;) -- Fixed settings and connections not saving when installing updates from the auto-updater -- Fixed form size and location not saving properly when closing the application in minimized state or in maximized state on a secondary monitor - -## 0.0.8.2 -### Added -- Added SSH1 to Quick Connect GUI -### Changed -- Changed buffer size of terminal control, it's now 500 lines -### Fixed -- Fixed terminal connections not getting focus when changing tabs -- Fixed bug in terminal code that caused hitting "home" to show "~" instead of jumping to the start of the line -- Fixed bug that caused that hitting enter in mRemote wouldn't do anything when options was opened before - -## 0.0.8.0 -### Added -- Added code to check if the msrdp com control is registered -### Changed -- Many Improvements to the terminal control (ssh1(!), ssh2, telnet) -### Fixed -- Fixed bug that caused mRemote to crash when moving connection into root node (only with inheritance enabled) -- Fixed bug: Pressing delete when editing a node's name caused delete messagebox to show - -## 0.0.7.5 -### Added -- Added inheritance feature to inherit connection settings from parent container -### Changed -- Expanded/Collapsed state of tree nodes will now be saved -- Reduced auto session info delay to 700ms -- Some code maintainance -- Some corrections to connections tree and quick search behaviour -- Changed connections file version to 0.9 -### Fixed -- Fixed bug in TerminalControl that caused the error message "error loading string" -- Fixed: Settings saving on exit was broken in 0.0.7.0, this is fixed now -- Fixed connections context menu bug that made import from ad option inaccessible -- Fixed session info filling up with infos about hosts previously selected - -## 0.0.7.0 -### Changed -- Massive GUI redesign and changes, hope you like it! =) -### Fixed -- Fixed bug that made session info to query immediately after selecting a connection (when enabled), there is now a one second delay to prevent collecting session info for more than one host - -## 0.0.6.8 -### Added -- Added connection import feature for Active Directory -### Changed -- Tidied up project references -- Multiple changes to setup routine -### Fixed -- Improved error handling for auto-update -- Improved download handling for auto-update -- Fixed bug that made download finished/failed message box appear multiple times when update was canceled and re-downloaded -- Fixed bug where double-clicking a container opened all connections inside this container - -## 0.0.6.6 -### Changed -- Changed port textbox control to only allow digits -- Small changes to connection code for SSH -### Fixed -- Fixed port setting not saving (or always displaying default port for selected protocol) - -## 0.0.6.5 -### Added -- Added auto update feature -### Changed -- Changed: Multiple UI Changes (added shortcuts, rearranged menu items, ...) -### Fixed -- Fixed the problem where the connections file version was saved either with a dot or a comma, depending on system language -- Fixed not being able to connect to SSH2 hosts without specifying username and password -- Fixed several problems with Quick Connect -- Improved saving of config changes -- Fixed connections tab not closing when using SSH - -## 0.0.6.0 -### Added -- Added new protocols: SSH2 and Telnet -- Added first command line switch/parameter "/consfile" - - Ex.: mRemote.exe /consfile "%PathToYourConnectionsFile%" -- Added button to screenshots to delete a screenshot -- Added Host Status (Ping) feature -### Changed -- Many code rewrites and changes in almost every area -- Changed the way connections get loaded -- The default path for the connection file is no longer in the application directory but in the local application data folder. - - Ex.: c:\Documents and Settings\felix\Local Settings\Application Data\Felix_Deimel\mRemote\ - - If opening a connection file from a custom location (click on open link) saving will also occur in this file and not like in previous versions to the default connections file - - To import your old connection file please use the following procedure: start mRemote, click on "Open" and find your old connection file. Then click on "Save As" and save it with the default file name to the default location -- Changed the font and style of context menus -- Changed Quick Connect UI -### Fixed -- Fixed connection settings in config tab not saving when clicking another connection before jumping to another config field -- Fixed a bug where renaming a container caused the first connection in the same container to be renamed too - -## 0.0.5.0 R2 -### Fixed -- Fixed a bug that prevented connections from opening when icon files were assigned in a previous version of mRemote - -## 0.0.5.0 -### Added -- Added (Global) fullscreen / kiosk feature -- Added redirection settings for disk drives, printers, ports, smart cards and sound -- Added option to write a log file -- Added option to open new tabs on the right side of the currently selected tab -- Added possibility to connect to all nodes in a container -### Changed -- Changed session functions to work in background -- Changed icon choosing mechanism and added a bunch of default icons -- Changed: Containers with connection can now be deleted just like empty containers -- Changed screenshot functions to now collect all screenshots in one tab -- Changed: More settings can now be changed on container basis -- Changed config file version to 0.6 -- Changed: Small internal changes to the connection saving/creating and opening mechanisms -### Fixed -- Fixed "Display Wallpapers" and "Display Themes" settings, they are working now - -## 0.0.3.6 -### Added -- Added Feature to display an overlay when RDP connection tab has lost the focus, clicking on this gives the focus back to the control -- Added standard handlers for F2 (rename) and DEL (delete) keys in the treeview -- Added icon preview for connections in config tab -### Changed -- Changed the way new connections and containers are being created in the treeview. The pop up window will not be displayed any longer, instead everything is handled inplace by the treeview. -- Changed some minor UI related stuff -### Fixed -- Fixed bug in tab closing mechanism that caused icons (play/pause) to not be set on the correct tree nodes - -## 0.0.3.5 -### Added -- Added Feature to query and log off sessions on a remote machine and option to do this automatically -- Added Option to show icon in system tray with connection menu -### Changed -- Changed controls to flat style as I think this fits the whole application more than the old 3D look -- Multiple UI changes to eliminate annoying behaviour - -## 0.0.3.3 -### Added -- Added Feature to specify which login information to use when no info is provided in the config of a remote machine -### Fixed -- Fixed bug in Quick Find where trying to open a connection when no node was found caused an error -- Fixed bug where the main form was not rendered correctly when hiding top bar and using XP Themes -- Fixed bug in drag-drop routine that caused application to hang when trying to drop a node on one of it's child nodes -- Fixed bug where taskbar buttons for fullscreen rdp windows did not disappear after disconnecting - -## 0.0.3.2 -### Added -- Added new Save As Dialog with feature to only save specific connection settings -- Added Option to display Tooltips when hovering over host entries in the connection tree -- Added Option to ask at exit when there are open connections -### Fixed -- Fixed bug where saving connections file with spaces in the root node caused an error -> updated Connection File Version to 0.5 -- Fixed bug in options tab where the browse button for a custom connection file didn't do anything - -## 0.0.3.0 -### Added -- Added Options Tab - - Load connections file from different location - - Save/Don't Save connections file on exit - - Show current tab name in window title -- Added drag and drop functionality to the connections tree -- Added feature to hide top bar -- Added feature to send special keys (VNC) -### Changed -- Updated VncSharp Library to 0.88 (still pretty buggy) - -## 0.0.2.7 -### Added -- Added feature to save connection settings to all connections in the selected container -### Deprecated -- Disabled "Display Wallpaper" and "Display Themes" checkboxes as these features are not implemented -### Fixed -- Icon choosing bug fixed -- Taskbar button had no text when in fullscreen - fixed -- Fixed bug in Quick Connect GUI - -## 0.0.2.5 -### Added -- Added new connections toolstrip (same functions as context menu) -### Changed -- Splitter position is now saved on exit -### Fixed -- Quick connect button bug fixed -- Search field resize bug fixed - -## 0.0.2.4 -### Added -- Added Keep Alive Interval (1 Minute) -- Added Options to choose between RDP & VNC -- Added Port Setting for RDP -- Added Option to connect to console -- Added Menu Entries to move Connections & Containers up & down -### Changed -- Changed default color depth to 16bit -- Some small code improvements - -[Unreleased]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.20..HEAD -[1.76.20]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.19..v1.76.20 -[1.76.19]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.18..v1.76.19 -[1.76.18]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.17..v1.76.18 -[1.76.17]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.16..v1.76.17 -[1.76.16]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.15..v1.76.16 -[1.76.15]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.14..v1.76.15 -[1.76.14]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.13..v1.76.14 -[1.76.13]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.12...v1.76.13 -[1.76.12]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.11..v1.76.12 -[1.76.11]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.10..v1.76.11 -[1.76.10]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.9..v1.76.10 -[1.76.9]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.8..v1.76.9 -[1.76.8]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.7..v1.76.8 -[1.76.7]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.6..v1.76.7 -[1.76.6]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76.5..v1.76.6 -[1.76.5]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha6..v1.76.5 -[1.76.4 Alpha 6]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha5..v1.76Alpha6 -[1.76.3 Alpha 5]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha4..v1.76Alpha5 -[1.76.2 Alpha 4]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha3..v1.76Alpha4 -[1.76.1 Alpha 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha2..v1.76Alpha3 -[1.76.0 Alpha 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.76Alpha1..v1.76Alpha2 -[1.76.0 Alpha 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7012..v1.76Alpha1 -[1.75.7012]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7011..v1.75.7012 -[1.75.7011]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7010..v1.75.7011 -[1.75.7010]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75.7009..v1.75.7010 -[1.75.7009]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix8..v1.75.7009 -[1.75.7008]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix7..v1.75Hotfix8 -[1.75.7007]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix6..v1.75.Hotfix7 -[1.75.7006]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix5..v1.75Hotfix6 -[1.75.7005]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix4..v1.74Hotfix5 -[1.75.7004]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotfix3..v1.75Hotifx4 -[1.75.7003]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotifx2..v1.75Hotifx3 -[1.75.7002]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Hotifx1..v1.75Hotfix2 -[1.75.7001]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75..v1.75Hotfix1 -[1.75]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Beta3..v1.75 -[1.75 Beta 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Beta2..v1.75Beta3 -[1.75 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Beta1..v1.75Beta2 -[1.75 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Alpha3..v1.75Beta1 -[1.75 Alpha 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Alpha2..v1.75Alpha3 -[1.75 Alpha 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.75Alpha1..v1.75Alpha2 -[1.75 Alpha 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.74..v1.75Alpha1 -[1.74]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.74Beta2..v1.74 -[1.73 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.73Beta1..v1.73Beta2 -[1.73 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.72..v1.73Beta1 -[1.72]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71..v1.72 -[1.71]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71RC2..v1.71 -[1.71 Release Candidate 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71RC1..v1.71RC2 -[1.71 Release Candidate 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta5..v1.71RC1 -[1.71 Beta 5]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta4..1.71Beta5 -[1.71 Beta 4]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta3..1.71Beta4 -[1.71 Beta 3]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta2..v1.71Beta3 -[1.71 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.71Beta1..v1.71Beta2 -[1.71 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70..v1.71Beta1 -[1.70]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70RC2..v1.70 -[1.70 Release Candidate 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70RC1..v1.70RC2 -[1.70 Release Candidate 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70Beta2..v1.70RC1 -[1.70 Beta 2]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.70Beta1..v1.70Beta2 -[1.70 Beta 1]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.69..v1.70Beta1 -[1.69]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.68..v1.69 -[1.68]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.67..v1.68 -[1.67]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.66..v1.67 -[1.66]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.65..v1.66 -[1.65]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.64..v1.65 -[1.64]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.63..v1.64 -[1.63]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.62..v1.63 -[1.62]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.61..v1.62 -[1.61]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.60..v1.61 -[1.60]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.50..v1.60 -[1.50]: https://github.com/mRemoteNG/mRemoteNG/compare/v1.49..v1.50 diff --git a/mRemoteV1/CREDITS.md b/mRemoteV1/CREDITS.md deleted file mode 100644 index 1c303ca1..00000000 --- a/mRemoteV1/CREDITS.md +++ /dev/null @@ -1,125 +0,0 @@ -# Contributors -## Current mRemoteNG dev team -[David Sparer](https://www.github.com/sparerd) -[Sean Kaim](https://www.github.com/kmscode) -[Faryan Rezagholi](https://www.github.com/farosch) - -**Thanks for the awesome new website!** -[Bennett Blodinger](https://www.github.com/benwa) - -[Joe Cefoli](https://www.github.com/jcefoli) -[countchappy](https://www.github.com/countchappy) -Tony Lambert -[Julien Roncaglia](https://www.github.com/vbfox) -[peterchenadded](https://www.github.com/peterchenadded) -[Brandon Wulf](https://www.github.com/mrwulf) -[Pedro Rodrigues](https://www.github.com/pedro2555) -[dekelMP](https://www.github.com/dekelMP) -[Bruce](https://www.github.com/brucetp) -[Camilo Alvarez](https://www.github.com/jotatsu) -[DamianBis](https://www.github.com/DamianBis) -[pfjason](https://www.github.com/pfjason) -[sirLoaf](https://www.github.com/sirLoaf) -[Fyers](https://www.github.com/Fyers) -[Vladimir Semenov](https://www.github.com/sli-pro) -[Stephan](https://www.github.com/st-schuler) -[Aleksey Reytsman](https://www.github.com/areytsman) -[Cristian Abelleira](https://www.github.com/CrAbelleira) -[MitchellBot ](https://www.github.com/MitchellBot) - -## Past Contributors -Felix Deimel - mRemote original developer -Riley McArdle - mRemoteNG original developer - -[Hayato Iriumi](https://www.github.com/hiriumi) -Jason Barbier -Wiktor Beryt -Lionel Caignec -Ruben d'Arco -Holger Henke -Tom Hiller -Apisitt Rattana -Andreas Rehm -[David Vidmar](https://www.github.com/Brandhor) -[Dimitrij](https://www.github.com/Kvarkas) - -## Translators -Eugenio *"Ryo567"* Martínez -Mathieu Pape -Emanuel Silva -Robert Siwiec -Hayato Iriumi -[Sebastien Thieury](https://www.github.com/SebThieu) -Riza Emet -[Lukas Plachy](https://www.github.com/rheingold) -Gyuha Shin -[Stefan](https://www.github.com/polluks) -[emazv72](https://www.github.com/emazv72) -[Vladimir Semenov](https://www.github.com/sli-pro) -[Marco Sousa](https://www.github.com/marcomsousa) -[wwj402](https://www.github.com/wwj402) -[Fyers](https://www.github.com/Fyers) -[pablomh](https://www.github.com/pablomh) - -## Included Source Code -[**Command Line Arguments Parser**](http://www.codeproject.com/KB/recipes/command_line.aspx) -Copyright © 2002 Richard Lopes -MIT License - -[**FilteredPropertyGrid**](http://www.codeproject.com/KB/cs/FilteredPropertyGrid.aspx) -Copyright © 2006 Azuria - -[**InputBox**](http://www.csharp-examples.net/inputbox/) -Copyright © 2016 Jan Slama - -[**IP TextBox**](http://www.codeproject.com/Articles/11576/IP-TextBox) -Copyright © 2005 mawnkay - -[**PortableSettingsProvider**](https://https://www.github.com/crdx/PortableSettingsProvider) -Copyright © 2014 crdx - -## Included Components -[**ADTree**](http://www.codeproject.com/KB/selection/ADPickerCtrl.aspx) -Copyright © 2004 Marc Merritt -Copyright © 2008 Felix Deimel - -[**DockPanel Suite**](https://https://www.github.com/dockpanelsuite/dockpanelsuite) -Copyright © 2018 @roken and @lextm (formerly Weifen Luo) -MIT License - -[**GeckoFX**](https://bitbucket.org/geckofx/) -Copyright © 2016 Tom Hindle -Mozilla Public License - -[**log4net**](http://logging.apache.org/log4net/) -Copyright © 2001-2015 The Apache Software Foundation -Apache License Version 2.0 - -[**Magic Library**](http://www.dotnetmagic.com/magic_download.html) -Copyright © 2002-2003 Crownwood Consulting, Ltd. -Freely redistributable with attribution - -[**PuTTY**](http://www.chiark.greenend.org.uk/~sgtatham/putty/) -Copyright © 1997-2017 Simon Tatham -MIT License - -[**Silk Icon Set**](http://www.famfamfam.com/) -Copyright © 2005-2008 FAMFAMFAM -Creative Commons Attribution 2.5 License - -[**SSH.NET**](https://https://www.github.com/sshnet/SSH.NET) -Copyright © 2016 -MIT License - -[**VncSharp**](https://https://www.github.com/humphd/VncSharp) -Copyright © 2004-2009 David Humphrey -GNU General Public License (GPL) Version 2 - -[**ObjectListView**](https://sourceforge.net/projects/objectlistview/) -Copyright © 2006-2016 Phillip Piper -GNU General Public License (GPL) Version 3 - -[**Markdig**](https://https://www.github.com/lunet-io/markdig) -Copyright © 2016-2019 Alexandre Mutel -BSD 2-Clause "Simplified" - diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 9d16c5e1..690e0bfa 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -1108,11 +1108,11 @@ - - Always + + PreserveNewest - - Always + + PreserveNewest From a6fda6c76af8e8acbe7f515462a1dd5afc703553 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Mon, 29 Apr 2019 17:37:08 -0500 Subject: [PATCH 20/38] get cert password from build args rather than environment change this back once appveyor is working --- mRemoteV1/mRemoteV1.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 690e0bfa..7d14df2f 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -1748,7 +1748,7 @@ set /p buildenv=<buildenv.tmp :: IF "%25APPVEYOR_BUILD_FOLDER"=="" ( set cert_pwd= ) :: Call the post build powershell script -powershell.exe -ExecutionPolicy Bypass -File "$(SolutionDir)Tools\postbuild_mremotev1.ps1" -SolutionDir "$(SolutionDir)\" -TargetDir "%25cd%25" -TargetFileName "mRemoteNG.exe" -ConfigurationName "%25buildenv%25" -CertificatePath "$(CertPath)" -CertificatePassword "%25cert_pwd%25" -ExcludeFromSigning "PuTTYNG.exe" +powershell.exe -ExecutionPolicy Bypass -File "$(SolutionDir)Tools\postbuild_mremotev1.ps1" -SolutionDir "$(SolutionDir)\" -TargetDir "%25cd%25" -TargetFileName "mRemoteNG.exe" -ConfigurationName "%25buildenv%25" -CertificatePath "$(CertPath)" -CertificatePassword "$(CertPassword)" -ExcludeFromSigning "PuTTYNG.exe" true From 3e354868ea0499ad89880fc240313e66e513d72e Mon Sep 17 00:00:00 2001 From: David Sparer Date: Mon, 29 Apr 2019 17:54:11 -0500 Subject: [PATCH 21/38] also fix installer project cert password reference --- InstallerProjects/Installer/Installer.wixproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InstallerProjects/Installer/Installer.wixproj b/InstallerProjects/Installer/Installer.wixproj index 8ea626b3..eb773f9a 100644 --- a/InstallerProjects/Installer/Installer.wixproj +++ b/InstallerProjects/Installer/Installer.wixproj @@ -134,6 +134,6 @@ set /p buildenv=<buildenv.tmp :: IF "%25APPVEYOR_BUILD_FOLDER"=="" ( set cert_pwd= ) :: Call the post build powershell script -powershell.exe -ExecutionPolicy Bypass -File "$(SolutionDir)Tools\postbuild_installer.ps1" -SolutionDir "$(SolutionDir)\" -TargetDir "%25cd%25" -TargetFileName "mRemoteNG.exe" -ConfigurationName "%25buildenv%25" -CertificatePath "$(CertPath)" -CertificatePassword "%25cert_pwd%25" -ExcludeFromSigning "PuTTYNG.exe" +powershell.exe -ExecutionPolicy Bypass -File "$(SolutionDir)Tools\postbuild_installer.ps1" -SolutionDir "$(SolutionDir)\" -TargetDir "%25cd%25" -TargetFileName "mRemoteNG.exe" -ConfigurationName "%25buildenv%25" -CertificatePath "$(CertPath)" -CertificatePassword "$(CertPassword)" -ExcludeFromSigning "PuTTYNG.exe" \ No newline at end of file From b66022fb64ec5005a63efd2566c08463b09d82bf Mon Sep 17 00:00:00 2001 From: David Sparer Date: Tue, 30 Apr 2019 07:10:06 -0500 Subject: [PATCH 22/38] fixed #1426 --- CHANGELOG.md | 7 +++++++ mRemoteV1/UI/Window/ConfigWindow.cs | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71a7eb87..6386d9ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] +### Added +### Changed +### Fixed +- #1426: Tabbing is reversed in config window + + ## [1.77.0] - 2019-04-29 ### Added - #1414: Add "Remote Audio Capture" option for RDP diff --git a/mRemoteV1/UI/Window/ConfigWindow.cs b/mRemoteV1/UI/Window/ConfigWindow.cs index 44a6e35f..11b69d5e 100644 --- a/mRemoteV1/UI/Window/ConfigWindow.cs +++ b/mRemoteV1/UI/Window/ConfigWindow.cs @@ -278,10 +278,10 @@ namespace mRemoteNG.UI.Window switch (keyData) { case (Keys.Tab | Keys.Shift): - _pGrid.SelectNextGridItem(); + _pGrid.SelectPreviousGridItem(); break; case Keys.Tab: - _pGrid.SelectPreviousGridItem(); + _pGrid.SelectNextGridItem(); break; } From 100b101e607a6a2116c2bd06cb313a0c396373af Mon Sep 17 00:00:00 2001 From: David Sparer Date: Tue, 30 Apr 2019 08:03:19 -0500 Subject: [PATCH 23/38] fixed update check file script to point to changelog.md --- Tools/create_upg_chk_files.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/create_upg_chk_files.ps1 b/Tools/create_upg_chk_files.ps1 index acf2e88a..dc90448f 100644 --- a/Tools/create_upg_chk_files.ps1 +++ b/Tools/create_upg_chk_files.ps1 @@ -30,7 +30,7 @@ function New-MsiUpdateFileContent { $fileContents = ` "Version: $version dURL: https://github.com/mRemoteNG/mRemoteNG/releases/download/$TagName/$($MsiFile.Name) -clURL: https://raw.githubusercontent.com/mRemoteNG/mRemoteNG/$TagName/CHANGELOG.TXT +clURL: https://raw.githubusercontent.com/mRemoteNG/mRemoteNG/$TagName/CHANGELOG.md CertificateThumbprint: $certThumbprint Checksum: $hash" Write-Output $fileContents From 3fad296e3ffaa4874d794db2f143d9e4e54cf7f6 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Tue, 30 Apr 2019 10:28:03 -0500 Subject: [PATCH 24/38] use panel setting from connection info unless empty or overriden fixes #1425 --- mRemoteV1/Connection/ConnectionInitiator.cs | 35 +++++---------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/mRemoteV1/Connection/ConnectionInitiator.cs b/mRemoteV1/Connection/ConnectionInitiator.cs index 635ccaed..4d3c4b16 100644 --- a/mRemoteV1/Connection/ConnectionInitiator.cs +++ b/mRemoteV1/Connection/ConnectionInitiator.cs @@ -162,34 +162,15 @@ namespace mRemoteNG.Connection private static string SetConnectionPanel(ConnectionInfo connectionInfo, ConnectionInfo.Force force) { - string connectionPanel; - if (connectionInfo.Panel == "" || force.HasFlag(ConnectionInfo.Force.OverridePanel) || - Settings.Default.AlwaysShowPanelSelectionDlg) - { - var frmPnl = new FrmChoosePanel(); - if (frmPnl.ShowDialog() == DialogResult.OK) - { - connectionPanel = frmPnl.Panel; - } - else - { - return null; - } - } - else - { - //Return the current panel if exist, if not return default panel - if (TabHelper.Instance.CurrentPanel != null) - { - connectionPanel = TabHelper.Instance.CurrentPanel.TabText; - } - else - { - connectionPanel = connectionInfo.Panel; - } - } + if (connectionInfo.Panel != "" && + !force.HasFlag(ConnectionInfo.Force.OverridePanel) && + !Settings.Default.AlwaysShowPanelSelectionDlg) + return connectionInfo.Panel; - return connectionPanel; + var frmPnl = new FrmChoosePanel(); + return frmPnl.ShowDialog() == DialogResult.OK + ? frmPnl.Panel + : null; } private Form SetConnectionForm(Form conForm, string connectionPanel) From 9efe4f41bf795caaadb63fbfb25d3effc16cf868 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Tue, 30 Apr 2019 10:28:58 -0500 Subject: [PATCH 25/38] refactored to removed some casts --- mRemoteV1/Connection/ConnectionInitiator.cs | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/mRemoteV1/Connection/ConnectionInitiator.cs b/mRemoteV1/Connection/ConnectionInitiator.cs index 4d3c4b16..958e227e 100644 --- a/mRemoteV1/Connection/ConnectionInitiator.cs +++ b/mRemoteV1/Connection/ConnectionInitiator.cs @@ -1,14 +1,14 @@ -using mRemoteNG.App; +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using mRemoteNG.App; using mRemoteNG.Connection.Protocol; using mRemoteNG.Container; using mRemoteNG.Messages; using mRemoteNG.UI.Forms; using mRemoteNG.UI.Panels; -using mRemoteNG.UI.Window; -using System; -using System.Collections.Generic; -using System.Windows.Forms; using mRemoteNG.UI.Tabs; +using mRemoteNG.UI.Window; using WeifenLuo.WinFormsUI.Docking; @@ -63,7 +63,7 @@ namespace mRemoteNG.Connection #region Private - private void OpenConnection(ContainerInfo containerInfo, ConnectionInfo.Force force, Form conForm) + private void OpenConnection(ContainerInfo containerInfo, ConnectionInfo.Force force, ConnectionWindow conForm) { var children = containerInfo.Children; if (children.Count == 0) return; @@ -76,7 +76,7 @@ namespace mRemoteNG.Connection } } - private void OpenConnection(ConnectionInfo connectionInfo, ConnectionInfo.Force force, Form conForm) + private void OpenConnection(ConnectionInfo connectionInfo, ConnectionInfo.Force force, ConnectionWindow conForm) { try { @@ -173,22 +173,22 @@ namespace mRemoteNG.Connection : null; } - private Form SetConnectionForm(Form conForm, string connectionPanel) + private ConnectionWindow SetConnectionForm(ConnectionWindow conForm, string connectionPanel) { - var connectionForm = conForm ?? Runtime.WindowList.FromString(connectionPanel); + var connectionForm = conForm ?? Runtime.WindowList.FromString(connectionPanel) as ConnectionWindow; if (connectionForm == null) connectionForm = _panelAdder.AddPanel(connectionPanel); else - ((ConnectionWindow)connectionForm).Show(FrmMain.Default.pnlDock); + connectionForm.Show(FrmMain.Default.pnlDock); connectionForm.Focus(); return connectionForm; } - private static Control SetConnectionContainer(ConnectionInfo connectionInfo, Form connectionForm) + private static Control SetConnectionContainer(ConnectionInfo connectionInfo, ConnectionWindow connectionForm) { - Control connectionContainer = ((ConnectionWindow)connectionForm).AddConnectionTab(connectionInfo); + Control connectionContainer = connectionForm.AddConnectionTab(connectionInfo); if (connectionInfo.Protocol != ProtocolType.IntApp) return connectionContainer; From 1901686a2a0bf92d12068264c768f118122cfe1e Mon Sep 17 00:00:00 2001 From: David Sparer Date: Tue, 30 Apr 2019 10:33:31 -0500 Subject: [PATCH 26/38] updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6386d9ee..70b549a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed ### Fixed - #1426: Tabbing is reversed in config window +- #1425: Connections didn't always respect the Panel property ## [1.77.0] - 2019-04-29 From d9834eae6dd8999c219e039a1af3528224d83ff9 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Tue, 30 Apr 2019 12:46:47 -0500 Subject: [PATCH 27/38] safer cast in the fips checker fixes #1428 --- mRemoteV1/App/CompatibilityChecker.cs | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/mRemoteV1/App/CompatibilityChecker.cs b/mRemoteV1/App/CompatibilityChecker.cs index a5a4d281..a2b69803 100644 --- a/mRemoteV1/App/CompatibilityChecker.cs +++ b/mRemoteV1/App/CompatibilityChecker.cs @@ -1,11 +1,11 @@ -using Microsoft.Win32; -using mRemoteNG.App.Info; -using mRemoteNG.UI.TaskDialog; -using System; +using System; using System.Diagnostics; using System.Windows.Forms; +using Microsoft.Win32; +using mRemoteNG.App.Info; using mRemoteNG.Messages; using mRemoteNG.UI.Forms; +using mRemoteNG.UI.TaskDialog; namespace mRemoteNG.App { @@ -55,21 +55,18 @@ namespace mRemoteNG.App private static bool FipsPolicyEnabledForServer2003() { - var regKey = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa"); - var fipsPolicy = regKey?.GetValue("FIPSAlgorithmPolicy"); - if (fipsPolicy == null) return false; - fipsPolicy = Convert.ToInt32(fipsPolicy); - return (int)fipsPolicy != 0; + var regKey = Registry.LocalMachine.OpenSubKey(@"System\CurrentControlSet\Control\Lsa"); + if (!(regKey?.GetValue("FIPSAlgorithmPolicy") is int fipsPolicy)) + return false; + return fipsPolicy != 0; } private static bool FipsPolicyEnabledForServer2008AndNewer() { - var regKey = - Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Lsa\\FIPSAlgorithmPolicy"); - var fipsPolicy = regKey?.GetValue("Enabled"); - if (fipsPolicy == null) return false; - fipsPolicy = Convert.ToInt32(fipsPolicy); - return (int)fipsPolicy != 0; + var regKey = Registry.LocalMachine.OpenSubKey(@"System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy"); + if (!(regKey?.GetValue("Enabled") is int fipsPolicy)) + return false; + return fipsPolicy != 0; } private static void CheckLenovoAutoScrollUtility(MessageCollector messageCollector) From 952c2e570e989a30af4408ddc66eeda34a864643 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Tue, 30 Apr 2019 12:48:53 -0500 Subject: [PATCH 28/38] updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70b549a7..6fd2792e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Added ### Changed ### Fixed +- #1428: Fixed a rare error when checking for FIPS - #1426: Tabbing is reversed in config window - #1425: Connections didn't always respect the Panel property From b051e8cc46b31d17117cd0245d07a1c6a8994a6a Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 30 Apr 2019 19:59:32 +0200 Subject: [PATCH 29/38] Update PULL_REQUEST_TEMPLATE.md added changelog to pr template checklist --- .github/PULL_REQUEST_TEMPLATE.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5ead5d43..87c9337b 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -23,7 +23,8 @@ ## Checklist: +- [ ] I have read the **CONTRIBUTING** document. - [ ] My code follows the code style of this project. +- [ ] I have updated the changelog file accordingly. - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. -- [ ] I have read the **CONTRIBUTING** document. From 590b526079c396aac2ae842bfc8e7b389b90ac02 Mon Sep 17 00:00:00 2001 From: sli-pro Date: Tue, 30 Apr 2019 21:22:48 +0300 Subject: [PATCH 30/38] Minor changes and forms of the Russian language --- mRemoteV1/Resources/Language/Language.ru.resx | 2534 ++++++++--------- .../OptionsPages/AdvancedPage.Designer.cs | 84 +- .../OptionsPages/CredentialsPage.Designer.cs | 71 +- .../NotificationsPage.Designer.cs | 202 +- .../OptionsPages/SqlServerPage.Designer.cs | 116 +- .../OptionsPages/UpdatesPage.Designer.cs | 116 +- .../UI/Forms/OptionsPages/UpdatesPage.cs | 2 +- 7 files changed, 1618 insertions(+), 1507 deletions(-) diff --git a/mRemoteV1/Resources/Language/Language.ru.resx b/mRemoteV1/Resources/Language/Language.ru.resx index d382ddb9..69e7681a 100644 --- a/mRemoteV1/Resources/Language/Language.ru.resx +++ b/mRemoteV1/Resources/Language/Language.ru.resx @@ -1,6 +1,6 @@  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + О программе - + Активно - + Активность - + Новое подключение - + Новая папка - + AddNodeFromXML не удалось! - + AddNodesFromSQL не удалось! - + Разрешить только один экземпляр приложения (требуется перезапуск mRemoteNG) - + Всегда - + Подключаться, даже если не прошел проверку - + Всегда показывать диалог выбора панели при открытии подключения - + Всегда показывать панель закладок - + Всегда показывать значок в системном трее - + Спросить позже - + Настроить параметры сейчас - + Использовать рекомендуемые параметры - + {0} автоматически проверяет наличие обновлений с новыми возможностями и исправлениями ошибок. Рекомендуется разрешить {0} еженедельную проверку обновлений. - + Параметры автоматического обновления - + Вид - + Автоматически получать информацию о сессии - + Автосохранение каждые: - + минут (0 означает отключено) - + Текущая версия - + &Обзор... - + &Отменить - + Изменить - + &Закрыть - + Наследовать по умолчанию - + Свойства по умолчанию - + Отключиться - + Значок - + &Импорт - + Наследование - + Запуск PuTTY - + &Новая - + &Да - + Свойства - + &Сканировать - + &Стоп - + Проверка прокси - + Вы не можете импортировать обычный файл подключения. Для обычных файлов подключений используйте Файл - Открыть подключение! - + Не удается запустить сканирование портов, неверный формат IP! - + Внешний вид - + Подключение - + Учетные данные - + Вид - + Шлюз - + Общие - + Разное - + Протокол - + Локальные ресурсы - + Всегда показывать это окно при запуске - + Обновление - + Ошибка проверки! - + Успешно проверено! - + Для (RDP) сессий должна быть зарегистрирована в системе eolwtscom.dll. mRemoteNG загрузится с этим компонентом, но не зарегистрирует его автоматически. Чтобы зарегистрировать его вручную: Откройте (Пуск - Выполнить) и введите следующую команду: regsvr32 "C:\Program Files\mRemoteNG\eolwtscom.dll" (где C:\Program Files\mRemoteNG\ это путь к установленному mRemoteNG). Если у вас все же не получается зарегистрировать компонент для RDP - обратитесь на {0}. - + EOLWTSCOM был найден и зарегистрирован. - + Для использования движка Gecko у Вас должен быть установлен XULRunner 1.8.1.x Вы можете скачать XULRunner 1.8.1.3 здесь: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/ После загрузки извлеките пакет в любую папку. Потом в mRemoteNG перейдите в меню Инструменты - Опции - Дополнительно и введите правильный путь в поле Путь XULRunner. Если у вас ничего не получилось обратитесь на {0}. - + GeckoFx был найден и установлен правильно. - + ICA требуется установленный XenDesktop Online Plugin и зарегистрированная библиотека wfica.ocx. Вы можете скачать клиент здесь: http://www.citrix.com/download/ Если у вас есть установленный XenDesktop Online Plugin и ничего не работает, попробуйте зарегистрировать wfica.ocx вручную. Для этого откройте (Пуск - Выполнить) и введите следующую команду: regsvr32 "C:\Program Files\Citrix\ICA Client\wfica.ocx" (где C:\Program Files\Citrix \ICA Client\ это путь к XenDesktop Online Plugin). Если у вас все же не работает ICA в mRemoteNG обратитесь на {0}. - + Все компоненты ICA были найдены и зарегистрированы. Citrix ICA Client Control версии {0} - + установлен неправильно - + SSH, Telnet, Rlogin и RAW протоколам нужен для работы PuTTY. PuTTY поставляется с каждым mRemoteNG и находится в папке с программой. Убедитесь, что putty.exe есть в папке с mRemoteNG (по умолчанию: C:\Program Files\mRemoteNG\), или что вы указали правильный путь к исполняемому файлу PuTTY в Инструменты - Опции - Дополнительно - Путь к PuTTY) - + Исполняемый файл PuTTY найден и готов к использованию. - + Для правильной работы RDP необходимо иметь установленный Remote Desktop Connection (Terminal Services Client) 8.0. Вы можете получить его здесь: https://support.microsoft.com/kb/2592687 Если у вас есть установленный RDP 8.0 и подключиться не удается, попробуйте зарегистрироваться mstscax.dll вручную. Для этого откройте (Пуск - Выполнить) и введите следующую команду: regsvr32 "C:\Windows\system32\mstscax.dll" (где C:\ваш системный диск). Если у вас возникли проблемы при работе с RDP обратитесь на {0}. - + Все RDP компоненты были найдены и зарегистрированы. Remote Desktop Connection, Control Version {0} - + VNC требуется VncSharp.dll который находится в папке с mRemoteNG. Убедитесь, что у вас есть VncSharp.dll в папке mRemoteNG (обычно C:\Program Files\mRemoteNG\). Если у вас все же не работает VNC в mRemoteNG обратитесь на {0}. - + Все VNC компоненты были найдены и зарегистрированы. VncSharp Control Version {0} - + Автоматически пытаться восстановить связь при отключении от сервера (только RDP и ICA) - + Домен - + Больше не показывать это сообщение. - + Наследование - + Пароль - + Требуется авторизация - + Использовать собственный путь к PuTTY: - + Переподключиться, когда будет готово - + Использовать прокси-сервер - + Пользователь - + Ждать выхода - + Проверить - + Проверять наличие обновлений при запуске - + Проверить - + При запуске проверять правильность установки компонентов - + Выбрать панель перед подключением - + Закрытые порты - + Свернуть все папки - + Аргументы - + Отображаемое имя - + Имя файла - + Имя хоста/IP - + Сообщение - + Пользователь - + Ждать выхода - + Невозможно разобрать аргументы командной строки! - + {0} обнаружено что на этой системе работает утилита Lenovo Auto Scroll. Известно, что эта утилита вызывает проблемы с {0}. Рекомендуется отключить или удалить ее. - + Обнаружена проблема совместимости - + Проверка компонентов - + Ошибка btnIcon_Click! - + Ошибка ShowHideGridItems! - + Ошибка IconMenu_Click! - + Ошибка свойства Grid opject! - + Ошибка SetHostStatus! - + Ошибка pGrid_PopertyValueChanged! - + Ошибка загрузки Config UI! - + Хотите закрыть подключение: "{0}"? - + Хотите закрыть панель "{0}"? Все ее подключения также будут закрыты. - + Хотите удалить внешний инструмент, "{0}"? - + Хотите удалить {0} выбранные внешние инструменты? - + Хотите удалить подключение, "{0}"? - + Хотите удалить пустую папку, "{0}"? - + Хотите удалить папку "{0}"? Любые папки или подключения, которые она содержит также будут удалены. - + Хотите закрыть все открытые подключения? - + Вы действительно хотите сбросить панели в настройки по умолчанию? - + Подключиться - + Подключение в полноэкранном режиме - + Подключение... - + Журнал подключений - + Подключение к системе "{0}" через "{1}" созданого пользователя "{2}" (Описание: "{3}"; Пользователь: "{4}") - + Подключиться не удалось! - + Журнал событий ErrorOccured - + Открыть подключение не удалась! - + Невозможно открыть подключение: имя хоста не указано! - + Ошибка RDP! Код ошибки: {0} Описание ошибки: {1} - + Подключения - + Не удается установить порт по умолчанию! - + Не удалось создать резервную копию файла подключений! - + Не удалось импортировать подключения в файл! - + Файл подключений "{0}" невозможно загрузить! - + Файл подключений "{0}" невозможно загрузить! Создайте новый файл подключений. - + Невозможно сохранить файл подключений! - + Невозможно сохранить файл в качестве подключения "{0}"! - + Подключение к сеансу пользователя (Сеанс консоли) - + Подключение (с параметрами) - + Подключение к {0} по {1} закрыто пользователем {2}. - + Подключение к {0} по {1} закрыто пользователем {2}. (Описание: "{3}"; Пользователь: "{4}") - + Подключение закрыто - + Подключение закрыть не удалось! - + Не удается создать новый файл подключений! - + Не удалось найти элемент управления ToolStrip в FilteredPropertyGrid. - + Установленная версия - + Тема по умолчанию - + Обнаружение - + Не подключать без проверки - + Двойной щелчок для закрытия вкладки - + Загрузка и установка - + Дублировать - + Хотите продолжить без пароля? - + Использовать пустое имя пользователя пароль или домен: - + 128-бит - + 128-бит (только при входе) - + 40-бит - + 56-бит - + Основное - + Шифровать файл подключения - + Конечный IP - + Конечный порт - + Ошибка добавления внешнего приложения на Панель (frmMain). {0} - + Ошибка AddFolder (UI.Window.Tree). {0} - + Версия базы данных {0} не совместима с этой версией {1}. - + Ошибка CloneNode (Tree.Node). {0} - + Код ошибки {0}. - + Невозможно сохранить список подключений. - + Не удалось расшифровать. {0} - + Не удалось зашифровать. {0} - + Ошибки - + Ошибка загрузки файла соединения.{0}{0}{2}{0}{3}{0}{0}Для предотвращения потери данных, {1} будет выполнен выход. - + Ошибка VerifyDatabaseVersion (Config.Connections.Save). {0} - + Раскрыть все папки - + Экспериментально - + Экспорт - + Экспорт mRemote/mRemoteNG XML - + Внешнее Приложение - + Использованы значки [FAMFAMFAM] - + Все файлы (*.*) - + Файлы приложений (*. EXE) - + mRemote CSV-файлы (*. CSV) - + mRemote XML-файлы (*. XML) - + RDP-файлы (*. RDP) - + visionapp Remote Desktop 2008 CSV-файлы (*. CSV) - + Наследовать {0} - + Описание наследованного свойства: {0} - + Свободный - + Во весь экран - + Главная - + Получить информацию о подключении из SQL не удалось - + Ошибка при загрузке подключения "{0}" на "{1}". {2} - + Автопереподключение - + Соединение - + Свойства внешнего инструмента - + Файлы - + Хост - + Ошибка HTTP подключения! - + Не удается создать новое подключение HTTP! - + Изменение HTTP документа не удалось! - + Не удалось задать параметры HTTP! - + Не удается создать новое подключение ICA! - + Не удалось загрузить ICA-плагин! - + Ошибка установки учетных данных ICA! - + Не удалось установить обработчик событий ICA! - + Не удалось задать параметры ICA! - + Ошибка установки разрешений ICA! - + Определить вкладки быстрых подключений, добавляя префикс «Quick:» - + Импорт из Active Directory - + Импорт/Экспорт - + Импорт mRemote/mRemoteNG XML - + Импорт из просканированных портов - + Импорт из RDP-файла (ов) - + Неактивный - + Информация - + mRemoteNG в актуальном состоянии - + Подключение не удалось! - + Не удалось завершить процесс внутреннего приложения! - + Внутренний инструмент: Ошибка получения фокуса! - + Обработчик Внутр. инструментов: {0} - + Не удалось завершить процесс внутреннего приложения! - + Панель обработчика событий: {0} - + Внутренний инструмент: Ошибка изменения размера! - + --- Внутреннее приложение --- - + Заголовок внешнего инструмента: {0} - + CTRL+ALT+DEL - + CTRL-ESC - + Адрес: - + Аргументы: - + История версий: - + При закрытии подключений: - + &Подключение: - + Отображаемое имя: - + Домен: - + Имя файла: - + Имя хоста: - + Опции: - + Пароль: - + Порт: - + Портативная версия - + Протокол: - + Нажмите на эту кнопку для настройки сессий PuTTY: - + Максимальное время ожидание PuTTY и внешнего приложения: - + Выпущено под лицензией GNU General Public License (GPL) - + Секунд - + Выберите панель из списка или нажмите кнопку Новая, чтобы создать новую. Нажмите кнопку OK, чтобы продолжить. - + Состояние сервера: - + База данных: - + База данных: - + Пользователь: - + Проверка: - + Язык - + (Автоопределение) - + {0} необходимо перезапустить, чтобы изменения языка вступили в силу. - + Загрузить из SQL не удалось! - + Загрузить из XML не удалось! - + Локальный файл - + Локальный файл не существует! - + Выход - + Записать в файл отчета не удалось! - + Невозможно сохранить отчет в папке назначения. - + Использовано Magic library от [Crownwood Software] - + О программе - + Добавить Панель подключения - + Проверка наличия обновлений - + Конфигурация - + Подключаться - + Панель подключений - + Подключения - + Подключения и конфигурация - + Копировать - + Ctrl-Alt-Del - + Ctrl-Esc - + Удалить... - + Удалить подключение... - + Удалить внешний инструмент... - + Удалить папку... - + Отключить - + Помочь проекту - + Дублировать - + Дубликат подключения - + Дублировать папку - + Дублировать вкладку - + Выход - + Внешние инструменты - + Внешние инструменты - + &Файл - + Во весь экран - + Во весь экран (RDP) - + &Справка - + Справка mRemoteNG - + Перейти к - + Запуск внешних инструментов - + Новый файл подключения - + Новый внешний инструмент - + Уведомления - + Скопировать все - + Удалить - + Удалить все - + Открыть файл подключения... - + Опции - + Вставить - + Сканер портов - + Панель Быстрое подключение - + Переподключение - + Обновить экран (VNC) - + Переименовать - + Переименовать подключение - + Переименовать папку - + Переименовать закладку - + Сообщить об ошибке - + Сброс - + Сохранить подключение - + Сохранить подключение как... - + Скриншот - + Менеджер скриншотов - + Отправить спец. клавиши (VNC) - + Сессии - + Сессии и скриншоты - + Показать текст справки - + Показать текст - + SmartSize (RDP/VNC) - + Передача файлов по SSH - + Начать чат (VNC) - + Форум поддержки - + &Инструменты - + Передача файлов (SSH) - + &Вид - + Просмотр (VNC) - + Веб-сайт - + Минимизировать в системный трей - + Вниз - + Вверх - + Мои текущие учетные данные (Windows учетные данные) - + Никогда - + Новое подключение - + Новая папка - + Новая панель - + Новый корень - + Новое название - + Нет - + Без сжатия - + Не указано внешнее приложение. - + + Нет данных + + ничто - - ничто - - + Нормальный - + SmartSize недоступен - + Нет доступных обновлений - + Вы пытаетесь загрузить файл подключения, созданного с помощью очень ранней версии mRemote, это может привести к ошибке выполнения. Пожалуйста, создайте новый файл подключения! - + Открытие новой вкладки справа от выбранной вкладки - + Открытые порты - + Тема - + &Удалить - + &Новая - + Название группы - + Защита паролем - + Пожалуйста, заполните все поля - + Не удалось загрузить панель Сканера портов! - + (Эти свойства будут сохранены только если вы выберете mRemote/mRemoteNG XML в качестве выходного формата файлов!) - + Введите имя хоста или IP к которому вы хотите подключиться. - + Переключить все наследуемые параметры. - + Выберите используемый уровень авторизации. - + Выберите способ авторизации на сервере VNC. - + Выберите использовать или нет, кэширование графики. - + Выберите качество цвета, которое будет использоваться. - + Выберите значение сжатия, которое будет использоваться. - + Введите здесь заметки или описания для подключения. - + Выберите Да, если хотите использовать тему Рабочего стола на удаленном хоста. - + Выберите Да, если хотите использовать обои Рабочего стола на удаленном хосте. - + Введите имя домена. - + Использование композиции Рабочего стола на удаленном хосте. - + Использование сглаживания шрифтов. - + Режим кодирования. - + Шифрование на удаленном хосте. - + Внешний инструмент, который нужно запустить. - + Внешний инструмент, который нужно запустить на удаленном компьютере после отключения. - + Внешний инструмент, который нужно запустить на удаленном компьютере до подключения. - + Значок, который будет отображаться при подключении к хосту. - + Введите МАС-адрес удаленного хоста, если вы хотите использовать его во внешнем инструменте. - + Это имя, которое будет отображаться в дереве подключений. - + Установить панель, в которой будет открыто подключение. - + Введите пароль. - + Введите порт выбранного протокола. - + Выберите протокол, который должен использоваться для подключения. - + Выберите сессию PuTTY, которая будет использоваться при подключении. - + Определите доменное имя, для подключения к шлюзу Служб терминалов. - + Определите имя хоста шлюза Служб терминалов. - + Укажите, когда использовать шлюз Служб терминалов. - + Укажите, следует ли войти на шлюз, использующий то же имя пользователя и пароль подключения. - + Укажите имя пользователя, которому разрешено подключаться к шлюзу Служб терминалов. - + Укажите, будут ли доступны локальные диски на удаленном хосте. - + Укажите, будут ли перенаправлены локальные комбинации клавиш (например, Alt-Tab) на удаленный хост. - + Укажите, будут ли доступны локальные порты (т.е. COM, LPT) на удаленном хосте. - + Укажите, будут ли локальные принтеры доступны на удаленном хосте. - + Укажите, будут ли локальные смарт-карты доступны на удаленном хосте. - + Укажите, будет ли перенаправлен удаленный звук на локальный компьютер. - + Выберите один из доступных движков рендеринга, который будет использоваться для отображения HTML. - + Выберите разрешение экрана в дюймах или режим отображения для этого подключения - + Выберите SmartSize. - + Подключение к текущему сеансу удаленного пользователя. - + Использовать поставщика поддержки безопасности (CredSSP) для проверки подлинности учетных данных, если он доступен. - + Введите любую информацию. - + Введите имя пользователя. - + Если вы хотите установить режим Просмотра - выберите Да. - + Введите адрес прокси-сервера. - + Введите пароль для авторизации на прокси-сервере. - + Введите порт прокси-сервера. - + Если вы используете прокси для туннелирования VNC подключений, выберите тип туннелирования. - + Введите имя пользователя для авторизации на прокси-сервере. - + Имя хоста / IP - + Все - + Авторизация - + Режим авторизации - + Кэш графики - + Цвета - + Сжатие - + Описание - + Показать темы - + Показать обои - + Домен - + Композиция рабочего стола - + Шрифты - + Кодирование - + Шифрование - + Внешний инструмент - + Внеш. Инстр. После - + Внеш. Инстр. До - + Значок - + MAC-адрес - + Имя - + Имя вкладки - + Пароль - + Порт - + Протокол - + Сессии PuTTY - + Шлюз Домена - + Хост Шлюза - + Пароль шлюза Служб терминалов - + Шлюз - + Учетные данные шлюза - + Имя пользователя шлюза - + Диски - + Комбинации клавиш - + Порты - + Принтеры - + Смарт-карты - + Звуки - + Рендеринг - + Размер экрана - + SmartSize режим - + Сеанс консоли - + Использовать проверку подлинности CredSSP - + Дополнительно - + Пользователь - + Только Просмотр - + Адрес прокси - + Пароль Прокси - + Порт Прокси - + Тип Прокси - + Пользователь Прокси - + Протокол событий Отключен. Сообщение: {0} - + Протокол событий Отключение не удалось. {0} - + Протокол импорта - + Проверка прокси - неудачна! - + Проверка Прокси - удачна! - + Подключение не удалось! - + Завершить Putty - не удалось! - + Не удается установить фокус! - + Получить сессию Putty не удалось! - + Обработчик Putty: {0} - + Убить процесс Putty не удалось! - + Панель обработчиков: {0} - + Ошибка изменения размера окна Putty! - + Сохраненные сессии PuTTY - + Настройки PuTTY - + Показать настройки PuTTY не удалось! - + Не удалось запустить Putty! - + --- PuTTY --- - + Заголовок PuTTY: {0} - + Быстрое: {0} - + Быстрое подключение - + Ошибка добавления Быстрого подключения! - + Создать быстрое подключение не удалось - + Предупреждать при закрытии подключений - + Предупреждать меня только при выходе из mRemoteNG - + Предупреждать меня только при закрытии нескольких подключений - + Не предупреждать при закрытии подключений - + RAW - + RDP - + 16777216 цв. (24-бит) - + 256 цв. (8-бит) - + 32768 цв. (15-бит) - + 16777216 цв. (32-бит) - + 65536 цв. (16-бит) - + RDP Добавить разрешение не удалось! - + RDP Добавить разрешение не удалось! - + Добавить сессию не удалось - + Закрыть подключение RDP не удалось! - + Не удается создать RDP подключение, пожалуйста, проверьте настройки mRemoteNG. - + Отключить мигание курсора - + Отключить тень курсора - + Отключить отображение окна при перетаскивании - + Отключить Анимацию - + Отключить Темы - + Отключить обои Рабочего стола - + RDP отключен! - + RDP не удалось отключить, попробуйте закрыть его! - + Внутренняя ошибка: код 1. - + Внутренняя ошибка: код 2. - + Внутренняя ошибка: код 3. Это недопустимый режим. - + Внутренняя ошибка: код 4. - + Произошла неисправимая ошибка во время подключения клиента. - + Невозможно получить GetError (Критическая ошибка) - + Произошла неизвестная критическая ошибка RDP. Код ошибки {0}. - + Произошла ошибка из-за нехватки памяти. - + Неизвестная ошибка. - + При создании окна произошла ошибка. - + Ошибка инициализации Winsock. - + Не удалось импортировать RDP файл! - + В окне - + RDP: Ошибка получения фокуса! - + Шлюз Служб терминалов поддерживается. - + Шлюз Служб терминалов не поддерживается! - + Ошибка сессии! - + Количество переподключений RDP: - + RDP: Установить уровень проверки подлинности не удалась! - + RDP: Не удалось использовать консольную сессию! - + Настройка переключения консолей для RDC {0}. - + Ошибка установки учетных данных RDP! - + Ошибка RDP SetEventHandlers! - + Ошибка установки шлюза RDP! - + Ошибка RDP SetPerformanceFlags! - + Не удалось задать порт RDP! - + Не удалось задать параметры RDP! - + Установить перенаправление в RDP не удалось! - + Установить перенаправление клавиш в RDP не удалось! - + Ошибка установки разрешения RDP! - + Smart Size - + Передать на этот компьютер - + Не воспроизводить - + Оставить на удаленном компьютере - + Не удалось переключить RDP в режим Fullscreen! - + Не удалось переключить RDP в режим SmartSize! - + При запуске подключаться к предыдущим сессиям - + Обновление - + Удалить файл - + Удалить все - + Переименовать - + Rlogin - + Сохранить - + Сохранить все - + Перед загрузкой нового подключения, хотите сохранить текущий файл подключения? - + Сохранять подключения при выходе - + Файл Graphics Interchange Format (GIF.) | *. GIF | Файл Joint Photographic Experts Group (JPEG.) | *. JPEG | Файл Joint Photographic Experts Group (JPG.) | *. JPG | Файл Portable Network Graphics (PNG). | *. PNG - + Экран - + Скриншот - + Скриншоты - + Поиск - + Отправить... - + Получить фоновую сессию не удалось - + Завершение фоновой сессии не удалось - + Установить имя хоста, как отображаемое имя при создании новых подключений - + Настройка основной текстовой формы не удалось - + Не удалось сохранить настройки, или разместить значок в системном трее! - + Показывать подсказки в дереве подключений - + Показывать в заголовке окна полный путь к файлу подключений - + Показать сведения о входе в названии вкладок - + Показывать протокол в названии вкладок - + Один клик по подключению для его открытия - + Один клик по открытому подключению переключается на него - + Вид - + Свободный - + SmartSize недоступен - + Socks 5 - + Сортировать - + По возрастанию (A-Z) - + По убыванию (Z-A) - + Специальные клавиши - + Для дополнительной информации см. справку - Начало работы - конфигурация SQL! - + SQL Server - + Доступно обновление для SQL! Обновите подключения. - + SSH version 1 - + SSH version 2 - + Фоновая передача по SSH - не удалась! - + Передано успешно! - + Передача по SSH завершена с ошибкой (UI.Window.SSHTransfer)! - + SSH ошибка передачи. - + Начальный IP - + Начальный порт - + Запуск / Выход - + Статус - + Переключится на панель уведомлений: - + Дополнительно - + Внешний вид - + Вкладки и панели - + Обновления - + Telnet - + Установить вручную: - + Конфигурация - + Подключения - + Общие - + Цвет фона панели конфигурации. - + Цвет текста категории на панели конфигурации. - + Цвет линий сетки на панели конфигурации - + Цвет фона области справки панели конфигурации. - + Цвет текста в области справки панели конфигурации. - + Цвет текста в панели конфигурации. - + Цвет фона панели подключений. - + Цвет текста в панели подключений. - + Цвет линий дерева на панели подключений. - + Цвет фона меню. - + Цвет текста в меню. - + Цвет фона поля поиска. - + Цвет текста в поле поиска. - + Цвет текста подсказки в поле поиска. - + Цвет фона панели инструментов. - + Цвет текста в панели инструментов. - + Цвет фона главного окна. - + Цвет фона панели конфигурации - + Цвет текста категории панели конфигурации - + Цвет линий сетки панели конфигурации - + Цвет фона справки панели конфигурации - + Цвет текста справки панели конфигурации - + Цвет текста панели конфигурации - + Цвет фона панели подключений - + Цвет текста панели подключений - + Цвет линий дерева панели подключений - + Цвет фона меню - + Цвет текста меню - + Цвет фона поля поиска - + Цвет текста поля поиска - + Цвет текста подсказки поля поиска - + Цвет фона панели инструментов - + Цвет текста панели инструментов - + Цвет фона окна - + Ошибка ({0}) - + Информация ({0}) - + Пароль - + Выбор Панели - + Предупреждение ({0}) - + Передача - + Передача не удалась! - + Интеграция - + Тип - + Ultra VNC Repeater - + Порт UltraVNC SingleClick: - + Снимите свойства, которые не хотите сохранять! - + Безымянный тема - + Требуется обновление mRemoteNG - + mRemoteNG может периодически подключаться к сайту mRemoteNG для проверки наличия обновлений. - + Не удалось завершить проверку обновлений! - + Портативная версия mRemoteNG не поддерживает автообновление. - + Загрузка завершена! mRemoteNG сейчас прекратит работу и начнет процесс установки обновлений. - + Не удалось завершить загрузку! - + Не удалось скачать обновление! - + Каждые {0} дней - + Ежедневно - + Ежемесячно - + Еженедельно - + Использовать другое имя пользователя и пароль - + Пользователь - + Использовать те же имя пользователя и пароль - + Использовать смарт-карты - + Использовать SQL Server для загрузки и сохранения подключений - + Версия - + VNC - + Не удалось отключить VNC! - + Не удалось обновить экран VNC! - + Не удалось послать VNC спец. клавиши! - + Не удалось установить обработчик событий VNC! - + Не удалось задать параметры VNC! - + Не удалось начать VNC чат! - + Не удалось переключить VNC в SmartSize! - + Не удалось переключить VNC в режим Просмотра! - + Предупреждать, если не прошел проверку - + Предупреждения - + Использовано DockPanel Suite от [Weifen Luo] - + http://sourceforge.net/projects/dockpanelsuite/ - + Путь XULRunner: - + Да - + Переподключить все открытые соединения - + Рабочий каталог: - + &Запуск - + Выполнить с повышенными правами - + Выполнить с повышенными правами - + Отобразить на панели инструментов: - + Отобразить на панели инструментов - + Попробовать интегрировать - + Рабочий каталог - + Экспорт в файл... - + Импорт из &файла... - + &Импорт - + Закрепить позицию панели инструментов - + Панель инструментов SSH - + Назначенные учетные данные - + Экспортировать все - + Файл экспорта - + Пункт импорта - + Экспорт свойств - + Экспорт выбранного соединения - + Экспорт выбранной папки - + Формат файла: - + Импорт подразделений - + Используйте кодировку UTF8 для свойства RDP "Информация о балансе нагрузки" - + Время ожидания в секундах: - - Активный каталог - - - В&ыход {0} - - - &Открыть файл подключения - - - &Попробуй еще раз - - - Подключение без учетных данных - - - Не подключайтесь к сеансу консоли - - - PuTTY не может быть запущен. - - - Новый внешний инструмент - - - http://www.famfamfam.com/ - - - Все импортируемые файлы - - - Файлы диспетчера соединений PuTTY - - - Файлы диспетчера подключений удаленного рабочего стола (* .rdg) - - - HTTP - - - геккон (Firefox) - - - Интернет Эксплорер - - - HTTPS - - - ICA - - - Произошла ошибка при импорте файла "{0}". - - - Импортировать не удалось - - - Под корнем {0} {1} | Под выбранной папке {0} {2} - - - Где бы вы хотели разместить импортируемое содержимое? - - - Место импорта - - - Не удалось загрузить информацию о соединении с SQL-сервера. - - - http://www.dotnetmagic.com/ - - - Извлечь - - - mRemoteNG CSV - - - mRemoteNG XML - - - &Удалить - - - &Новый - - - &Восстановить значения по умолчанию - - - Сбросить &все по умолчанию - - - Вкладки - - - Новая вкладка - - - Предыдущая вкладка - - - Изменить ярлык - - - Горячие клавиши - - - Тестирование... - - - Клавиатура - - - Оба пароля должны совпадать. - - - Пароль должен содержать не менее 3 символов. - - - Сканирование портов завершено. - - - Выберите, следует ли автоматически изменять размер соединения при изменении размера окна или при переключении полноэкранного режима. Требуется RDC 8.0 или выше. - - - Задает информацию о балансировке нагрузки для использования маршрутизаторами балансировки нагрузки для выбора лучшего сервера. - - - Автоматическое изменение размера - - - Информация о балансе нагрузки - - - Настройки сеанса PuTTY - - - Пароль для {0} - - - Ошибка проверки - - - Проверка обновлений... - - - Журнал изменений не может быть загружен. - - - Время ожидания соединения RDP - - - Этот узел уже находится в этой папке. - - - Не удается перетащить узел на себя. - - - Не удается перетащить родительский узел на дочерний. - - - Этот узел не перетаскивается. - - - Режим блочного шифрования - - - Механизм шифрования - - - Безопасность - - - Инициирование функции вывода ключей - - - Динамический - - - Высокий - - - Cредний - - - Выберите Качество звука, предоставляемое протоколом: Динамический, Средний, Высокий - - - Качество звука - - - Скачивание завершено! - - - Скачать - - - Количество минут для сеанса RDP, чтобы сидеть без дела перед автоматическим отключением (для неограниченного использования 0) - - - Минуты в режим ожидания - - - Приминить - - - Добавить - - - Редактор учетных данных - - - Менеджер учетных данных - - - Номер - - - Удалить - - - Заглавие - - - Выберите, какие учетные данные использовать для этого подключения. - - - Вы действительно хотите удалить учетную запись, {0}? - - - Не удалось найти запись учетных данных с идентификатором соответствия "{0}" для записи соединения с именем "{1}". - - - Выберите, следует ли получать оповещение после отключения сеанса RDP из-за неактивности - - - Предупреждение о отключении питания - - - Пароль должен содержать не менее {0} следующих символов: {1} - - - Пароль должен содержать не менее {0} символов нижнего регистра - - - Пароль должен содержать не менее {0} номер (а) - - - Пароль должен содержать не менее {0} символ верхнего регистра - - - Длина пароля должна быть между {0} и {1} - - - Выберите путь для файла журнала mRemoteNG - - - Отладка - - - Показывать эти типы сообщений - - - Путь к файлу журнала - - - Зарегистрируйте эти типы сообщений - - - Выберите путь - - - Открыть файл - - - Использовать по умолчанию - - - Логирование - - - Всплывающие окна - - - Войдите в каталог приложений - - - Разрешить однократно - - - Разрешить однократно - - - Не разрешать - - - Разрешить небезопасный сертификат для ссылки: {0}? - - - Разрешить небезопасный сертификат? - - - Выбранный репозиторий разблокирован - - - неверный пароль - - - Источник - - - Разблокирование - - - Разблокировать репозиторий учетных данных - - - Разблокировать - - - Запрос на разблокирование учетных записей при запуске - - - Полномочия - - - Обновить - - - Назад - - - Путь к файлу подключения - - - Создание и открытие нового файла - - - Открыть другой файл - - - В v1.76 мы внедрили систему управления учетными данными. Эта функция требует значительных изменений в том, как мы храним и взаимодействуем с учетными данными в mRemoteNG. Вам потребуется выполнить одностороннее обновление файла соединений mRemoteNG. + + Активный каталог + + + В&ыход {0} + + + &Открыть файл подключения + + + &Попробуй еще раз + + + Подключение без учетных данных + + + Не подключайтесь к сеансу консоли + + + PuTTY не может быть запущен. + + + Новый внешний инструмент + + + http://www.famfamfam.com/ + + + Все импортируемые файлы + + + Файлы диспетчера соединений PuTTY + + + Файлы диспетчера подключений удаленного рабочего стола (* .rdg) + + + HTTP + + + геккон (Firefox) + + + Интернет Эксплорер + + + HTTPS + + + ICA + + + Произошла ошибка при импорте файла "{0}". + + + Импортировать не удалось + + + Под корнем {0} {1} | Под выбранной папке {0} {2} + + + Где бы вы хотели разместить импортируемое содержимое? + + + Место импорта + + + Не удалось загрузить информацию о соединении с SQL-сервера. + + + http://www.dotnetmagic.com/ + + + Извлечь + + + mRemoteNG CSV + + + mRemoteNG XML + + + &Удалить + + + &Новый + + + &Восстановить значения по умолчанию + + + Сбросить &все по умолчанию + + + Вкладки + + + Новая вкладка + + + Предыдущая вкладка + + + Изменить ярлык + + + Горячие клавиши + + + Тестирование... + + + Клавиатура + + + Оба пароля должны совпадать. + + + Пароль должен содержать не менее 3 символов. + + + Сканирование портов завершено. + + + Выберите, следует ли автоматически изменять размер соединения при изменении размера окна или при переключении полноэкранного режима. Требуется RDC 8.0 или выше. + + + Задает информацию о балансировке нагрузки для использования маршрутизаторами балансировки нагрузки для выбора лучшего сервера. + + + Автоматическое изменение размера + + + Информация о балансе нагрузки + + + Настройки сеанса PuTTY + + + Пароль для {0} + + + Ошибка проверки + + + Проверка обновлений... + + + Журнал изменений не может быть загружен. + + + Время ожидания соединения RDP + + + Этот узел уже находится в этой папке. + + + Не удается перетащить узел на себя. + + + Не удается перетащить родительский узел на дочерний. + + + Этот узел не перетаскивается. + + + Режим блочного шифрования + + + Механизм шифрования + + + Безопасность + + + Инициирование функции вывода ключей + + + Динамический + + + Высокий + + + Cредний + + + Выберите Качество звука, предоставляемое протоколом: Динамический, Средний, Высокий + + + Качество звука + + + Скачивание завершено! + + + Скачать + + + Количество минут для сеанса RDP, чтобы сидеть без дела перед автоматическим отключением (для неограниченного использования 0) + + + Минуты в режим ожидания + + + Приминить + + + Добавить + + + Редактор учетных данных + + + Менеджер учетных данных + + + Номер + + + Удалить + + + Заглавие + + + Выберите, какие учетные данные использовать для этого подключения. + + + Вы действительно хотите удалить учетную запись, {0}? + + + Не удалось найти запись учетных данных с идентификатором соответствия "{0}" для записи соединения с именем "{1}". + + + Выберите, следует ли получать оповещение после отключения сеанса RDP из-за неактивности + + + Предупреждение о отключении питания + + + Пароль должен содержать не менее {0} следующих символов: {1} + + + Пароль должен содержать не менее {0} символов нижнего регистра + + + Пароль должен содержать не менее {0} номер (а) + + + Пароль должен содержать не менее {0} символ верхнего регистра + + + Длина пароля должна быть между {0} и {1} + + + Выберите путь для файла журнала mRemoteNG + + + Отладка + + + Показывать эти типы сообщений + + + Путь к файлу журнала + + + Зарегистрируйте эти типы сообщений + + + Выберите путь + + + Открыть файл + + + Использовать по умолчанию + + + Логирование + + + Всплывающие окна + + + Войдите в каталог приложений + + + Разрешить однократно + + + Разрешить однократно + + + Не разрешать + + + Разрешить небезопасный сертификат для ссылки: {0}? + + + Разрешить небезопасный сертификат? + + + Выбранный репозиторий разблокирован + + + неверный пароль + + + Источник + + + Разблокирование + + + Разблокировать репозиторий учетных данных + + + Разблокировать + + + Запрос на разблокирование учетных записей при запуске + + + Полномочия + + + Обновить + + + Назад + + + Путь к файлу подключения + + + Создание и открытие нового файла + + + Открыть другой файл + + + В v1.76 мы внедрили систему управления учетными данными. Эта функция требует значительных изменений в том, как мы храним и взаимодействуем с учетными данными в mRemoteNG. Вам потребуется выполнить одностороннее обновление файла соединений mRemoteNG. На этой странице вы расскажете о процессе обновления файла подключений или предоставите возможность открыть другой файл подключений, если вы не хотите выполнять обновление. - - - Учетные данные недоступны - - - Вы действительно хотите удалить тему? - - - Включить темы - - - Новое название темы - - - Невозможно создать тему, имя уже присутствующее или специальные символы в названии - - - Введите новое название темы - - - Темы не загружены, проверьте, существуют ли по умолчанию темы mRemoteNG в папке «Темы» - - - Не удалось найти внешний инструмент с именем "{0}" - - - Создать новый файл подключения - - - Файл подключения не найден. - - - Импорт существующего файла - - - Использовать настраиваемый путь к файлу - - - Тестирование соединения - - - Сервер '{0}' не был доступен. - - - Соединение успешно - - - Ошибка входа для пользователя '{0}'. - - - База данных '{0}' недоступна. - - - Сохранять соединения после каждого редактирования - - - Фильтрация совпадений поиска в дереве соединений - - - Тестовое соединение - - - Только чтение: - - - Использовать кодировку UTF8 для свойства RDP «Информация о балансе загрузки» - - - Заблокировать позиции панели инструментов - - - Панель инструментов Multi SSH - - - Расширенные параметры безопасности - - - Параметры mRemoteNG - - - Создайте пустую панель при запуске mRemoteNG - - + + + Учетные данные недоступны + + + Вы действительно хотите удалить тему? + + + Включить темы + + + Новое название темы + + + Невозможно создать тему, имя уже присутствующее или специальные символы в названии + + + Введите новое название темы + + + Темы не загружены, проверьте, существуют ли по умолчанию темы mRemoteNG в папке «Темы» + + + Не удалось найти внешний инструмент с именем "{0}" + + + Создать новый файл подключения + + + Файл подключения не найден. + + + Импорт существующего файла + + + Использовать настраиваемый путь к файлу + + + Тестирование соединения + + + Сервер '{0}' не был доступен. + + + Соединение успешно + + + Ошибка входа для пользователя '{0}'. + + + База данных '{0}' недоступна. + + + Сохранять соединения после каждого редактирования + + + Фильтрация совпадений поиска в дереве соединений + + + Тестовое соединение + + + Только чтение: + + + Использовать кодировку UTF8 для свойства RDP «Информация о балансе загрузки» + + + Заблокировать позиции панели инструментов + + + Панель инструментов Multi SSH + + + Расширенные параметры безопасности + + + Параметры mRemoteNG + + + Создайте пустую панель при запуске mRemoteNG + + Отключить вкладки справа - + Хотите закрыть все подключения, кроме "{0}"? - + Хотите закрыть все подключения справа от "{0}"? - - Параметр безопасности Windows «Системная криптография: использовать FIPS-совместимые алгоритмы для шифрования, хеширования и подписывания» включен. + + Параметр безопасности Windows «Системная криптография: использовать FIPS-совместимые алгоритмы для шифрования, хеширования и подписывания» включен. См. Статью поддержки Microsoft по адресу http://support.microsoft.com/kb/811833 для получения дополнительной информации. {0} не является полностью FIPS совместимый. Нажмите OK, чтобы продолжить по своему усмотрению, или Отмена, чтобы выйти. - - - Укажите, будут ли буфер обмена должен использоваться совместно. - - - буфер обмена - - - Предупреждение: перезагрузка требуется для принятия каких-либо изменений конфигурации темы. - - - Должно быть от 0 до 255 - - - Вне зоны доступа - - - Удалять... - - - Переподключить все соединения - - - UltraVNC SingleClick - - - Отключите все Но этот - - - Произошла ошибка при попытке переподключиться к узлу RDP '{0}' - - - Произошла ошибка при попытке изменить разрешение соединения для размещения «{0}» - - - Трассировка стека - - - Сообщение исключения - - - mRemoteNG необработанное исключение - - - Произошло необработанное исключение - - - Это исключение заставит mRemoteNG закрыться - - - Копировать имя хоста - - - Разместите панель поиска над деревом соединений - - - Для сканирования одного порта, выберите «Первый порт» только. - - - Отслеживать активное соединение в дереве соединений - - - Всегда показывать вкладки подключения - - - Канал выпуска - - - Стабильный канал включает только финальные релизы. + + + Укажите, будут ли буфер обмена должен использоваться совместно. + + + буфер обмена + + + Предупреждение: перезагрузка требуется для принятия каких-либо изменений конфигурации темы. + + + Должно быть от 0 до 255 + + + Вне зоны доступа + + + Удалять... + + + Переподключить все соединения + + + UltraVNC SingleClick + + + Отключите все Но этот + + + Произошла ошибка при попытке переподключиться к узлу RDP '{0}' + + + Произошла ошибка при попытке изменить разрешение соединения для размещения «{0}» + + + Трассировка стека + + + Сообщение исключения + + + mRemoteNG необработанное исключение + + + Произошло необработанное исключение + + + Это исключение заставит mRemoteNG закрыться + + + Копировать имя хоста + + + Разместите панель поиска над деревом соединений + + + Для сканирования одного порта, выберите «Первый порт» только. + + + Отслеживать активное соединение в дереве соединений + + + Всегда показывать вкладки подключения + + + Канал выпуска + + + Стабильный канал включает только финальные релизы. Бета-канал включает в себя Betas и релиз кандидатов. Канал разработки включает в себя Альф, Betas и релиз кандидатов. - - - Подать заявление - - - Proxy - + + + Приминить + + + Proxy + \ No newline at end of file diff --git a/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.Designer.cs index 9078921e..4f95343b 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.Designer.cs @@ -49,33 +49,36 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkAutomaticallyGetSessionInfo // - this.chkAutomaticallyGetSessionInfo._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkAutomaticallyGetSessionInfo._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkAutomaticallyGetSessionInfo.AutoSize = true; this.chkAutomaticallyGetSessionInfo.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkAutomaticallyGetSessionInfo.Location = new System.Drawing.Point(3, 3); + this.chkAutomaticallyGetSessionInfo.Location = new System.Drawing.Point(4, 4); + this.chkAutomaticallyGetSessionInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkAutomaticallyGetSessionInfo.Name = "chkAutomaticallyGetSessionInfo"; - this.chkAutomaticallyGetSessionInfo.Size = new System.Drawing.Size(220, 17); + this.chkAutomaticallyGetSessionInfo.Size = new System.Drawing.Size(323, 27); this.chkAutomaticallyGetSessionInfo.TabIndex = 0; this.chkAutomaticallyGetSessionInfo.Text = "Automatically get session information"; this.chkAutomaticallyGetSessionInfo.UseVisualStyleBackColor = true; // // lblMaximumPuttyWaitTime // - this.lblMaximumPuttyWaitTime.Location = new System.Drawing.Point(3, 175); + this.lblMaximumPuttyWaitTime.Location = new System.Drawing.Point(4, 260); + this.lblMaximumPuttyWaitTime.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblMaximumPuttyWaitTime.Name = "lblMaximumPuttyWaitTime"; - this.lblMaximumPuttyWaitTime.Size = new System.Drawing.Size(364, 13); + this.lblMaximumPuttyWaitTime.Size = new System.Drawing.Size(546, 29); this.lblMaximumPuttyWaitTime.TabIndex = 7; this.lblMaximumPuttyWaitTime.Text = "Maximum PuTTY wait time:"; this.lblMaximumPuttyWaitTime.TextAlign = System.Drawing.ContentAlignment.TopRight; // // chkAutomaticReconnect // - this.chkAutomaticReconnect._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkAutomaticReconnect._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkAutomaticReconnect.AutoSize = true; this.chkAutomaticReconnect.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkAutomaticReconnect.Location = new System.Drawing.Point(3, 26); + this.chkAutomaticReconnect.Location = new System.Drawing.Point(4, 39); + this.chkAutomaticReconnect.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkAutomaticReconnect.Name = "chkAutomaticReconnect"; - this.chkAutomaticReconnect.Size = new System.Drawing.Size(430, 17); + this.chkAutomaticReconnect.Size = new System.Drawing.Size(645, 27); this.chkAutomaticReconnect.TabIndex = 1; this.chkAutomaticReconnect.Text = "Automatically try to reconnect when disconnected from server (RDP && ICA only)"; this.chkAutomaticReconnect.UseVisualStyleBackColor = true; @@ -83,14 +86,15 @@ namespace mRemoteNG.UI.Forms.OptionsPages // numPuttyWaitTime // this.numPuttyWaitTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.numPuttyWaitTime.Location = new System.Drawing.Point(373, 173); + this.numPuttyWaitTime.Location = new System.Drawing.Point(560, 260); + this.numPuttyWaitTime.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.numPuttyWaitTime.Maximum = new decimal(new int[] { 999, 0, 0, 0}); this.numPuttyWaitTime.Name = "numPuttyWaitTime"; - this.numPuttyWaitTime.Size = new System.Drawing.Size(49, 22); + this.numPuttyWaitTime.Size = new System.Drawing.Size(74, 29); this.numPuttyWaitTime.TabIndex = 7; this.numPuttyWaitTime.Value = new decimal(new int[] { 5, @@ -100,12 +104,13 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkUseCustomPuttyPath // - this.chkUseCustomPuttyPath._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkUseCustomPuttyPath._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkUseCustomPuttyPath.AutoSize = true; this.chkUseCustomPuttyPath.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkUseCustomPuttyPath.Location = new System.Drawing.Point(3, 72); + this.chkUseCustomPuttyPath.Location = new System.Drawing.Point(4, 108); + this.chkUseCustomPuttyPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkUseCustomPuttyPath.Name = "chkUseCustomPuttyPath"; - this.chkUseCustomPuttyPath.Size = new System.Drawing.Size(146, 17); + this.chkUseCustomPuttyPath.Size = new System.Drawing.Size(221, 27); this.chkUseCustomPuttyPath.TabIndex = 3; this.chkUseCustomPuttyPath.Text = "Use custom PuTTY path:"; this.chkUseCustomPuttyPath.UseVisualStyleBackColor = true; @@ -113,9 +118,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // lblConfigurePuttySessions // - this.lblConfigurePuttySessions.Location = new System.Drawing.Point(3, 144); + this.lblConfigurePuttySessions.Location = new System.Drawing.Point(4, 207); + this.lblConfigurePuttySessions.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblConfigurePuttySessions.Name = "lblConfigurePuttySessions"; - this.lblConfigurePuttySessions.Size = new System.Drawing.Size(364, 13); + this.lblConfigurePuttySessions.Size = new System.Drawing.Size(546, 38); this.lblConfigurePuttySessions.TabIndex = 5; this.lblConfigurePuttySessions.Text = "To configure PuTTY sessions click this button:"; this.lblConfigurePuttySessions.TextAlign = System.Drawing.ContentAlignment.TopRight; @@ -123,14 +129,15 @@ namespace mRemoteNG.UI.Forms.OptionsPages // numUVNCSCPort // this.numUVNCSCPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.numUVNCSCPort.Location = new System.Drawing.Point(373, 218); + this.numUVNCSCPort.Location = new System.Drawing.Point(560, 327); + this.numUVNCSCPort.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.numUVNCSCPort.Maximum = new decimal(new int[] { 65535, 0, 0, 0}); this.numUVNCSCPort.Name = "numUVNCSCPort"; - this.numUVNCSCPort.Size = new System.Drawing.Size(72, 22); + this.numUVNCSCPort.Size = new System.Drawing.Size(108, 29); this.numUVNCSCPort.TabIndex = 8; this.numUVNCSCPort.Value = new decimal(new int[] { 5500, @@ -143,20 +150,23 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.txtCustomPuttyPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtCustomPuttyPath.Enabled = false; - this.txtCustomPuttyPath.Location = new System.Drawing.Point(21, 95); + this.txtCustomPuttyPath.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtCustomPuttyPath.Location = new System.Drawing.Point(32, 142); + this.txtCustomPuttyPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtCustomPuttyPath.Name = "txtCustomPuttyPath"; - this.txtCustomPuttyPath.Size = new System.Drawing.Size(346, 22); + this.txtCustomPuttyPath.Size = new System.Drawing.Size(518, 29); this.txtCustomPuttyPath.TabIndex = 4; this.txtCustomPuttyPath.TextChanged += new System.EventHandler(this.txtCustomPuttyPath_TextChanged); // // btnLaunchPutty // - this.btnLaunchPutty._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.HOVER; + this.btnLaunchPutty._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; this.btnLaunchPutty.Image = global::mRemoteNG.Resources.PuttyConfig; this.btnLaunchPutty.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.btnLaunchPutty.Location = new System.Drawing.Point(373, 138); + this.btnLaunchPutty.Location = new System.Drawing.Point(560, 207); + this.btnLaunchPutty.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btnLaunchPutty.Name = "btnLaunchPutty"; - this.btnLaunchPutty.Size = new System.Drawing.Size(110, 25); + this.btnLaunchPutty.Size = new System.Drawing.Size(165, 38); this.btnLaunchPutty.TabIndex = 6; this.btnLaunchPutty.Text = "Launch PuTTY"; this.btnLaunchPutty.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -165,9 +175,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // lblUVNCSCPort // - this.lblUVNCSCPort.Location = new System.Drawing.Point(3, 220); + this.lblUVNCSCPort.Location = new System.Drawing.Point(4, 327); + this.lblUVNCSCPort.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblUVNCSCPort.Name = "lblUVNCSCPort"; - this.lblUVNCSCPort.Size = new System.Drawing.Size(364, 13); + this.lblUVNCSCPort.Size = new System.Drawing.Size(546, 29); this.lblUVNCSCPort.TabIndex = 10; this.lblUVNCSCPort.Text = "UltraVNC SingleClick Listening Port:"; this.lblUVNCSCPort.TextAlign = System.Drawing.ContentAlignment.TopRight; @@ -176,19 +187,21 @@ namespace mRemoteNG.UI.Forms.OptionsPages // lblSeconds // this.lblSeconds.AutoSize = true; - this.lblSeconds.Location = new System.Drawing.Point(428, 175); + this.lblSeconds.Location = new System.Drawing.Point(642, 262); + this.lblSeconds.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblSeconds.Name = "lblSeconds"; - this.lblSeconds.Size = new System.Drawing.Size(49, 13); + this.lblSeconds.Size = new System.Drawing.Size(71, 23); this.lblSeconds.TabIndex = 9; this.lblSeconds.Text = "seconds"; // // btnBrowseCustomPuttyPath // - this.btnBrowseCustomPuttyPath._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.HOVER; + this.btnBrowseCustomPuttyPath._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; this.btnBrowseCustomPuttyPath.Enabled = false; - this.btnBrowseCustomPuttyPath.Location = new System.Drawing.Point(373, 93); + this.btnBrowseCustomPuttyPath.Location = new System.Drawing.Point(560, 140); + this.btnBrowseCustomPuttyPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btnBrowseCustomPuttyPath.Name = "btnBrowseCustomPuttyPath"; - this.btnBrowseCustomPuttyPath.Size = new System.Drawing.Size(75, 23); + this.btnBrowseCustomPuttyPath.Size = new System.Drawing.Size(112, 34); this.btnBrowseCustomPuttyPath.TabIndex = 5; this.btnBrowseCustomPuttyPath.Text = "Browse..."; this.btnBrowseCustomPuttyPath.UseVisualStyleBackColor = true; @@ -196,19 +209,20 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkLoadBalanceInfoUseUtf8 // - this.chkLoadBalanceInfoUseUtf8._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkLoadBalanceInfoUseUtf8._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLoadBalanceInfoUseUtf8.AutoSize = true; this.chkLoadBalanceInfoUseUtf8.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLoadBalanceInfoUseUtf8.Location = new System.Drawing.Point(3, 49); + this.chkLoadBalanceInfoUseUtf8.Location = new System.Drawing.Point(4, 74); + this.chkLoadBalanceInfoUseUtf8.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkLoadBalanceInfoUseUtf8.Name = "chkLoadBalanceInfoUseUtf8"; - this.chkLoadBalanceInfoUseUtf8.Size = new System.Drawing.Size(317, 17); + this.chkLoadBalanceInfoUseUtf8.Size = new System.Drawing.Size(471, 27); this.chkLoadBalanceInfoUseUtf8.TabIndex = 2; this.chkLoadBalanceInfoUseUtf8.Text = "Use UTF8 encoding for RDP \"Load Balance Info\" property"; this.chkLoadBalanceInfoUseUtf8.UseVisualStyleBackColor = true; // // AdvancedPage // - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.chkLoadBalanceInfoUseUtf8); this.Controls.Add(this.chkAutomaticallyGetSessionInfo); @@ -223,9 +237,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.Controls.Add(this.lblUVNCSCPort); this.Controls.Add(this.lblSeconds); this.Controls.Add(this.btnBrowseCustomPuttyPath); - this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); this.Name = "AdvancedPage"; - this.Size = new System.Drawing.Size(610, 490); + this.Size = new System.Drawing.Size(915, 735); ((System.ComponentModel.ISupportInitialize)(this.numPuttyWaitTime)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numUVNCSCPort)).EndInit(); this.ResumeLayout(false); diff --git a/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs index 67ca5202..c5ee713c 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs @@ -54,68 +54,79 @@ this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsPassword); this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsUsername); this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsDomain); - this.pnlDefaultCredentials.Location = new System.Drawing.Point(3, 3); + this.pnlDefaultCredentials.Location = new System.Drawing.Point(4, 4); + this.pnlDefaultCredentials.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.pnlDefaultCredentials.Name = "pnlDefaultCredentials"; - this.pnlDefaultCredentials.Size = new System.Drawing.Size(604, 175); + this.pnlDefaultCredentials.Size = new System.Drawing.Size(906, 262); this.pnlDefaultCredentials.TabIndex = 0; // // radCredentialsCustom // this.radCredentialsCustom.AutoSize = true; - this.radCredentialsCustom.Location = new System.Drawing.Point(3, 62); + this.radCredentialsCustom.BackColor = System.Drawing.Color.Transparent; + this.radCredentialsCustom.Location = new System.Drawing.Point(4, 93); + this.radCredentialsCustom.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.radCredentialsCustom.Name = "radCredentialsCustom"; - this.radCredentialsCustom.Size = new System.Drawing.Size(98, 17); + this.radCredentialsCustom.Size = new System.Drawing.Size(138, 27); this.radCredentialsCustom.TabIndex = 3; this.radCredentialsCustom.Text = "the following:"; - this.radCredentialsCustom.UseVisualStyleBackColor = true; + this.radCredentialsCustom.UseVisualStyleBackColor = false; this.radCredentialsCustom.CheckedChanged += new System.EventHandler(this.radCredentialsCustom_CheckedChanged); // // lblDefaultCredentials // this.lblDefaultCredentials.AutoSize = true; this.lblDefaultCredentials.Location = new System.Drawing.Point(0, 0); + this.lblDefaultCredentials.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblDefaultCredentials.Name = "lblDefaultCredentials"; - this.lblDefaultCredentials.Size = new System.Drawing.Size(279, 13); + this.lblDefaultCredentials.Size = new System.Drawing.Size(413, 23); this.lblDefaultCredentials.TabIndex = 0; this.lblDefaultCredentials.Text = "For empty Username, Password or Domain fields use:"; // // radCredentialsNoInfo // this.radCredentialsNoInfo.AutoSize = true; + this.radCredentialsNoInfo.BackColor = System.Drawing.Color.Transparent; this.radCredentialsNoInfo.Checked = true; - this.radCredentialsNoInfo.Location = new System.Drawing.Point(3, 16); + this.radCredentialsNoInfo.Location = new System.Drawing.Point(4, 24); + this.radCredentialsNoInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.radCredentialsNoInfo.Name = "radCredentialsNoInfo"; - this.radCredentialsNoInfo.Size = new System.Drawing.Size(103, 17); + this.radCredentialsNoInfo.Size = new System.Drawing.Size(149, 27); this.radCredentialsNoInfo.TabIndex = 1; this.radCredentialsNoInfo.TabStop = true; this.radCredentialsNoInfo.Text = "no information"; - this.radCredentialsNoInfo.UseVisualStyleBackColor = true; + this.radCredentialsNoInfo.UseVisualStyleBackColor = false; // // radCredentialsWindows // this.radCredentialsWindows.AutoSize = true; - this.radCredentialsWindows.Location = new System.Drawing.Point(3, 39); + this.radCredentialsWindows.BackColor = System.Drawing.Color.Transparent; + this.radCredentialsWindows.Location = new System.Drawing.Point(4, 58); + this.radCredentialsWindows.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.radCredentialsWindows.Name = "radCredentialsWindows"; - this.radCredentialsWindows.Size = new System.Drawing.Size(252, 17); + this.radCredentialsWindows.Size = new System.Drawing.Size(368, 27); this.radCredentialsWindows.TabIndex = 2; this.radCredentialsWindows.Text = "my current credentials (windows logon info)"; - this.radCredentialsWindows.UseVisualStyleBackColor = true; + this.radCredentialsWindows.UseVisualStyleBackColor = false; // // txtCredentialsDomain // this.txtCredentialsDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtCredentialsDomain.Enabled = false; - this.txtCredentialsDomain.Location = new System.Drawing.Point(126, 138); + this.txtCredentialsDomain.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtCredentialsDomain.Location = new System.Drawing.Point(189, 207); + this.txtCredentialsDomain.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtCredentialsDomain.Name = "txtCredentialsDomain"; - this.txtCredentialsDomain.Size = new System.Drawing.Size(150, 22); + this.txtCredentialsDomain.Size = new System.Drawing.Size(224, 29); this.txtCredentialsDomain.TabIndex = 9; // // lblCredentialsUsername // this.lblCredentialsUsername.Enabled = false; - this.lblCredentialsUsername.Location = new System.Drawing.Point(20, 88); + this.lblCredentialsUsername.Location = new System.Drawing.Point(30, 129); + this.lblCredentialsUsername.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblCredentialsUsername.Name = "lblCredentialsUsername"; - this.lblCredentialsUsername.Size = new System.Drawing.Size(100, 13); + this.lblCredentialsUsername.Size = new System.Drawing.Size(150, 29); this.lblCredentialsUsername.TabIndex = 4; this.lblCredentialsUsername.Text = "Username:"; this.lblCredentialsUsername.TextAlign = System.Drawing.ContentAlignment.TopRight; @@ -124,18 +135,21 @@ // this.txtCredentialsPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtCredentialsPassword.Enabled = false; - this.txtCredentialsPassword.Location = new System.Drawing.Point(126, 112); + this.txtCredentialsPassword.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtCredentialsPassword.Location = new System.Drawing.Point(189, 168); + this.txtCredentialsPassword.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtCredentialsPassword.Name = "txtCredentialsPassword"; - this.txtCredentialsPassword.Size = new System.Drawing.Size(150, 22); + this.txtCredentialsPassword.Size = new System.Drawing.Size(224, 29); this.txtCredentialsPassword.TabIndex = 7; this.txtCredentialsPassword.UseSystemPasswordChar = true; // // lblCredentialsPassword // this.lblCredentialsPassword.Enabled = false; - this.lblCredentialsPassword.Location = new System.Drawing.Point(20, 115); + this.lblCredentialsPassword.Location = new System.Drawing.Point(31, 168); + this.lblCredentialsPassword.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblCredentialsPassword.Name = "lblCredentialsPassword"; - this.lblCredentialsPassword.Size = new System.Drawing.Size(100, 13); + this.lblCredentialsPassword.Size = new System.Drawing.Size(150, 29); this.lblCredentialsPassword.TabIndex = 6; this.lblCredentialsPassword.Text = "Password:"; this.lblCredentialsPassword.TextAlign = System.Drawing.ContentAlignment.TopRight; @@ -144,29 +158,32 @@ // this.txtCredentialsUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtCredentialsUsername.Enabled = false; - this.txtCredentialsUsername.Location = new System.Drawing.Point(126, 86); + this.txtCredentialsUsername.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtCredentialsUsername.Location = new System.Drawing.Point(189, 129); + this.txtCredentialsUsername.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtCredentialsUsername.Name = "txtCredentialsUsername"; - this.txtCredentialsUsername.Size = new System.Drawing.Size(150, 22); + this.txtCredentialsUsername.Size = new System.Drawing.Size(224, 29); this.txtCredentialsUsername.TabIndex = 5; // // lblCredentialsDomain // this.lblCredentialsDomain.Enabled = false; - this.lblCredentialsDomain.Location = new System.Drawing.Point(20, 142); + this.lblCredentialsDomain.Location = new System.Drawing.Point(31, 207); + this.lblCredentialsDomain.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblCredentialsDomain.Name = "lblCredentialsDomain"; - this.lblCredentialsDomain.Size = new System.Drawing.Size(100, 13); + this.lblCredentialsDomain.Size = new System.Drawing.Size(150, 29); this.lblCredentialsDomain.TabIndex = 8; this.lblCredentialsDomain.Text = "Domain:"; this.lblCredentialsDomain.TextAlign = System.Drawing.ContentAlignment.TopRight; // // CredentialsPage // - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.pnlDefaultCredentials); - this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); this.Name = "CredentialsPage"; - this.Size = new System.Drawing.Size(610, 490); + this.Size = new System.Drawing.Size(915, 735); this.pnlDefaultCredentials.ResumeLayout(false); this.pnlDefaultCredentials.PerformLayout(); this.ResumeLayout(false); diff --git a/mRemoteV1/UI/Forms/OptionsPages/NotificationsPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/NotificationsPage.Designer.cs index adc7a3fb..d849bfde 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/NotificationsPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/NotificationsPage.Designer.cs @@ -71,44 +71,48 @@ namespace mRemoteNG.UI.Forms.OptionsPages // labelSwitchToErrorsAndInfos // this.labelSwitchToErrorsAndInfos.AutoSize = true; - this.labelSwitchToErrorsAndInfos.Location = new System.Drawing.Point(177, 25); + this.labelSwitchToErrorsAndInfos.Location = new System.Drawing.Point(266, 38); + this.labelSwitchToErrorsAndInfos.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.labelSwitchToErrorsAndInfos.Name = "labelSwitchToErrorsAndInfos"; - this.labelSwitchToErrorsAndInfos.Size = new System.Drawing.Size(176, 13); + this.labelSwitchToErrorsAndInfos.Size = new System.Drawing.Size(257, 23); this.labelSwitchToErrorsAndInfos.TabIndex = 5; this.labelSwitchToErrorsAndInfos.Text = "Switch to Notifications panel on:"; // // chkSwitchToMCInformation // - this.chkSwitchToMCInformation._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkSwitchToMCInformation._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkSwitchToMCInformation.AutoSize = true; this.chkSwitchToMCInformation.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkSwitchToMCInformation.Location = new System.Drawing.Point(195, 67); + this.chkSwitchToMCInformation.Location = new System.Drawing.Point(292, 100); + this.chkSwitchToMCInformation.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkSwitchToMCInformation.Name = "chkSwitchToMCInformation"; - this.chkSwitchToMCInformation.Size = new System.Drawing.Size(87, 17); + this.chkSwitchToMCInformation.Size = new System.Drawing.Size(126, 27); this.chkSwitchToMCInformation.TabIndex = 6; this.chkSwitchToMCInformation.Text = "Information"; this.chkSwitchToMCInformation.UseVisualStyleBackColor = true; // // chkSwitchToMCErrors // - this.chkSwitchToMCErrors._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkSwitchToMCErrors._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkSwitchToMCErrors.AutoSize = true; this.chkSwitchToMCErrors.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkSwitchToMCErrors.Location = new System.Drawing.Point(195, 113); + this.chkSwitchToMCErrors.Location = new System.Drawing.Point(292, 170); + this.chkSwitchToMCErrors.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkSwitchToMCErrors.Name = "chkSwitchToMCErrors"; - this.chkSwitchToMCErrors.Size = new System.Drawing.Size(51, 17); + this.chkSwitchToMCErrors.Size = new System.Drawing.Size(73, 27); this.chkSwitchToMCErrors.TabIndex = 8; this.chkSwitchToMCErrors.Text = "Error"; this.chkSwitchToMCErrors.UseVisualStyleBackColor = true; // // chkSwitchToMCWarnings // - this.chkSwitchToMCWarnings._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkSwitchToMCWarnings._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkSwitchToMCWarnings.AutoSize = true; this.chkSwitchToMCWarnings.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkSwitchToMCWarnings.Location = new System.Drawing.Point(195, 90); + this.chkSwitchToMCWarnings.Location = new System.Drawing.Point(292, 135); + this.chkSwitchToMCWarnings.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkSwitchToMCWarnings.Name = "chkSwitchToMCWarnings"; - this.chkSwitchToMCWarnings.Size = new System.Drawing.Size(71, 17); + this.chkSwitchToMCWarnings.Size = new System.Drawing.Size(100, 27); this.chkSwitchToMCWarnings.TabIndex = 7; this.chkSwitchToMCWarnings.Text = "Warning"; this.chkSwitchToMCWarnings.UseVisualStyleBackColor = true; @@ -124,9 +128,11 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.groupBoxNotifications.Controls.Add(this.chkSwitchToMCWarnings); this.groupBoxNotifications.Controls.Add(this.chkShowInfoInMC); this.groupBoxNotifications.Controls.Add(this.chkShowDebugInMC); - this.groupBoxNotifications.Location = new System.Drawing.Point(6, 2); + this.groupBoxNotifications.Location = new System.Drawing.Point(9, 3); + this.groupBoxNotifications.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.groupBoxNotifications.Name = "groupBoxNotifications"; - this.groupBoxNotifications.Size = new System.Drawing.Size(601, 141); + this.groupBoxNotifications.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxNotifications.Size = new System.Drawing.Size(902, 212); this.groupBoxNotifications.TabIndex = 0; this.groupBoxNotifications.TabStop = false; this.groupBoxNotifications.Text = "Notifications Panel"; @@ -134,56 +140,61 @@ namespace mRemoteNG.UI.Forms.OptionsPages // labelNotificationsShowTypes // this.labelNotificationsShowTypes.AutoSize = true; - this.labelNotificationsShowTypes.Location = new System.Drawing.Point(6, 25); + this.labelNotificationsShowTypes.Location = new System.Drawing.Point(9, 38); + this.labelNotificationsShowTypes.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.labelNotificationsShowTypes.Name = "labelNotificationsShowTypes"; - this.labelNotificationsShowTypes.Size = new System.Drawing.Size(147, 13); + this.labelNotificationsShowTypes.Size = new System.Drawing.Size(217, 23); this.labelNotificationsShowTypes.TabIndex = 0; this.labelNotificationsShowTypes.Text = "Show these message types:"; // // chkShowErrorInMC // - this.chkShowErrorInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkShowErrorInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkShowErrorInMC.AutoSize = true; this.chkShowErrorInMC.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkShowErrorInMC.Location = new System.Drawing.Point(20, 113); + this.chkShowErrorInMC.Location = new System.Drawing.Point(30, 170); + this.chkShowErrorInMC.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkShowErrorInMC.Name = "chkShowErrorInMC"; - this.chkShowErrorInMC.Size = new System.Drawing.Size(51, 17); + this.chkShowErrorInMC.Size = new System.Drawing.Size(73, 27); this.chkShowErrorInMC.TabIndex = 4; this.chkShowErrorInMC.Text = "Error"; this.chkShowErrorInMC.UseVisualStyleBackColor = true; // // chkShowWarningInMC // - this.chkShowWarningInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkShowWarningInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkShowWarningInMC.AutoSize = true; this.chkShowWarningInMC.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkShowWarningInMC.Location = new System.Drawing.Point(20, 90); + this.chkShowWarningInMC.Location = new System.Drawing.Point(30, 135); + this.chkShowWarningInMC.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkShowWarningInMC.Name = "chkShowWarningInMC"; - this.chkShowWarningInMC.Size = new System.Drawing.Size(71, 17); + this.chkShowWarningInMC.Size = new System.Drawing.Size(100, 27); this.chkShowWarningInMC.TabIndex = 3; this.chkShowWarningInMC.Text = "Warning"; this.chkShowWarningInMC.UseVisualStyleBackColor = true; // // chkShowInfoInMC // - this.chkShowInfoInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkShowInfoInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkShowInfoInMC.AutoSize = true; this.chkShowInfoInMC.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkShowInfoInMC.Location = new System.Drawing.Point(20, 67); + this.chkShowInfoInMC.Location = new System.Drawing.Point(30, 100); + this.chkShowInfoInMC.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkShowInfoInMC.Name = "chkShowInfoInMC"; - this.chkShowInfoInMC.Size = new System.Drawing.Size(87, 17); + this.chkShowInfoInMC.Size = new System.Drawing.Size(126, 27); this.chkShowInfoInMC.TabIndex = 2; this.chkShowInfoInMC.Text = "Information"; this.chkShowInfoInMC.UseVisualStyleBackColor = true; // // chkShowDebugInMC // - this.chkShowDebugInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkShowDebugInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkShowDebugInMC.AutoSize = true; this.chkShowDebugInMC.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkShowDebugInMC.Location = new System.Drawing.Point(20, 44); + this.chkShowDebugInMC.Location = new System.Drawing.Point(30, 66); + this.chkShowDebugInMC.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkShowDebugInMC.Name = "chkShowDebugInMC"; - this.chkShowDebugInMC.Size = new System.Drawing.Size(61, 17); + this.chkShowDebugInMC.Size = new System.Drawing.Size(87, 27); this.chkShowDebugInMC.TabIndex = 1; this.chkShowDebugInMC.Text = "Debug"; this.chkShowDebugInMC.UseVisualStyleBackColor = true; @@ -198,9 +209,11 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.groupBoxLogging.Controls.Add(this.labelLogTheseMsgTypes); this.groupBoxLogging.Controls.Add(this.labelLogFilePath); this.groupBoxLogging.Controls.Add(this.textBoxLogPath); - this.groupBoxLogging.Location = new System.Drawing.Point(6, 149); + this.groupBoxLogging.Location = new System.Drawing.Point(9, 224); + this.groupBoxLogging.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.groupBoxLogging.Name = "groupBoxLogging"; - this.groupBoxLogging.Size = new System.Drawing.Size(601, 158); + this.groupBoxLogging.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxLogging.Size = new System.Drawing.Size(902, 237); this.groupBoxLogging.TabIndex = 1; this.groupBoxLogging.TabStop = false; this.groupBoxLogging.Text = "Logging"; @@ -216,70 +229,76 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.tblLogging.Controls.Add(this.chkLogInfoMsgs, 1, 0); this.tblLogging.Controls.Add(this.chkLogWarningMsgs, 2, 0); this.tblLogging.Controls.Add(this.chkLogErrorMsgs, 3, 0); - this.tblLogging.Location = new System.Drawing.Point(9, 124); + this.tblLogging.Location = new System.Drawing.Point(14, 186); + this.tblLogging.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.tblLogging.Name = "tblLogging"; this.tblLogging.RowCount = 1; this.tblLogging.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tblLogging.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F)); - this.tblLogging.Size = new System.Drawing.Size(585, 25); + this.tblLogging.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 38F)); + this.tblLogging.Size = new System.Drawing.Size(876, 38); this.tblLogging.TabIndex = 7; // // chkLogDebugMsgs // - this.chkLogDebugMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkLogDebugMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLogDebugMsgs.AutoSize = true; this.chkLogDebugMsgs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLogDebugMsgs.Location = new System.Drawing.Point(3, 3); + this.chkLogDebugMsgs.Location = new System.Drawing.Point(4, 4); + this.chkLogDebugMsgs.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkLogDebugMsgs.Name = "chkLogDebugMsgs"; - this.chkLogDebugMsgs.Size = new System.Drawing.Size(61, 17); + this.chkLogDebugMsgs.Size = new System.Drawing.Size(87, 27); this.chkLogDebugMsgs.TabIndex = 0; this.chkLogDebugMsgs.Text = "Debug"; this.chkLogDebugMsgs.UseVisualStyleBackColor = true; // // chkLogInfoMsgs // - this.chkLogInfoMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkLogInfoMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLogInfoMsgs.AutoSize = true; this.chkLogInfoMsgs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLogInfoMsgs.Location = new System.Drawing.Point(149, 3); + this.chkLogInfoMsgs.Location = new System.Drawing.Point(223, 4); + this.chkLogInfoMsgs.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkLogInfoMsgs.Name = "chkLogInfoMsgs"; - this.chkLogInfoMsgs.Size = new System.Drawing.Size(87, 17); + this.chkLogInfoMsgs.Size = new System.Drawing.Size(126, 27); this.chkLogInfoMsgs.TabIndex = 1; this.chkLogInfoMsgs.Text = "Information"; this.chkLogInfoMsgs.UseVisualStyleBackColor = true; // // chkLogWarningMsgs // - this.chkLogWarningMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkLogWarningMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLogWarningMsgs.AutoSize = true; this.chkLogWarningMsgs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLogWarningMsgs.Location = new System.Drawing.Point(295, 3); + this.chkLogWarningMsgs.Location = new System.Drawing.Point(442, 4); + this.chkLogWarningMsgs.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkLogWarningMsgs.Name = "chkLogWarningMsgs"; - this.chkLogWarningMsgs.Size = new System.Drawing.Size(71, 17); + this.chkLogWarningMsgs.Size = new System.Drawing.Size(100, 27); this.chkLogWarningMsgs.TabIndex = 2; this.chkLogWarningMsgs.Text = "Warning"; this.chkLogWarningMsgs.UseVisualStyleBackColor = true; // // chkLogErrorMsgs // - this.chkLogErrorMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkLogErrorMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLogErrorMsgs.AutoSize = true; this.chkLogErrorMsgs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLogErrorMsgs.Location = new System.Drawing.Point(441, 3); + this.chkLogErrorMsgs.Location = new System.Drawing.Point(661, 4); + this.chkLogErrorMsgs.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkLogErrorMsgs.Name = "chkLogErrorMsgs"; - this.chkLogErrorMsgs.Size = new System.Drawing.Size(51, 17); + this.chkLogErrorMsgs.Size = new System.Drawing.Size(73, 27); this.chkLogErrorMsgs.TabIndex = 3; this.chkLogErrorMsgs.Text = "Error"; this.chkLogErrorMsgs.UseVisualStyleBackColor = true; // // chkLogToCurrentDir // - this.chkLogToCurrentDir._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkLogToCurrentDir._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLogToCurrentDir.AutoSize = true; this.chkLogToCurrentDir.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLogToCurrentDir.Location = new System.Drawing.Point(9, 18); + this.chkLogToCurrentDir.Location = new System.Drawing.Point(14, 27); + this.chkLogToCurrentDir.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkLogToCurrentDir.Name = "chkLogToCurrentDir"; - this.chkLogToCurrentDir.Size = new System.Drawing.Size(168, 17); + this.chkLogToCurrentDir.Size = new System.Drawing.Size(246, 27); this.chkLogToCurrentDir.TabIndex = 0; this.chkLogToCurrentDir.Text = "Log to application directory"; this.chkLogToCurrentDir.UseVisualStyleBackColor = true; @@ -287,10 +306,11 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // buttonRestoreDefaultLogPath // - this.buttonRestoreDefaultLogPath._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.HOVER; - this.buttonRestoreDefaultLogPath.Location = new System.Drawing.Point(495, 83); + this.buttonRestoreDefaultLogPath._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; + this.buttonRestoreDefaultLogPath.Location = new System.Drawing.Point(650, 124); + this.buttonRestoreDefaultLogPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.buttonRestoreDefaultLogPath.Name = "buttonRestoreDefaultLogPath"; - this.buttonRestoreDefaultLogPath.Size = new System.Drawing.Size(99, 23); + this.buttonRestoreDefaultLogPath.Size = new System.Drawing.Size(240, 34); this.buttonRestoreDefaultLogPath.TabIndex = 5; this.buttonRestoreDefaultLogPath.Text = "Use Default"; this.buttonRestoreDefaultLogPath.UseVisualStyleBackColor = true; @@ -298,10 +318,11 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // buttonOpenLogFile // - this.buttonOpenLogFile._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.HOVER; - this.buttonOpenLogFile.Location = new System.Drawing.Point(273, 82); + this.buttonOpenLogFile._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; + this.buttonOpenLogFile.Location = new System.Drawing.Point(14, 124); + this.buttonOpenLogFile.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.buttonOpenLogFile.Name = "buttonOpenLogFile"; - this.buttonOpenLogFile.Size = new System.Drawing.Size(105, 23); + this.buttonOpenLogFile.Size = new System.Drawing.Size(158, 34); this.buttonOpenLogFile.TabIndex = 3; this.buttonOpenLogFile.Text = "Open File"; this.buttonOpenLogFile.UseVisualStyleBackColor = true; @@ -309,10 +330,11 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // buttonSelectLogPath // - this.buttonSelectLogPath._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.HOVER; - this.buttonSelectLogPath.Location = new System.Drawing.Point(384, 82); + this.buttonSelectLogPath._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; + this.buttonSelectLogPath.Location = new System.Drawing.Point(180, 124); + this.buttonSelectLogPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.buttonSelectLogPath.Name = "buttonSelectLogPath"; - this.buttonSelectLogPath.Size = new System.Drawing.Size(105, 23); + this.buttonSelectLogPath.Size = new System.Drawing.Size(158, 34); this.buttonSelectLogPath.TabIndex = 4; this.buttonSelectLogPath.Text = "Choose Path"; this.buttonSelectLogPath.UseVisualStyleBackColor = true; @@ -321,37 +343,43 @@ namespace mRemoteNG.UI.Forms.OptionsPages // labelLogTheseMsgTypes // this.labelLogTheseMsgTypes.AutoSize = true; - this.labelLogTheseMsgTypes.Location = new System.Drawing.Point(6, 108); + this.labelLogTheseMsgTypes.Location = new System.Drawing.Point(9, 162); + this.labelLogTheseMsgTypes.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.labelLogTheseMsgTypes.Name = "labelLogTheseMsgTypes"; - this.labelLogTheseMsgTypes.Size = new System.Drawing.Size(137, 13); + this.labelLogTheseMsgTypes.Size = new System.Drawing.Size(204, 23); this.labelLogTheseMsgTypes.TabIndex = 6; this.labelLogTheseMsgTypes.Text = "Log these message types:"; // // labelLogFilePath // this.labelLogFilePath.AutoSize = true; - this.labelLogFilePath.Location = new System.Drawing.Point(6, 38); + this.labelLogFilePath.Location = new System.Drawing.Point(9, 57); + this.labelLogFilePath.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.labelLogFilePath.Name = "labelLogFilePath"; - this.labelLogFilePath.Size = new System.Drawing.Size(75, 13); + this.labelLogFilePath.Size = new System.Drawing.Size(109, 23); this.labelLogFilePath.TabIndex = 1; this.labelLogFilePath.Text = "Log file path:"; // // textBoxLogPath // this.textBoxLogPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.textBoxLogPath.Location = new System.Drawing.Point(9, 57); + this.textBoxLogPath.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.textBoxLogPath.Location = new System.Drawing.Point(14, 86); + this.textBoxLogPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.textBoxLogPath.Name = "textBoxLogPath"; this.textBoxLogPath.ReadOnly = true; - this.textBoxLogPath.Size = new System.Drawing.Size(585, 22); + this.textBoxLogPath.Size = new System.Drawing.Size(876, 29); this.textBoxLogPath.TabIndex = 2; // // groupBoxPopups // this.groupBoxPopups.Controls.Add(this.tblPopups); this.groupBoxPopups.Controls.Add(this.labelPopupShowTypes); - this.groupBoxPopups.Location = new System.Drawing.Point(6, 313); + this.groupBoxPopups.Location = new System.Drawing.Point(9, 470); + this.groupBoxPopups.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.groupBoxPopups.Name = "groupBoxPopups"; - this.groupBoxPopups.Size = new System.Drawing.Size(601, 74); + this.groupBoxPopups.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxPopups.Size = new System.Drawing.Size(902, 111); this.groupBoxPopups.TabIndex = 2; this.groupBoxPopups.TabStop = false; this.groupBoxPopups.Text = "Pop-ups"; @@ -367,58 +395,63 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.tblPopups.Controls.Add(this.chkPopupError, 3, 0); this.tblPopups.Controls.Add(this.chkPopupInfo, 1, 0); this.tblPopups.Controls.Add(this.chkPopupWarning, 2, 0); - this.tblPopups.Location = new System.Drawing.Point(11, 40); + this.tblPopups.Location = new System.Drawing.Point(16, 60); + this.tblPopups.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.tblPopups.Name = "tblPopups"; this.tblPopups.RowCount = 1; this.tblPopups.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tblPopups.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F)); - this.tblPopups.Size = new System.Drawing.Size(585, 25); + this.tblPopups.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 38F)); + this.tblPopups.Size = new System.Drawing.Size(876, 38); this.tblPopups.TabIndex = 1; // // chkPopupDebug // - this.chkPopupDebug._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkPopupDebug._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkPopupDebug.AutoSize = true; this.chkPopupDebug.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkPopupDebug.Location = new System.Drawing.Point(3, 3); + this.chkPopupDebug.Location = new System.Drawing.Point(4, 4); + this.chkPopupDebug.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkPopupDebug.Name = "chkPopupDebug"; - this.chkPopupDebug.Size = new System.Drawing.Size(61, 17); + this.chkPopupDebug.Size = new System.Drawing.Size(87, 27); this.chkPopupDebug.TabIndex = 0; this.chkPopupDebug.Text = "Debug"; this.chkPopupDebug.UseVisualStyleBackColor = true; // // chkPopupError // - this.chkPopupError._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkPopupError._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkPopupError.AutoSize = true; this.chkPopupError.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkPopupError.Location = new System.Drawing.Point(441, 3); + this.chkPopupError.Location = new System.Drawing.Point(661, 4); + this.chkPopupError.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkPopupError.Name = "chkPopupError"; - this.chkPopupError.Size = new System.Drawing.Size(51, 17); + this.chkPopupError.Size = new System.Drawing.Size(73, 27); this.chkPopupError.TabIndex = 3; this.chkPopupError.Text = "Error"; this.chkPopupError.UseVisualStyleBackColor = true; // // chkPopupInfo // - this.chkPopupInfo._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkPopupInfo._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkPopupInfo.AutoSize = true; this.chkPopupInfo.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkPopupInfo.Location = new System.Drawing.Point(149, 3); + this.chkPopupInfo.Location = new System.Drawing.Point(223, 4); + this.chkPopupInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkPopupInfo.Name = "chkPopupInfo"; - this.chkPopupInfo.Size = new System.Drawing.Size(87, 17); + this.chkPopupInfo.Size = new System.Drawing.Size(126, 27); this.chkPopupInfo.TabIndex = 1; this.chkPopupInfo.Text = "Information"; this.chkPopupInfo.UseVisualStyleBackColor = true; // // chkPopupWarning // - this.chkPopupWarning._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkPopupWarning._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkPopupWarning.AutoSize = true; this.chkPopupWarning.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkPopupWarning.Location = new System.Drawing.Point(295, 3); + this.chkPopupWarning.Location = new System.Drawing.Point(442, 4); + this.chkPopupWarning.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkPopupWarning.Name = "chkPopupWarning"; - this.chkPopupWarning.Size = new System.Drawing.Size(71, 17); + this.chkPopupWarning.Size = new System.Drawing.Size(100, 27); this.chkPopupWarning.TabIndex = 2; this.chkPopupWarning.Text = "Warning"; this.chkPopupWarning.UseVisualStyleBackColor = true; @@ -426,22 +459,23 @@ namespace mRemoteNG.UI.Forms.OptionsPages // labelPopupShowTypes // this.labelPopupShowTypes.AutoSize = true; - this.labelPopupShowTypes.Location = new System.Drawing.Point(8, 24); + this.labelPopupShowTypes.Location = new System.Drawing.Point(12, 36); + this.labelPopupShowTypes.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.labelPopupShowTypes.Name = "labelPopupShowTypes"; - this.labelPopupShowTypes.Size = new System.Drawing.Size(147, 13); + this.labelPopupShowTypes.Size = new System.Drawing.Size(217, 23); this.labelPopupShowTypes.TabIndex = 0; this.labelPopupShowTypes.Text = "Show these message types:"; // // NotificationsPage // - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.groupBoxPopups); this.Controls.Add(this.groupBoxLogging); this.Controls.Add(this.groupBoxNotifications); - this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); this.Name = "NotificationsPage"; - this.Size = new System.Drawing.Size(610, 490); + this.Size = new System.Drawing.Size(915, 735); this.groupBoxNotifications.ResumeLayout(false); this.groupBoxNotifications.PerformLayout(); this.groupBoxLogging.ResumeLayout(false); diff --git a/mRemoteV1/UI/Forms/OptionsPages/SqlServerPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/SqlServerPage.Designer.cs index 3004c51f..17af37f0 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/SqlServerPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/SqlServerPage.Designer.cs @@ -18,7 +18,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages [System.Diagnostics.DebuggerStepThrough()] private void InitializeComponent() { -// System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SqlServerPage)); this.lblSQLDatabaseName = new mRemoteNG.UI.Controls.Base.NGLabel(); this.txtSQLDatabaseName = new mRemoteNG.UI.Controls.Base.NGTextBox(); this.lblExperimental = new mRemoteNG.UI.Controls.Base.NGLabel(); @@ -43,9 +42,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages // lblSQLDatabaseName // this.lblSQLDatabaseName.Enabled = false; - this.lblSQLDatabaseName.Location = new System.Drawing.Point(23, 156); + this.lblSQLDatabaseName.Location = new System.Drawing.Point(34, 231); + this.lblSQLDatabaseName.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblSQLDatabaseName.Name = "lblSQLDatabaseName"; - this.lblSQLDatabaseName.Size = new System.Drawing.Size(111, 13); + this.lblSQLDatabaseName.Size = new System.Drawing.Size(166, 29); this.lblSQLDatabaseName.TabIndex = 5; this.lblSQLDatabaseName.Text = "Database:"; this.lblSQLDatabaseName.TextAlign = System.Drawing.ContentAlignment.TopRight; @@ -54,9 +54,11 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.txtSQLDatabaseName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtSQLDatabaseName.Enabled = false; - this.txtSQLDatabaseName.Location = new System.Drawing.Point(140, 154); + this.txtSQLDatabaseName.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtSQLDatabaseName.Location = new System.Drawing.Point(210, 231); + this.txtSQLDatabaseName.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtSQLDatabaseName.Name = "txtSQLDatabaseName"; - this.txtSQLDatabaseName.Size = new System.Drawing.Size(153, 22); + this.txtSQLDatabaseName.Size = new System.Drawing.Size(228, 29); this.txtSQLDatabaseName.TabIndex = 6; // // lblExperimental @@ -64,23 +66,25 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.lblExperimental.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.lblExperimental.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.World); + this.lblExperimental.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.lblExperimental.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - this.lblExperimental.Location = new System.Drawing.Point(3, 0); + this.lblExperimental.Location = new System.Drawing.Point(4, 0); + this.lblExperimental.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblExperimental.Name = "lblExperimental"; - this.lblExperimental.Size = new System.Drawing.Size(596, 26); + this.lblExperimental.Size = new System.Drawing.Size(894, 39); this.lblExperimental.TabIndex = 0; this.lblExperimental.Text = "EXPERIMENTAL"; this.lblExperimental.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // chkUseSQLServer // - this.chkUseSQLServer._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkUseSQLServer._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkUseSQLServer.AutoSize = true; this.chkUseSQLServer.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkUseSQLServer.Location = new System.Drawing.Point(3, 76); + this.chkUseSQLServer.Location = new System.Drawing.Point(4, 114); + this.chkUseSQLServer.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkUseSQLServer.Name = "chkUseSQLServer"; - this.chkUseSQLServer.Size = new System.Drawing.Size(244, 17); + this.chkUseSQLServer.Size = new System.Drawing.Size(364, 27); this.chkUseSQLServer.TabIndex = 2; this.chkUseSQLServer.Text = "Use SQL Server to load && save connections"; this.chkUseSQLServer.UseVisualStyleBackColor = true; @@ -89,9 +93,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages // lblSQLUsername // this.lblSQLUsername.Enabled = false; - this.lblSQLUsername.Location = new System.Drawing.Point(23, 182); + this.lblSQLUsername.Location = new System.Drawing.Point(34, 270); + this.lblSQLUsername.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblSQLUsername.Name = "lblSQLUsername"; - this.lblSQLUsername.Size = new System.Drawing.Size(111, 13); + this.lblSQLUsername.Size = new System.Drawing.Size(166, 29); this.lblSQLUsername.TabIndex = 7; this.lblSQLUsername.Text = "Username:"; this.lblSQLUsername.TextAlign = System.Drawing.ContentAlignment.TopRight; @@ -100,9 +105,11 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.txtSQLPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtSQLPassword.Enabled = false; - this.txtSQLPassword.Location = new System.Drawing.Point(140, 206); + this.txtSQLPassword.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtSQLPassword.Location = new System.Drawing.Point(210, 309); + this.txtSQLPassword.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtSQLPassword.Name = "txtSQLPassword"; - this.txtSQLPassword.Size = new System.Drawing.Size(153, 22); + this.txtSQLPassword.Size = new System.Drawing.Size(228, 29); this.txtSQLPassword.TabIndex = 10; this.txtSQLPassword.UseSystemPasswordChar = true; // @@ -113,9 +120,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages | System.Windows.Forms.AnchorStyles.Right))); this.lblSQLInfo.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.World); this.lblSQLInfo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - this.lblSQLInfo.Location = new System.Drawing.Point(3, 25); + this.lblSQLInfo.Location = new System.Drawing.Point(4, 38); + this.lblSQLInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblSQLInfo.Name = "lblSQLInfo"; - this.lblSQLInfo.Size = new System.Drawing.Size(596, 26); + this.lblSQLInfo.Size = new System.Drawing.Size(894, 39); this.lblSQLInfo.TabIndex = 1; this.lblSQLInfo.Text = "Please see Help - Getting started - SQL Configuration for more Info!"; this.lblSQLInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -123,9 +131,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages // lblSQLServer // this.lblSQLServer.Enabled = false; - this.lblSQLServer.Location = new System.Drawing.Point(23, 130); + this.lblSQLServer.Location = new System.Drawing.Point(34, 192); + this.lblSQLServer.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblSQLServer.Name = "lblSQLServer"; - this.lblSQLServer.Size = new System.Drawing.Size(111, 13); + this.lblSQLServer.Size = new System.Drawing.Size(166, 29); this.lblSQLServer.TabIndex = 3; this.lblSQLServer.Text = "SQL Server:"; this.lblSQLServer.TextAlign = System.Drawing.ContentAlignment.TopRight; @@ -134,37 +143,43 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.txtSQLUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtSQLUsername.Enabled = false; - this.txtSQLUsername.Location = new System.Drawing.Point(140, 180); + this.txtSQLUsername.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtSQLUsername.Location = new System.Drawing.Point(210, 270); + this.txtSQLUsername.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtSQLUsername.Name = "txtSQLUsername"; - this.txtSQLUsername.Size = new System.Drawing.Size(153, 22); + this.txtSQLUsername.Size = new System.Drawing.Size(228, 29); this.txtSQLUsername.TabIndex = 8; // // txtSQLServer // this.txtSQLServer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtSQLServer.Enabled = false; - this.txtSQLServer.Location = new System.Drawing.Point(140, 128); + this.txtSQLServer.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtSQLServer.Location = new System.Drawing.Point(210, 192); + this.txtSQLServer.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtSQLServer.Name = "txtSQLServer"; - this.txtSQLServer.Size = new System.Drawing.Size(153, 22); + this.txtSQLServer.Size = new System.Drawing.Size(228, 29); this.txtSQLServer.TabIndex = 4; // // lblSQLPassword // this.lblSQLPassword.Enabled = false; - this.lblSQLPassword.Location = new System.Drawing.Point(23, 208); + this.lblSQLPassword.Location = new System.Drawing.Point(34, 309); + this.lblSQLPassword.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblSQLPassword.Name = "lblSQLPassword"; - this.lblSQLPassword.Size = new System.Drawing.Size(111, 13); + this.lblSQLPassword.Size = new System.Drawing.Size(166, 29); this.lblSQLPassword.TabIndex = 9; this.lblSQLPassword.Text = "Password:"; this.lblSQLPassword.TextAlign = System.Drawing.ContentAlignment.TopRight; // // btnTestConnection // - this.btnTestConnection._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.HOVER; + this.btnTestConnection._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; this.btnTestConnection.Enabled = false; - this.btnTestConnection.Location = new System.Drawing.Point(140, 252); + this.btnTestConnection.Location = new System.Drawing.Point(210, 378); + this.btnTestConnection.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btnTestConnection.Name = "btnTestConnection"; - this.btnTestConnection.Size = new System.Drawing.Size(153, 23); + this.btnTestConnection.Size = new System.Drawing.Size(230, 34); this.btnTestConnection.TabIndex = 11; this.btnTestConnection.Text = "Test Connection"; this.btnTestConnection.UseVisualStyleBackColor = true; @@ -173,7 +188,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages // imgConnectionStatus // this.imgConnectionStatus.Image = global::mRemoteNG.Resources.Help; - this.imgConnectionStatus.Location = new System.Drawing.Point(297, 255); + this.imgConnectionStatus.Location = new System.Drawing.Point(446, 382); + this.imgConnectionStatus.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.imgConnectionStatus.Name = "imgConnectionStatus"; this.imgConnectionStatus.Size = new System.Drawing.Size(16, 16); this.imgConnectionStatus.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; @@ -183,59 +199,64 @@ namespace mRemoteNG.UI.Forms.OptionsPages // lblTestConnectionResults // this.lblTestConnectionResults.AutoSize = true; - this.lblTestConnectionResults.Location = new System.Drawing.Point(137, 278); + this.lblTestConnectionResults.Location = new System.Drawing.Point(206, 417); + this.lblTestConnectionResults.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblTestConnectionResults.Name = "lblTestConnectionResults"; - this.lblTestConnectionResults.Size = new System.Drawing.Size(124, 13); + this.lblTestConnectionResults.Size = new System.Drawing.Size(183, 23); this.lblTestConnectionResults.TabIndex = 13; this.lblTestConnectionResults.Text = "Test connection details"; // // chkSQLReadOnly // - this.chkSQLReadOnly._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkSQLReadOnly._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkSQLReadOnly.AutoSize = true; this.chkSQLReadOnly.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkSQLReadOnly.Location = new System.Drawing.Point(140, 232); + this.chkSQLReadOnly.Location = new System.Drawing.Point(210, 348); + this.chkSQLReadOnly.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkSQLReadOnly.Name = "chkSQLReadOnly"; - this.chkSQLReadOnly.Size = new System.Drawing.Size(15, 14); + this.chkSQLReadOnly.Size = new System.Drawing.Size(22, 21); this.chkSQLReadOnly.TabIndex = 14; this.chkSQLReadOnly.UseVisualStyleBackColor = true; // // lblSQLReadOnly // this.lblSQLReadOnly.Enabled = false; - this.lblSQLReadOnly.Location = new System.Drawing.Point(23, 232); + this.lblSQLReadOnly.Location = new System.Drawing.Point(34, 348); + this.lblSQLReadOnly.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblSQLReadOnly.Name = "lblSQLReadOnly"; - this.lblSQLReadOnly.Size = new System.Drawing.Size(111, 13); + this.lblSQLReadOnly.Size = new System.Drawing.Size(166, 21); this.lblSQLReadOnly.TabIndex = 15; this.lblSQLReadOnly.Text = "Read Only:"; this.lblSQLReadOnly.TextAlign = System.Drawing.ContentAlignment.TopRight; - // + // // lblSQLType - // + // this.lblSQLType.Enabled = false; - this.lblSQLType.Location = new System.Drawing.Point(23, 106); + this.lblSQLType.Location = new System.Drawing.Point(34, 153); + this.lblSQLType.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblSQLType.Name = "lblSQLType"; - this.lblSQLType.Size = new System.Drawing.Size(111, 13); + this.lblSQLType.Size = new System.Drawing.Size(166, 31); this.lblSQLType.TabIndex = 20; this.lblSQLType.Text = "SQL Server Type:"; this.lblSQLType.TextAlign = System.Drawing.ContentAlignment.TopRight; - // + // // txtSQLType - // + // this.txtSQLType._mice = mRemoteNG.UI.Controls.Base.NGComboBox.MouseState.HOVER; this.txtSQLType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.txtSQLType.FormattingEnabled = true; this.txtSQLType.Items.AddRange(new object[] { "mssql", "mysql"}); - this.txtSQLType.Location = new System.Drawing.Point(140, 102); + this.txtSQLType.Location = new System.Drawing.Point(210, 153); + this.txtSQLType.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtSQLType.Name = "txtSQLType"; - this.txtSQLType.Size = new System.Drawing.Size(153, 21); + this.txtSQLType.Size = new System.Drawing.Size(228, 31); this.txtSQLType.TabIndex = 21; // // SqlServerPage // - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.txtSQLType); this.Controls.Add(this.lblSQLType); @@ -255,12 +276,13 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.Controls.Add(this.txtSQLUsername); this.Controls.Add(this.txtSQLServer); this.Controls.Add(this.lblSQLPassword); - this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); this.Name = "SqlServerPage"; - this.Size = new System.Drawing.Size(610, 490); + this.Size = new System.Drawing.Size(915, 735); ((System.ComponentModel.ISupportInitialize)(this.imgConnectionStatus)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); + } internal Controls.Base.NGLabel lblSQLDatabaseName; internal Controls.Base.NGTextBox txtSQLDatabaseName; diff --git a/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.Designer.cs index 172b1f08..d795a419 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.Designer.cs @@ -61,9 +61,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // lblUpdatesExplanation // - this.lblUpdatesExplanation.Location = new System.Drawing.Point(3, 2); + this.lblUpdatesExplanation.Location = new System.Drawing.Point(4, 5); + this.lblUpdatesExplanation.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblUpdatesExplanation.Name = "lblUpdatesExplanation"; - this.lblUpdatesExplanation.Size = new System.Drawing.Size(536, 32); + this.lblUpdatesExplanation.Size = new System.Drawing.Size(892, 48); this.lblUpdatesExplanation.TabIndex = 0; this.lblUpdatesExplanation.Text = "mRemoteNG can periodically connect to the mRemoteNG website to check for updates." + ""; @@ -73,17 +74,19 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.pnlUpdateCheck.Controls.Add(this.btnUpdateCheckNow); this.pnlUpdateCheck.Controls.Add(this.chkCheckForUpdatesOnStartup); this.pnlUpdateCheck.Controls.Add(this.cboUpdateCheckFrequency); - this.pnlUpdateCheck.Location = new System.Drawing.Point(3, 38); + this.pnlUpdateCheck.Location = new System.Drawing.Point(4, 57); + this.pnlUpdateCheck.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.pnlUpdateCheck.Name = "pnlUpdateCheck"; - this.pnlUpdateCheck.Size = new System.Drawing.Size(604, 79); + this.pnlUpdateCheck.Size = new System.Drawing.Size(906, 128); this.pnlUpdateCheck.TabIndex = 1; // // btnUpdateCheckNow // this.btnUpdateCheckNow._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; - this.btnUpdateCheckNow.Location = new System.Drawing.Point(3, 49); + this.btnUpdateCheckNow.Location = new System.Drawing.Point(4, 88); + this.btnUpdateCheckNow.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btnUpdateCheckNow.Name = "btnUpdateCheckNow"; - this.btnUpdateCheckNow.Size = new System.Drawing.Size(120, 23); + this.btnUpdateCheckNow.Size = new System.Drawing.Size(180, 34); this.btnUpdateCheckNow.TabIndex = 2; this.btnUpdateCheckNow.Text = "Check Now"; this.btnUpdateCheckNow.UseVisualStyleBackColor = true; @@ -94,9 +97,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkCheckForUpdatesOnStartup._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkCheckForUpdatesOnStartup.AutoSize = true; this.chkCheckForUpdatesOnStartup.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkCheckForUpdatesOnStartup.Location = new System.Drawing.Point(3, 4); + this.chkCheckForUpdatesOnStartup.Location = new System.Drawing.Point(4, 10); + this.chkCheckForUpdatesOnStartup.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkCheckForUpdatesOnStartup.Name = "chkCheckForUpdatesOnStartup"; - this.chkCheckForUpdatesOnStartup.Size = new System.Drawing.Size(120, 17); + this.chkCheckForUpdatesOnStartup.Size = new System.Drawing.Size(174, 27); this.chkCheckForUpdatesOnStartup.TabIndex = 0; this.chkCheckForUpdatesOnStartup.Text = "Check for updates"; this.chkCheckForUpdatesOnStartup.UseVisualStyleBackColor = true; @@ -107,9 +111,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.cboUpdateCheckFrequency._mice = mRemoteNG.UI.Controls.Base.NGComboBox.MouseState.HOVER; this.cboUpdateCheckFrequency.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cboUpdateCheckFrequency.FormattingEnabled = true; - this.cboUpdateCheckFrequency.Location = new System.Drawing.Point(3, 22); + this.cboUpdateCheckFrequency.Location = new System.Drawing.Point(4, 45); + this.cboUpdateCheckFrequency.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.cboUpdateCheckFrequency.Name = "cboUpdateCheckFrequency"; - this.cboUpdateCheckFrequency.Size = new System.Drawing.Size(120, 21); + this.cboUpdateCheckFrequency.Size = new System.Drawing.Size(178, 31); this.cboUpdateCheckFrequency.TabIndex = 1; // // lblReleaseChannelExplanation @@ -117,11 +122,12 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.lblReleaseChannelExplanation.BackColor = System.Drawing.SystemColors.Control; this.lblReleaseChannelExplanation.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lblReleaseChannelExplanation.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblReleaseChannelExplanation.Location = new System.Drawing.Point(3, 50); + this.lblReleaseChannelExplanation.Location = new System.Drawing.Point(4, 82); + this.lblReleaseChannelExplanation.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.lblReleaseChannelExplanation.Multiline = true; this.lblReleaseChannelExplanation.Name = "lblReleaseChannelExplanation"; this.lblReleaseChannelExplanation.ReadOnly = true; - this.lblReleaseChannelExplanation.Size = new System.Drawing.Size(595, 44); + this.lblReleaseChannelExplanation.Size = new System.Drawing.Size(892, 66); this.lblReleaseChannelExplanation.TabIndex = 2; this.lblReleaseChannelExplanation.Text = "Stable channel includes final releases only.\r\nBeta channel includes Betas & Relea" + "se Candidates.\r\nDevelopment Channel includes Alphas, Betas & Release Candidates." + @@ -132,9 +138,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.cboReleaseChannel._mice = mRemoteNG.UI.Controls.Base.NGComboBox.MouseState.HOVER; this.cboReleaseChannel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cboReleaseChannel.FormattingEnabled = true; - this.cboReleaseChannel.Location = new System.Drawing.Point(3, 21); + this.cboReleaseChannel.Location = new System.Drawing.Point(4, 32); + this.cboReleaseChannel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.cboReleaseChannel.Name = "cboReleaseChannel"; - this.cboReleaseChannel.Size = new System.Drawing.Size(120, 21); + this.cboReleaseChannel.Size = new System.Drawing.Size(178, 31); this.cboReleaseChannel.TabIndex = 1; // // pnlProxy @@ -144,9 +151,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.pnlProxy.Controls.Add(this.chkUseProxyAuthentication); this.pnlProxy.Controls.Add(this.pnlProxyAuthentication); this.pnlProxy.Controls.Add(this.btnTestProxy); - this.pnlProxy.Location = new System.Drawing.Point(0, 226); + this.pnlProxy.Location = new System.Drawing.Point(0, 357); + this.pnlProxy.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.pnlProxy.Name = "pnlProxy"; - this.pnlProxy.Size = new System.Drawing.Size(610, 203); + this.pnlProxy.Size = new System.Drawing.Size(915, 301); this.pnlProxy.TabIndex = 3; // // pnlProxyBasic @@ -156,16 +164,18 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.pnlProxyBasic.Controls.Add(this.lblProxyPort); this.pnlProxyBasic.Controls.Add(this.numProxyPort); this.pnlProxyBasic.Enabled = false; - this.pnlProxyBasic.Location = new System.Drawing.Point(3, 22); + this.pnlProxyBasic.Location = new System.Drawing.Point(4, 42); + this.pnlProxyBasic.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.pnlProxyBasic.Name = "pnlProxyBasic"; - this.pnlProxyBasic.Size = new System.Drawing.Size(604, 40); + this.pnlProxyBasic.Size = new System.Drawing.Size(906, 56); this.pnlProxyBasic.TabIndex = 1; // // lblProxyAddress // - this.lblProxyAddress.Location = new System.Drawing.Point(8, 0); + this.lblProxyAddress.Location = new System.Drawing.Point(13, 16); + this.lblProxyAddress.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblProxyAddress.Name = "lblProxyAddress"; - this.lblProxyAddress.Size = new System.Drawing.Size(96, 24); + this.lblProxyAddress.Size = new System.Drawing.Size(144, 29); this.lblProxyAddress.TabIndex = 0; this.lblProxyAddress.Text = "Address:"; this.lblProxyAddress.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -174,16 +184,18 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.txtProxyAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtProxyAddress.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtProxyAddress.Location = new System.Drawing.Point(110, 4); + this.txtProxyAddress.Location = new System.Drawing.Point(165, 17); + this.txtProxyAddress.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtProxyAddress.Name = "txtProxyAddress"; - this.txtProxyAddress.Size = new System.Drawing.Size(240, 22); + this.txtProxyAddress.Size = new System.Drawing.Size(359, 29); this.txtProxyAddress.TabIndex = 1; // // lblProxyPort // - this.lblProxyPort.Location = new System.Drawing.Point(350, 1); + this.lblProxyPort.Location = new System.Drawing.Point(532, 17); + this.lblProxyPort.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblProxyPort.Name = "lblProxyPort"; - this.lblProxyPort.Size = new System.Drawing.Size(64, 23); + this.lblProxyPort.Size = new System.Drawing.Size(96, 29); this.lblProxyPort.TabIndex = 2; this.lblProxyPort.Text = "Port:"; this.lblProxyPort.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -191,7 +203,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages // numProxyPort // this.numProxyPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.numProxyPort.Location = new System.Drawing.Point(420, 4); + this.numProxyPort.Location = new System.Drawing.Point(636, 16); + this.numProxyPort.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.numProxyPort.Maximum = new decimal(new int[] { 65535, 0, @@ -203,7 +216,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages 0, 0}); this.numProxyPort.Name = "numProxyPort"; - this.numProxyPort.Size = new System.Drawing.Size(64, 22); + this.numProxyPort.Size = new System.Drawing.Size(96, 29); this.numProxyPort.TabIndex = 3; this.numProxyPort.Value = new decimal(new int[] { 80, @@ -216,9 +229,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkUseProxyForAutomaticUpdates._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkUseProxyForAutomaticUpdates.AutoSize = true; this.chkUseProxyForAutomaticUpdates.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkUseProxyForAutomaticUpdates.Location = new System.Drawing.Point(6, 0); + this.chkUseProxyForAutomaticUpdates.Location = new System.Drawing.Point(9, 7); + this.chkUseProxyForAutomaticUpdates.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkUseProxyForAutomaticUpdates.Name = "chkUseProxyForAutomaticUpdates"; - this.chkUseProxyForAutomaticUpdates.Size = new System.Drawing.Size(176, 17); + this.chkUseProxyForAutomaticUpdates.Size = new System.Drawing.Size(262, 27); this.chkUseProxyForAutomaticUpdates.TabIndex = 0; this.chkUseProxyForAutomaticUpdates.Text = "Use a proxy server to connect"; this.chkUseProxyForAutomaticUpdates.UseVisualStyleBackColor = true; @@ -230,9 +244,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkUseProxyAuthentication.AutoSize = true; this.chkUseProxyAuthentication.Enabled = false; this.chkUseProxyAuthentication.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkUseProxyAuthentication.Location = new System.Drawing.Point(27, 70); + this.chkUseProxyAuthentication.Location = new System.Drawing.Point(8, 106); + this.chkUseProxyAuthentication.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.chkUseProxyAuthentication.Name = "chkUseProxyAuthentication"; - this.chkUseProxyAuthentication.Size = new System.Drawing.Size(234, 17); + this.chkUseProxyAuthentication.Size = new System.Drawing.Size(345, 27); this.chkUseProxyAuthentication.TabIndex = 2; this.chkUseProxyAuthentication.Text = "This proxy server requires authentication"; this.chkUseProxyAuthentication.UseVisualStyleBackColor = true; @@ -245,16 +260,18 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.pnlProxyAuthentication.Controls.Add(this.lblProxyPassword); this.pnlProxyAuthentication.Controls.Add(this.txtProxyPassword); this.pnlProxyAuthentication.Enabled = false; - this.pnlProxyAuthentication.Location = new System.Drawing.Point(3, 94); + this.pnlProxyAuthentication.Location = new System.Drawing.Point(4, 141); + this.pnlProxyAuthentication.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.pnlProxyAuthentication.Name = "pnlProxyAuthentication"; - this.pnlProxyAuthentication.Size = new System.Drawing.Size(604, 72); + this.pnlProxyAuthentication.Size = new System.Drawing.Size(906, 115); this.pnlProxyAuthentication.TabIndex = 3; // // lblProxyUsername // - this.lblProxyUsername.Location = new System.Drawing.Point(8, 0); + this.lblProxyUsername.Location = new System.Drawing.Point(13, 19); + this.lblProxyUsername.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblProxyUsername.Name = "lblProxyUsername"; - this.lblProxyUsername.Size = new System.Drawing.Size(96, 24); + this.lblProxyUsername.Size = new System.Drawing.Size(144, 29); this.lblProxyUsername.TabIndex = 0; this.lblProxyUsername.Text = "Username:"; this.lblProxyUsername.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -263,16 +280,18 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.txtProxyUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtProxyUsername.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtProxyUsername.Location = new System.Drawing.Point(110, 4); + this.txtProxyUsername.Location = new System.Drawing.Point(165, 19); + this.txtProxyUsername.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtProxyUsername.Name = "txtProxyUsername"; - this.txtProxyUsername.Size = new System.Drawing.Size(240, 22); + this.txtProxyUsername.Size = new System.Drawing.Size(359, 29); this.txtProxyUsername.TabIndex = 1; // // lblProxyPassword // - this.lblProxyPassword.Location = new System.Drawing.Point(8, 26); + this.lblProxyPassword.Location = new System.Drawing.Point(13, 66); + this.lblProxyPassword.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblProxyPassword.Name = "lblProxyPassword"; - this.lblProxyPassword.Size = new System.Drawing.Size(96, 24); + this.lblProxyPassword.Size = new System.Drawing.Size(144, 29); this.lblProxyPassword.TabIndex = 2; this.lblProxyPassword.Text = "Password:"; this.lblProxyPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -281,18 +300,20 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.txtProxyPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtProxyPassword.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtProxyPassword.Location = new System.Drawing.Point(110, 30); + this.txtProxyPassword.Location = new System.Drawing.Point(165, 66); + this.txtProxyPassword.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txtProxyPassword.Name = "txtProxyPassword"; - this.txtProxyPassword.Size = new System.Drawing.Size(240, 22); + this.txtProxyPassword.Size = new System.Drawing.Size(359, 29); this.txtProxyPassword.TabIndex = 3; this.txtProxyPassword.UseSystemPasswordChar = true; // // btnTestProxy // this.btnTestProxy._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; - this.btnTestProxy.Location = new System.Drawing.Point(6, 172); + this.btnTestProxy.Location = new System.Drawing.Point(8, 263); + this.btnTestProxy.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btnTestProxy.Name = "btnTestProxy"; - this.btnTestProxy.Size = new System.Drawing.Size(120, 23); + this.btnTestProxy.Size = new System.Drawing.Size(180, 34); this.btnTestProxy.TabIndex = 4; this.btnTestProxy.Text = "Test Proxy"; this.btnTestProxy.UseVisualStyleBackColor = true; @@ -302,23 +323,26 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.groupBoxReleaseChannel.Controls.Add(this.lblReleaseChannelExplanation); this.groupBoxReleaseChannel.Controls.Add(this.cboReleaseChannel); - this.groupBoxReleaseChannel.Location = new System.Drawing.Point(3, 123); + this.groupBoxReleaseChannel.Location = new System.Drawing.Point(4, 193); + this.groupBoxReleaseChannel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.groupBoxReleaseChannel.Name = "groupBoxReleaseChannel"; - this.groupBoxReleaseChannel.Size = new System.Drawing.Size(604, 100); + this.groupBoxReleaseChannel.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxReleaseChannel.Size = new System.Drawing.Size(906, 156); this.groupBoxReleaseChannel.TabIndex = 3; this.groupBoxReleaseChannel.TabStop = false; this.groupBoxReleaseChannel.Text = "Release Channel"; // // UpdatesPage // - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.groupBoxReleaseChannel); this.Controls.Add(this.lblUpdatesExplanation); this.Controls.Add(this.pnlUpdateCheck); this.Controls.Add(this.pnlProxy); + this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); this.Name = "UpdatesPage"; - this.Size = new System.Drawing.Size(610, 490); + this.Size = new System.Drawing.Size(915, 735); this.pnlUpdateCheck.ResumeLayout(false); this.pnlUpdateCheck.PerformLayout(); this.pnlProxy.ResumeLayout(false); diff --git a/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.cs b/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.cs index e85571e5..c5ba1862 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel; using System.Windows.Forms; using mRemoteNG.App; From 4e118493d270127bfd14dd7bd3f990550544bd2e Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 30 Apr 2019 21:42:32 +0200 Subject: [PATCH 31/38] Sphinx docs (#1384) * included changes from @nmat from separate repo into mrng * added sphinx-doc build dir * fixed error on non-appveyor builds * removed unneccesary variable * added post-build script for sphinx documenatation * retired "move_help_files" post build script * added sphinx-documentation files to project * display spinx docs * changed theme to read the docs * fixed typo * restructured sphinx dir * added documentation forr keyboard shortcuts and command line switches * more hierarchy fixes * added known issues * added images for sphinx docs to project * added quick connect documentation * added port scan documentation * added screenshot manager documentation * added notifications documentation * added import/export documentation * added ssh file transfer documentation * added connection config documentation * added options documentation * added menus documentation * converted remaining help files and tidied up resources * fixed formatting error * modified sphinx script to automatically grab assembly details from assembly file * modified copyright string for automated sphinx builds * splitted toctree * added RTD configuration file * added RTD badge * use default values if assembly file cannot be found * removed colons from headings * Minor fixes * Remove source link so its not confusing for users * Fix minor spelling * Add editorconfig for rst files * added external tools cheat sheet * extended known issues segment * added contact information * Fix list item in document: * Under "Opening and Closing Connections" * added infor on how to migrate from pre-NG versions * fixed list not being rendered properly * removed markup guide from help to move it to the github wiki * added missing information from github wiki * removed contributing document from repository itself to move it to the wiki * fixed formatting error * Add more information for import/export * minor wording fixes * moved troubleshooting and known issues to its own support section * moved "folders and inheritance" under "application handling" * Minor formatting fixes * Formatting fixes * Updated docs for ssh file transfer: * Added screenshot * Updated documentation a little * added FAQ * revised external tools * fixed sphinx build errors * changed heading format * do not output images for sphinx docs to build dir * removed issue/pr templates * updated appveyer configuration * added missing variables * added python to path * output PATH for debugging * sphinx build tests * Minor cleanup * added sql script changes into sphinx docs * removed unused appveyor.xml --- .github/CONTRIBUTING.md | 58 --- .github/ISSUE_TEMPLATE.md | 30 -- .gitignore | 2 +- README.MD | 1 + Tools/copy_tiles.ps1 | 4 +- Tools/postbuild_mremotev1.ps1 | 2 +- .../{move_help_files.ps1 => sphinx_docs.ps1} | 20 +- Tools/tidy_files_for_release.ps1 | 7 +- appveyor.yml | 46 -- mRemoteV1/.editorconfig | 11 +- mRemoteV1/Documentation/about.rst | 23 + mRemoteV1/Documentation/about/features.rst | 22 + mRemoteV1/Documentation/about/license.rst | 19 + .../Documentation/about/release_channels.rst | 46 ++ mRemoteV1/Documentation/about/versions.rst | 29 ++ .../Documentation/command_line_switches.rst | 40 ++ mRemoteV1/Documentation/conf.py | 224 ++++++++++ mRemoteV1/Documentation/contact_mail.rst | 12 + .../external_tools_cheat_sheet.rst | 132 ++++++ mRemoteV1/Documentation/faq.rst | 18 + .../Documentation/folders_and_inheritance.rst | 59 +++ .../Documentation/howtos/bulk_connections.rst | 18 + .../Documentation/howtos/external_tools.rst | 76 ++++ .../Documentation/howtos/jumpservers.rst | 32 ++ .../images/config_top_bar.png} | Bin .../images/connections_config.png} | Bin .../images/connections_main.png} | Bin .../images/connections_open.png} | Bin .../images/connections_rightclick_menu.png} | Bin .../images/connections_status.png | Bin 0 -> 1058 bytes .../images/connections_test_item.png} | Bin .../images/connections_top_bar.png} | Bin .../images}/credssp-error.png | Bin .../example_et_start_application_01.png | Bin 0 -> 16199 bytes .../example_et_start_application_02.png | Bin 0 -> 18012 bytes .../images/example_et_traceroute_01.png | Bin 0 -> 14832 bytes .../images/example_et_traceroute_02.png | Bin 0 -> 16248 bytes .../images/example_et_traceroute_03.png | Bin 0 -> 14912 bytes .../images/example_et_traceroute_04.png} | Bin .../images/example_et_traceroute_05.png | Bin 0 -> 16860 bytes ...rnal_tools_external_tool_properties_01.png | Bin 0 -> 7056 bytes .../images/external_tools_main_ui_01.png | Bin 0 -> 16813 bytes .../images/external_tools_toolbar_01.png | Bin 0 -> 2180 bytes .../images/external_tools_tools_list_01.png | Bin 0 -> 4085 bytes .../images/folders_and_inheritance_01.png} | Bin .../images/folders_and_inheritance_02.png} | Bin .../images/folders_and_inheritance_03.png} | Bin .../images/folders_and_inheritance_04.png} | Bin .../images/folders_and_inheritance_05.png} | Bin .../images/folders_and_inheritance_06.png} | Bin .../images/import_export_dialog.png} | Bin .../images/import_from_active_directory.png | Bin 0 -> 6073 bytes .../images/import_from_port_scan.png | Bin 0 -> 10295 bytes .../images/menus_main_menu.png} | Bin .../images/mremoteng_favicon_32.png | Bin 0 -> 1038 bytes .../Documentation/images/mremoteng_logo.png | Bin 0 -> 16042 bytes .../images/mremoteng_main_ui.png | Bin 0 -> 23030 bytes .../mremoteng_main_ui_connect_win_server.png | Bin 0 -> 38161 bytes .../images/notifications_panel.png} | Bin .../images/notifications_popup.png} | Bin .../images}/oracle_remediation_setting.png | Bin mRemoteV1/Documentation/images/putty.png | Bin 0 -> 619 bytes .../images/quick_connect_01.png} | Bin .../images/quick_connect_02.png} | Bin .../images/quick_connect_03.png} | Bin .../images/screenshot_manager_overview.png} | Bin .../screenshot_manager_rightclick_menu.png} | Bin .../images/ssh_file_transfer_01.png | Bin 0 -> 9018 bytes .../images/user_interface_overview.png | Bin 0 -> 146382 bytes .../images/user_interface_panels_01.png | Bin 0 -> 1676 bytes .../images/user_interface_panels_02.png | Bin 0 -> 9719 bytes .../images/user_interface_panels_03.png | Bin 0 -> 1409 bytes mRemoteV1/Documentation/index.rst | 52 +++ mRemoteV1/Documentation/installation.rst | 11 + .../Documentation/installation/install.rst | 90 ++++ .../installation/minimum_requirements.rst | 50 +++ .../supported_operating_systems.rst | 13 + .../Documentation/installation/uninstall.rst | 28 ++ .../Documentation/keyboard_shortcuts.rst | 75 ++++ mRemoteV1/Documentation/known_issues.rst | 139 ++++++ mRemoteV1/Documentation/migrate.rst | 38 ++ mRemoteV1/Documentation/sql_configuration.rst | 381 ++++++++++++++++ mRemoteV1/Documentation/troubleshooting.rst | 69 +++ mRemoteV1/Documentation/user_interface.rst | 21 + .../user_interface/connections.rst | 147 +++++++ .../user_interface/external_tools.rst | 198 +++++++++ .../user_interface/import_export.rst | 76 ++++ .../user_interface/main_window.rst | 55 +++ .../Documentation/user_interface/menus.rst | 126 ++++++ .../user_interface/notifications.rst | 43 ++ .../Documentation/user_interface/options.rst | 242 ++++++++++ .../Documentation/user_interface/panels.rst | 62 +++ .../user_interface/port_scan.rst | 20 + .../user_interface/quick_connect.rst | 26 ++ .../user_interface/screenshot_manager.rst | 35 ++ .../user_interface/ssh_file_transfer.rst | 67 +++ mRemoteV1/Properties/AssemblyInfo.cs | 6 +- mRemoteV1/Resources/Fonts/HandelGotD.ttf | Bin 28288 -> 0 bytes mRemoteV1/Resources/Fonts/HandelGotDBol.ttf | Bin 52792 -> 0 bytes mRemoteV1/Resources/Fonts/HandelGotDLig.ttf | Bin 52656 -> 0 bytes mRemoteV1/Resources/Help/Index.htm | 87 ---- mRemoteV1/Resources/Help/MSSQLScript.txt | 151 ------- mRemoteV1/Resources/Help/Main.css | 140 ------ mRemoteV1/Resources/Help/MySQLScript.txt | 183 -------- .../Help/Screenshots/External Tools/01.png | Bin 3965 -> 0 bytes .../Help/Screenshots/External Tools/02.png | Bin 8235 -> 0 bytes .../Help/Screenshots/External Tools/03.png | Bin 4157 -> 0 bytes .../Help/Screenshots/External Tools/04.png | Bin 3983 -> 0 bytes .../Help/Screenshots/External Tools/05.png | Bin 4085 -> 0 bytes .../Help/Screenshots/External Tools/06.png | Bin 4668 -> 0 bytes .../Help/Screenshots/External Tools/07.png | Bin 24274 -> 0 bytes .../Screenshots/Navigation/basic_panels.png | Bin 1052 -> 0 bytes .../Navigation/panel_context_menu.png | Bin 1780 -> 0 bytes .../Navigation/rdp_context_menu.png | Bin 7064 -> 0 bytes .../Navigation/ssh_context_menu.png | Bin 6284 -> 0 bytes .../Help/Screenshots/Navigation/view_menu.png | Bin 2220 -> 0 bytes .../Help/Screenshots/Reference/01.png | Bin 158798 -> 0 bytes .../Help/Screenshots/Reference/example_01.png | Bin 3048 -> 0 bytes .../Screenshots/Reference/status_icon.png | Bin 837 -> 0 bytes .../Help/gs_command_line_switches.htm | 81 ---- mRemoteV1/Resources/Help/gs_installation.htm | 34 -- mRemoteV1/Resources/Help/gs_prerequisites.htm | 100 ----- .../Resources/Help/gs_running_mremoteng.htm | 93 ---- .../Resources/Help/st_common_problems_rdp.htm | 49 --- mRemoteV1/Resources/Help/ui_config.htm | 57 --- mRemoteV1/Resources/Help/ui_connections.htm | 66 --- .../Resources/Help/ui_external_tools.htm | 167 ------- mRemoteV1/Resources/Help/ui_file_transfer.htm | 66 --- .../Resources/Help/ui_import_and_export.htm | 32 -- .../Resources/Help/ui_keyboardshortcuts.htm | 132 ------ mRemoteV1/Resources/Help/ui_menus.htm | 224 ---------- mRemoteV1/Resources/Help/ui_navigation.htm | 89 ---- mRemoteV1/Resources/Help/ui_notifications.htm | 51 --- mRemoteV1/Resources/Help/ui_options.htm | 412 ------------------ mRemoteV1/Resources/Help/ui_port_scan.htm | 43 -- mRemoteV1/Resources/Help/ui_quick_connect.htm | 35 -- .../Resources/Help/ui_screenshot_manager.htm | 35 -- .../Resources/Help/ui_sql_configuration.htm | 62 --- mRemoteV1/UI/Window/HelpWindow.cs | 238 ++-------- mRemoteV1/UI/Window/HelpWindow.resx | 3 + mRemoteV1/mRemoteV1.csproj | 278 ++++-------- 141 files changed, 2963 insertions(+), 2946 deletions(-) delete mode 100644 .github/CONTRIBUTING.md delete mode 100644 .github/ISSUE_TEMPLATE.md rename Tools/{move_help_files.ps1 => sphinx_docs.ps1} (52%) delete mode 100644 appveyor.yml create mode 100644 mRemoteV1/Documentation/about.rst create mode 100644 mRemoteV1/Documentation/about/features.rst create mode 100644 mRemoteV1/Documentation/about/license.rst create mode 100644 mRemoteV1/Documentation/about/release_channels.rst create mode 100644 mRemoteV1/Documentation/about/versions.rst create mode 100644 mRemoteV1/Documentation/command_line_switches.rst create mode 100644 mRemoteV1/Documentation/conf.py create mode 100644 mRemoteV1/Documentation/contact_mail.rst create mode 100644 mRemoteV1/Documentation/external_tools_cheat_sheet.rst create mode 100644 mRemoteV1/Documentation/faq.rst create mode 100644 mRemoteV1/Documentation/folders_and_inheritance.rst create mode 100644 mRemoteV1/Documentation/howtos/bulk_connections.rst create mode 100644 mRemoteV1/Documentation/howtos/external_tools.rst create mode 100644 mRemoteV1/Documentation/howtos/jumpservers.rst rename mRemoteV1/{Resources/Help/Screenshots/Config/main_top_bar.png => Documentation/images/config_top_bar.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Reference/config_panel_01.png => Documentation/images/connections_config.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Config/main_window.png => Documentation/images/connections_main.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Reference/open_connection.png => Documentation/images/connections_open.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Reference/new_connection.png => Documentation/images/connections_rightclick_menu.png} (100%) create mode 100644 mRemoteV1/Documentation/images/connections_status.png rename mRemoteV1/{Resources/Help/Screenshots/Reference/new_connection_test_item.png => Documentation/images/connections_test_item.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Connections/menu_top_bar.png => Documentation/images/connections_top_bar.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/CommonProblemsRDP => Documentation/images}/credssp-error.png (100%) create mode 100644 mRemoteV1/Documentation/images/example_et_start_application_01.png create mode 100644 mRemoteV1/Documentation/images/example_et_start_application_02.png create mode 100644 mRemoteV1/Documentation/images/example_et_traceroute_01.png create mode 100644 mRemoteV1/Documentation/images/example_et_traceroute_02.png create mode 100644 mRemoteV1/Documentation/images/example_et_traceroute_03.png rename mRemoteV1/{Resources/Help/Screenshots/External Tools/08.png => Documentation/images/example_et_traceroute_04.png} (100%) create mode 100644 mRemoteV1/Documentation/images/example_et_traceroute_05.png create mode 100644 mRemoteV1/Documentation/images/external_tools_external_tool_properties_01.png create mode 100644 mRemoteV1/Documentation/images/external_tools_main_ui_01.png create mode 100644 mRemoteV1/Documentation/images/external_tools_toolbar_01.png create mode 100644 mRemoteV1/Documentation/images/external_tools_tools_list_01.png rename mRemoteV1/{Resources/Help/Screenshots/Reference/add_new_folder.png => Documentation/images/folders_and_inheritance_01.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Reference/example_02.png => Documentation/images/folders_and_inheritance_02.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Reference/example_03.png => Documentation/images/folders_and_inheritance_03.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Reference/example_04.png => Documentation/images/folders_and_inheritance_04.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Reference/example_05.png => Documentation/images/folders_and_inheritance_05.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Reference/example_06.png => Documentation/images/folders_and_inheritance_06.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/ImportExport/export_dialog.png => Documentation/images/import_export_dialog.png} (100%) create mode 100644 mRemoteV1/Documentation/images/import_from_active_directory.png create mode 100644 mRemoteV1/Documentation/images/import_from_port_scan.png rename mRemoteV1/{Resources/Help/Screenshots/Main Menu/Main_Menu.png => Documentation/images/menus_main_menu.png} (100%) create mode 100644 mRemoteV1/Documentation/images/mremoteng_favicon_32.png create mode 100644 mRemoteV1/Documentation/images/mremoteng_logo.png create mode 100644 mRemoteV1/Documentation/images/mremoteng_main_ui.png create mode 100644 mRemoteV1/Documentation/images/mremoteng_main_ui_connect_win_server.png rename mRemoteV1/{Resources/Help/Screenshots/Notifications/notification_warning.png => Documentation/images/notifications_panel.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Notifications/popup_warning.png => Documentation/images/notifications_popup.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/CommonProblemsRDP => Documentation/images}/oracle_remediation_setting.png (100%) create mode 100644 mRemoteV1/Documentation/images/putty.png rename mRemoteV1/{Resources/Help/Screenshots/Quick Connect/01.png => Documentation/images/quick_connect_01.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Quick Connect/02.png => Documentation/images/quick_connect_02.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Quick Connect/03.png => Documentation/images/quick_connect_03.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Screenshot Manager/screenshot_manager.png => Documentation/images/screenshot_manager_overview.png} (100%) rename mRemoteV1/{Resources/Help/Screenshots/Screenshot Manager/rightclick_screenshot.png => Documentation/images/screenshot_manager_rightclick_menu.png} (100%) create mode 100644 mRemoteV1/Documentation/images/ssh_file_transfer_01.png create mode 100644 mRemoteV1/Documentation/images/user_interface_overview.png create mode 100644 mRemoteV1/Documentation/images/user_interface_panels_01.png create mode 100644 mRemoteV1/Documentation/images/user_interface_panels_02.png create mode 100644 mRemoteV1/Documentation/images/user_interface_panels_03.png create mode 100644 mRemoteV1/Documentation/index.rst create mode 100644 mRemoteV1/Documentation/installation.rst create mode 100644 mRemoteV1/Documentation/installation/install.rst create mode 100644 mRemoteV1/Documentation/installation/minimum_requirements.rst create mode 100644 mRemoteV1/Documentation/installation/supported_operating_systems.rst create mode 100644 mRemoteV1/Documentation/installation/uninstall.rst create mode 100644 mRemoteV1/Documentation/keyboard_shortcuts.rst create mode 100644 mRemoteV1/Documentation/known_issues.rst create mode 100644 mRemoteV1/Documentation/migrate.rst create mode 100644 mRemoteV1/Documentation/sql_configuration.rst create mode 100644 mRemoteV1/Documentation/troubleshooting.rst create mode 100644 mRemoteV1/Documentation/user_interface.rst create mode 100644 mRemoteV1/Documentation/user_interface/connections.rst create mode 100644 mRemoteV1/Documentation/user_interface/external_tools.rst create mode 100644 mRemoteV1/Documentation/user_interface/import_export.rst create mode 100644 mRemoteV1/Documentation/user_interface/main_window.rst create mode 100644 mRemoteV1/Documentation/user_interface/menus.rst create mode 100644 mRemoteV1/Documentation/user_interface/notifications.rst create mode 100644 mRemoteV1/Documentation/user_interface/options.rst create mode 100644 mRemoteV1/Documentation/user_interface/panels.rst create mode 100644 mRemoteV1/Documentation/user_interface/port_scan.rst create mode 100644 mRemoteV1/Documentation/user_interface/quick_connect.rst create mode 100644 mRemoteV1/Documentation/user_interface/screenshot_manager.rst create mode 100644 mRemoteV1/Documentation/user_interface/ssh_file_transfer.rst delete mode 100644 mRemoteV1/Resources/Fonts/HandelGotD.ttf delete mode 100644 mRemoteV1/Resources/Fonts/HandelGotDBol.ttf delete mode 100644 mRemoteV1/Resources/Fonts/HandelGotDLig.ttf delete mode 100644 mRemoteV1/Resources/Help/Index.htm delete mode 100644 mRemoteV1/Resources/Help/MSSQLScript.txt delete mode 100644 mRemoteV1/Resources/Help/Main.css delete mode 100644 mRemoteV1/Resources/Help/MySQLScript.txt delete mode 100644 mRemoteV1/Resources/Help/Screenshots/External Tools/01.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/External Tools/02.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/External Tools/03.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/External Tools/04.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/External Tools/05.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/External Tools/06.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/External Tools/07.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/Navigation/basic_panels.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/Navigation/panel_context_menu.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/Navigation/rdp_context_menu.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/Navigation/ssh_context_menu.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/Navigation/view_menu.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/Reference/01.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/Reference/example_01.png delete mode 100644 mRemoteV1/Resources/Help/Screenshots/Reference/status_icon.png delete mode 100644 mRemoteV1/Resources/Help/gs_command_line_switches.htm delete mode 100644 mRemoteV1/Resources/Help/gs_installation.htm delete mode 100644 mRemoteV1/Resources/Help/gs_prerequisites.htm delete mode 100644 mRemoteV1/Resources/Help/gs_running_mremoteng.htm delete mode 100644 mRemoteV1/Resources/Help/st_common_problems_rdp.htm delete mode 100644 mRemoteV1/Resources/Help/ui_config.htm delete mode 100644 mRemoteV1/Resources/Help/ui_connections.htm delete mode 100644 mRemoteV1/Resources/Help/ui_external_tools.htm delete mode 100644 mRemoteV1/Resources/Help/ui_file_transfer.htm delete mode 100644 mRemoteV1/Resources/Help/ui_import_and_export.htm delete mode 100644 mRemoteV1/Resources/Help/ui_keyboardshortcuts.htm delete mode 100644 mRemoteV1/Resources/Help/ui_menus.htm delete mode 100644 mRemoteV1/Resources/Help/ui_navigation.htm delete mode 100644 mRemoteV1/Resources/Help/ui_notifications.htm delete mode 100644 mRemoteV1/Resources/Help/ui_options.htm delete mode 100644 mRemoteV1/Resources/Help/ui_port_scan.htm delete mode 100644 mRemoteV1/Resources/Help/ui_quick_connect.htm delete mode 100644 mRemoteV1/Resources/Help/ui_screenshot_manager.htm delete mode 100644 mRemoteV1/Resources/Help/ui_sql_configuration.htm diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index b5554a85..00000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,58 +0,0 @@ -# Welcome! - -We are really glad you are interested in contributing to mRemoteNG! - -Open source software is best when shared with others. This also applies to the work that goes into the software. Your ideas and passion are what make this software great. - - -### Ways you can contribute -There are many ways that you can help improve mRemoteNG, even if you don't know how to program. - -For example, you might: -- add documentation or "how-to" articles on the [Wiki](https://github.com/mRemoteNG/mRemoteNG/wiki) -- answer support questions on the [forum](http://forum.mremoteng.org) -- [add or improve a translation](https://github.com/mRemoteNG/mRemoteNG/wiki/How-to-Help-Translating-mRemoteNG) -- submit a [pull request](https://github.com/mRemoteNG/mRemoteNG/pulls) for a [bug or feature ticket](https://github.com/mRemoteNG/mRemoteNG/issues) - - -# Submitting GitHub Issues -The GitHub Issue tracker is our preferred channel for bug reports and feature requests. -- For questions or general discussion, please use [our public Gitter chat](https://gitter.im/mRemoteNG/PublicChat) or the [forum](http://forum.mremoteng.org). -- If you find a security vulnerability, do **NOT** open an issue. Email support@mremoteng.org instead. - -### Bug reports -A bug is any behavior that does not consistently produce the expected result. - -Guidelines for bug reports: -1. Do not open bug reports for questions. -1. Use the GitHub Issue search to make sure your bug hasn't already been reported. -1. Include as much detailed information as possible. We've included a default template when opening an issue to make this easier. - -### Feature requests -Feature requests are great! Take some time to compose a well thought out proposal. It's up to you to convince the project maintainers that your feature is a good idea. To ensure your request receives the consideration that it deserves, include as much detail as possible. For example: -- What is the purpose of the new feature? -- What situation led you to want this feature? -- How does the application perform now and how would the new feature change this? -- If applicable, consider including visual mock-ups to show us what you mean. - -# Pull requests -Good pull requests are a huge help! If you haven't already, please consider reading [GitHub's guide to contributing to open source](https://guides.github.com/activities/contributing-to-open-source/) - -Our requests when it comes to pull requests: -- Be clear about what your PR seeks to do. -- Keep your PR focused. It should be clear what code changed to achieve your stated goal. -- Add or update tests when possible. Some of the code base is still very hard to effectively test. If you can, please try to create or update tests that relate to your PR. -- Please talk with one of the project maintainers before starting work on large pull requests. Otherwise, you run the risk of putting a lot of time into a feature or refactor that gets denied. -- If you have access to Static Code Analysis tools (like ReSharper), please don't analyze/fix everything in one giant PR. As great as these tools are, they can sometimes cause unintended problems. - -# Code Style -- Please make use of simple types and var where possible -- Prefer "using" over .Dispose() -- Avoid nesting "using" - -# Your first contributions -Want to help but don't know where to start? Check out the issues that we've labeled with [`Help Wanted`](https://github.com/mRemoteNG/mRemoteNG/issues?q=is%3Aissue+is%3Aopen+label%3A%22Help+Wanted%22) or [`ready`](https://github.com/mRemoteNG/mRemoteNG/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3A%22ready%22). These will vary in difficulty, but should be possible for new contributors. - -Want to help but don't know C#? Check out the issues that we've labeled with [`Documentation`](https://github.com/mRemoteNG/mRemoteNG/labels/Documentation). - -Sorry, we currently do not have any tags for truly beginner-friendly issues :( diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 53cb42df..00000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,30 +0,0 @@ - - -## Expected Behavior - - - -## Current Behavior - - - -## Possible Solution - - - -## Steps to Reproduce (for bugs) - - -1. -2. -3. -4. - -## Context - - - -## Your Environment - -* Version used: -* Operating System and version (e.g. Windows 10 1709 x64): diff --git a/.gitignore b/.gitignore index 18a38611..10cbe4eb 100644 --- a/.gitignore +++ b/.gitignore @@ -285,4 +285,4 @@ InstallerProjects/Installer/Resources/License.rtf # gh-pages info runlocal.bat -/_site \ No newline at end of file +/_site diff --git a/README.MD b/README.MD index 5d3795bd..d9f82a0d 100644 --- a/README.MD +++ b/README.MD @@ -7,6 +7,7 @@ [![Github Releases](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/total.svg?style=flat-square)](https://github.com/mRemoteNG/mRemoteNG/releases/) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/529/badge)](https://bestpractices.coreinfrastructure.org/projects/529) +[![Documentation Status](https://readthedocs.org/projects/mremoteng/badge/?version=latest)](https://mremoteng.readthedocs.io/en/latest/?badge=latest) | Update Channel | Build Status | Downloads | | ---------------|--------------|-----------| diff --git a/Tools/copy_tiles.ps1 b/Tools/copy_tiles.ps1 index 52c73630..318de91b 100644 --- a/Tools/copy_tiles.ps1 +++ b/Tools/copy_tiles.ps1 @@ -12,8 +12,6 @@ Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) =====" Write-Output "Copying TILES folder to output" $sourceFiles = [io.path]::combine($SolutionDir , 'mRemoteV1\Resources\Tiles' ) -$DestinationDir = $TargetDir - -robocopy $sourceFiles $DestinationDir *.* +robocopy $sourceFiles $TargetDir *.* Write-Output "" \ No newline at end of file diff --git a/Tools/postbuild_mremotev1.ps1 b/Tools/postbuild_mremotev1.ps1 index 0c1e545d..d167be3a 100644 --- a/Tools/postbuild_mremotev1.ps1 +++ b/Tools/postbuild_mremotev1.ps1 @@ -42,7 +42,7 @@ Format-Table -AutoSize -Wrap -InputObject @{ & "$PSScriptRoot\copy_puttyng.ps1" -SolutionDir $SolutionDir -TargetDir $TargetDir & "$PSScriptRoot\copy_themes.ps1" -SolutionDir $SolutionDir -TargetDir $TargetDir & "$PSScriptRoot\copy_tiles.ps1" -SolutionDir $SolutionDir -TargetDir $TargetDir -& "$PSScriptRoot\move_help_files.ps1" -TargetDir $TargetDir +& "$PSScriptRoot\sphinx_docs.ps1" -SolutionDir $SolutionDir -TargetDir $TargetDir & "$PSScriptRoot\set_LargeAddressAware.ps1" -TargetDir $TargetDir -TargetFileName $TargetFileName & "$PSScriptRoot\verify_LargeAddressAware.ps1" -TargetDir $TargetDir -TargetFileName $TargetFileName & "$PSScriptRoot\tidy_files_for_release.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName diff --git a/Tools/move_help_files.ps1 b/Tools/sphinx_docs.ps1 similarity index 52% rename from Tools/move_help_files.ps1 rename to Tools/sphinx_docs.ps1 index dc63866f..ac747672 100644 --- a/Tools/move_help_files.ps1 +++ b/Tools/sphinx_docs.ps1 @@ -1,23 +1,23 @@ -param ( - [string] +param ( + [string] + [Parameter(Mandatory=$true)] + $SolutionDir, + + [string] [Parameter(Mandatory=$true)] $TargetDir ) Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) =====" +Write-Output "Building HTML-Documentation with Sphinx" + $path_HelpFilesDir = Join-Path -Path $TargetDir -ChildPath "Help" - -Write-Output "Moving Help files to correct directory" - +$path_SphinxSourceDir = Join-Path -Path $SolutionDir -ChildPath "mremoteV1\Documentation" # Remove stale Help files, if they exist if (Test-Path -Path $path_HelpFilesDir) { Remove-Item -Path $path_HelpFilesDir -Recurse -Force } - -# Move Help files -Move-Item -Path (Join-Path -Path $TargetDir -ChildPath "Resources\Help") -Destination $path_HelpFilesDir -Force -Start-Sleep -Seconds 2 -Remove-Item -Path (Join-Path -Path $TargetDir -ChildPath "Resources") -Recurse -Force +sphinx-build $path_SphinxSourceDir $path_HelpFilesDir Write-Output "" \ No newline at end of file diff --git a/Tools/tidy_files_for_release.ps1 b/Tools/tidy_files_for_release.ps1 index 543247c6..1d6d8459 100644 --- a/Tools/tidy_files_for_release.ps1 +++ b/Tools/tidy_files_for_release.ps1 @@ -13,7 +13,12 @@ Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) =====" # Remove unnecessary files from Release versions if ($ConfigurationName -match "Release") { Write-Output "Removing unnecessary files from Release versions" - Remove-Item -Path (Join-Path -Path $TargetDir -ChildPath "app.publish") -Recurse -Force + + $test = Join-Path -Path $TargetDir -ChildPath "app.publish" + if (Test-Path $test -PathType Container) { + Remove-Item -Path (Join-Path -Path $TargetDir -ChildPath "app.publish") -Recurse -Force + } + $filesToDelete = Get-ChildItem -Path $TargetDir -Recurse -Include @( "*.publish", "*.xml", diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index bffd4c97..00000000 --- a/appveyor.yml +++ /dev/null @@ -1,46 +0,0 @@ -version: 1.76.{build} -pull_requests: - do_not_increment_build_number: true -skip_tags: true -skip_branch_with_pr: true -image: Visual Studio 2017 -configuration: -- Release -- Release Portable -- Release Installer -platform: x86 -shallow_clone: true -clone_depth: 1 -install: -- ps: >- - date - - mRemoteV1\Resources\CitrixReceiver.exe ENABLE_SSON="No" /silent /noreboot /EnableCEIP=false /AutoUpdateCheck=disabled /EnableTracing=false | out-null - - date -before_build: -- cmd: >- - echo %TIME% - - nuget restore - - echo %TIME% -build: - project: mRemoteV1.sln - parallel: true - verbosity: normal -after_build: -- ps: "if([string]::IsNullOrEmpty($Env:APPVEYOR_BUILD_FOLDER)) {\n Write-Output \"NOT running via Appveyor - Exiting\"\n Exit\n}\n\n$appvDir = $Env:APPVEYOR_BUILD_FOLDER\n\nWrite-Output \"Appveyor Build Dir: '$($appvDir)'\"\n$ConfigurationName = $Env:CONFIGURATION.Trim()\nWrite-Output \"Config Name (tirmmed): '$($ConfigurationName)'\"\n\n\n$SIGCHECK=\"Tools\\exes\\sigcheck.exe\"\n$SEVENZIP=\"Tools\\7zip\\7za.exe\"\n\nif ($ConfigurationName -eq \"Release Portable\") {\n Write-Output \"Packaging Release Portable ZIP\"\n \n $version = & $SIGCHECK /accepteula -q -n \"mRemoteV1\\bin\\$($ConfigurationName)\\mRemoteNG.exe\"\n\n Write-Output \"Version is $($version)\"\n\n $PortableZip=\"Release\\mRemoteNG-Portable-$($version).zip\"\n\n Remove-Item -Recurse \"mRemoteV1\\bin\\package\" -ErrorAction SilentlyContinue | Out-Null\n New-Item \"mRemoteV1\\bin\\package\" -ItemType \"directory\" | Out-Null\n \n Copy-Item \"mRemoteV1\\Resources\\PuTTYNG.exe\" -Destination \"mRemoteV1\\bin\\package\"\n\n Copy-Item \"mRemoteV1\\bin\\$ConfigurationName\\*\" -Destination \"mRemoteV1\\bin\\package\" -Recurse -Force -Exclude *.pdb\n Copy-Item \"*.txt\" -Destination \"mRemoteV1\\bin\\package\"\n\n Write-Output \"Creating portable ZIP file $($PortableZip)\"\n Remove-Item -Force $PortableZip -ErrorAction SilentlyContinue\n & $SEVENZIP a -bt -bd -bb1 -mx=9 -tzip -y -r $PortableZip \".\\mRemoteV1\\bin\\package\\*.*\"\n}\nelse {\n Write-Output \"We will not zip anything - this isnt a portable release build.\"\n}\n\nWrite-Output \"\"\nWrite-Output \"\"\n\nif ($ConfigurationName -match \"Release\" -And $ConfigurationName -ne \"Release Installer\") {\n Write-Output \"Packaging debug symbols\"\n \n $version = & $SIGCHECK /accepteula -q -n \"mRemoteV1\\bin\\$($ConfigurationName)\\mRemoteNG.exe\"\n\n Write-Output \"Version is $($version)\"\n\n if ($ConfigurationName -match \"Portable\") {\n $zipFilePrefix = \"mRemoteNG-Portable-symbols\"\n } else {\n $zipFilePrefix = \"mRemoteNG-symbols\"\n }\n\n $outputZipPath=\"Release\\$zipFilePrefix-$($version).zip\"\n\n Write-Output \"Creating debug symbols ZIP file $($outputZipPath)\"\n Remove-Item -Force $outputZipPath -ErrorAction SilentlyContinue\n $SymPath = (Join-Path -Path mRemoteV1\\bin\\$($ConfigurationName) -ChildPath \"*.pdb\")\n if(Test-Path \"$SymPath\") {\n & $SEVENZIP a -bt -bd -bb1 -mx=9 -tzip -y -r $outputZipPath \"$SymPath\"\n } else {\n Write-Output \"No Debugging Symbols Found...\"\n }\n \n}\nelse {\n Write-Output \"We will not package debug symbols for this configuration $($ConfigurationName)\"\n}\n\nWrite-Output \"\"" -test: - assemblies: - only: - - mRemoteNGTests\bin\$(configuration)\mRemoteNGTests.dll -artifacts: -- path: Release\*.msi - name: mRemoteNG-installer.msi -- path: Release\mRemoteNG-Portable-1.*.zip - name: mRemoteNG-portable.zip -- path: Release\mRemoteNG-Portable-symbols*.zip - name: mRemoteNG-Portable-symbols.zip -- path: Release\mRemoteNG-symbols*.zip - name: mRemoteNG-symbols.zip \ No newline at end of file diff --git a/mRemoteV1/.editorconfig b/mRemoteV1/.editorconfig index 6071b846..37639125 100644 --- a/mRemoteV1/.editorconfig +++ b/mRemoteV1/.editorconfig @@ -13,6 +13,15 @@ indent_size = 4 trim_trailing_whitespace = true charset = utf-8-bom +# reStructuredText +[*.rst] +charset = utf-8 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true +indent_size = 3 +max_line_length = 120 + # Organize usings dotnet_sort_system_directives_first = true @@ -41,4 +50,4 @@ csharp_space_after_colon_in_inheritance_clause = true csharp_space_around_binary_operators = before_and_after csharp_space_between_method_declaration_empty_parameter_list_parentheses = false csharp_space_between_method_call_name_and_opening_parenthesis = false -csharp_space_between_method_call_empty_parameter_list_parentheses = false \ No newline at end of file +csharp_space_between_method_call_empty_parameter_list_parentheses = false diff --git a/mRemoteV1/Documentation/about.rst b/mRemoteV1/Documentation/about.rst new file mode 100644 index 00000000..520372c1 --- /dev/null +++ b/mRemoteV1/Documentation/about.rst @@ -0,0 +1,23 @@ +############### +About mRemoteNG +############### + +mRemoteNG is an open source, multi-protocol, multi-remote connections manager +that aims at providing you with a clutter-free, +unstressful platform to manage all your remote connections in one place. +The application is released under the GPLv2_ and is being managed on GitHub_. + +.. _GitHub: http://github.com/mRemoteNG/mRemoteNG +.. _GPLv2: http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html + +As of now mRemoteNG supports the following protocols: + +RDP - SSH - VNC - ICA - Telnet - RAW - RLogin - HTTP/S + +.. toctree:: + :maxdepth: 2 + + about/features.rst + about/versions.rst + about/release_channels.rst + about/license.rst diff --git a/mRemoteV1/Documentation/about/features.rst b/mRemoteV1/Documentation/about/features.rst new file mode 100644 index 00000000..d9442892 --- /dev/null +++ b/mRemoteV1/Documentation/about/features.rst @@ -0,0 +1,22 @@ +************ +Key Features +************ + +- Free and Open Source, released under the GPL +- Organizing connections into panels and tabs +- Multiple supported protocols (RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S) +- Easy to organize and maintain list of connections +- Inheritance makes it possible to store properties on folder basis and let the underlying connections inherit this info +- Importing connections from Active Directory +- Creating nested folder structures to categorize connections +- "Quick Connect" feature to quickly open a connection without creating an entry +- "Quick Search" feature to quickly find a connection while typing +- Support for SCP/SFTP (SSH) file transfers +- Assign icons to connections for quick identification +- A screenshot manager to create screenshots of running connections +- "Auto-Update" feature +- Minimize to system tray +- Fullscreen (Kiosk) mode +- Assign global credentials to use when no information is provided on connection basis +- Host Indication on each connection to show if host responds to ping requests +- ... diff --git a/mRemoteV1/Documentation/about/license.rst b/mRemoteV1/Documentation/about/license.rst new file mode 100644 index 00000000..e791ac16 --- /dev/null +++ b/mRemoteV1/Documentation/about/license.rst @@ -0,0 +1,19 @@ +******* +License +******* + +mRemoteNG is written under the GNU GPLv2_ license and is a free software. + +.. _GPLv2: http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html + +Free software is referred to freedom, not price. The General Public Licenses are designed to make sure +that you have the freedom to distribute copies of free software (and charge for the service if you wish), +that you receive source code or can get it if you want it, that you can change the software or use pieces +of it in new free programs; and that you know you can do these things. + +For example, if you distribute copies of such a program, whether gratis or for a fee, +you must give the recipients all the rights that you have. You must make sure that they, too, +receive or can get the source code. And you must show them these terms so they know their rights. + +To understand and read more of the license that mRemoteNG is using. Please follow the link here to know more: +GPL (V2) `GNU Project website `_ diff --git a/mRemoteV1/Documentation/about/release_channels.rst b/mRemoteV1/Documentation/about/release_channels.rst new file mode 100644 index 00000000..4354c2b0 --- /dev/null +++ b/mRemoteV1/Documentation/about/release_channels.rst @@ -0,0 +1,46 @@ +**************** +Release Channels +**************** + +.. note:: + + We currently do not offer a nightly build channel. To get the absolute bleeding-edge updates, you will need to build mRemoteNG from source. Instructions on setting up your development environment can be found here: + + +Stable +====== +The **Stable** channel includes only officially released versions of mRemoteNG. This channel +receives updates much less often than the others, but has the least chance for bugs. + +These releases will be marked as a normal release on GitHub and may use terms like **Final** or +**Stable** in the release. + +This is the recommended and default channel for all users. + + +Beta +==== +The **Beta** channel includes pre-release versions in addition to what the **Stable** channel offers. +This includes any version marked as **beta** or **rc** (release candidate). This channel is meant to +give users an advanced look at features and fixes that are done but not fully tested, yet. + +While these versions are generally stable, there is still a higher chance of encountering bugs. +**Beta** channel users are highly encouraged to enter bug reports for any issues that arise during their +use of the program. + +Use this channel if you can accept a higher rate of bugs and would like early access to releases. + + +Development +=========== +The **Development** channel includes the pre-release **alpha** versions in addition to what the **Beta** +and **Stable** channels offer. At this level, you will receive every version of the program that we publish +on GitHub. + +This channel is meant for users that would like to help us test and develop the program. While we try +to ensure that no serious bugs get out even in these early versions, we cannot make any guarantees to the +stability of the application. Users of this channel are highly encouraged to enter bug reports and +provide feedback to how development is progressing. + +Use this channel only if you can accept potentially serious bugs and would like to help us test early +versions of the program. \ No newline at end of file diff --git a/mRemoteV1/Documentation/about/versions.rst b/mRemoteV1/Documentation/about/versions.rst new file mode 100644 index 00000000..1a09468a --- /dev/null +++ b/mRemoteV1/Documentation/about/versions.rst @@ -0,0 +1,29 @@ +***************** +Version Numbering +***************** + +.. note:: + + We are currently rethinking our version numbering scheme and are considering `Semantic Versioning `_ + but will need to discuss it further. + +**Our versions follow the format:** ``Major.Minor.Patch.Build`` + ++-----------+--------------+-----------------------------------------------------------------------+ +| Name | Incremented | Description | ++===========+==============+=======================================================================+ +| ``Major`` | Manually | We currently don't increment this number | ++-----------+--------------+-----------------------------------------------------------------------+ +| ``Minor`` | manually | | We currently use this number to indicate releases that include new | +| | | | functionality and bug fixes | ++-----------+--------------+-----------------------------------------------------------------------+ +| ``Patch`` | Manually | This number represents the current patch level. | +| | | | +| | | Patches are typically released to resolve bugs | ++-----------+--------------+-----------------------------------------------------------------------+ +| ``Build`` | Manually | This number represents | +| | | ``(number of seconds since midnight)/2`` | +| | | | +| | | It exists to help prevent version | +| | | collisions during development | ++-----------+--------------+-----------------------------------------------------------------------+ diff --git a/mRemoteV1/Documentation/command_line_switches.rst b/mRemoteV1/Documentation/command_line_switches.rst new file mode 100644 index 00000000..a67b5523 --- /dev/null +++ b/mRemoteV1/Documentation/command_line_switches.rst @@ -0,0 +1,40 @@ +********************* +Command-Line Switches +********************* + +The following commandlline switches are supported by mRemoteNG: + +``/cons: PathToConnectionsFile`` +``/c: PathToConnectionsFile`` + + Loads the connections file from the given path. This path can be a: + - full file path + - path relative to the current directory + - path relative to the mRemoteNG application directory + - path relative to the mRemoteNG default connection file directory + +``/reset`` + + Resets window position, panels and toolbars + +``/resetpos`` +``/rp`` + + Reset the windows position + +``/resetpanels`` +``/rpnl`` + + Resets all panel positions. Use this if you have troubles with panel layouts + +``/resettoolbar`` +``/rtbr`` + + Resets the positions of all toolbars + +``/noreconnect`` +``/norc`` + + Temporary disables reconnect to previously opened sessions. + Use this if you have problems opening mRemoteNG after you + enabled the setting and restarted mRemoteNG diff --git a/mRemoteV1/Documentation/conf.py b/mRemoteV1/Documentation/conf.py new file mode 100644 index 00000000..19dbbe76 --- /dev/null +++ b/mRemoteV1/Documentation/conf.py @@ -0,0 +1,224 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'mRemoteNG' +copyright = '2019 The mRemoteNG Team' +author = 'The mRemoteNG Team' + +# The short X.Y version +version = '0.0' +# The full version, including alpha/beta/rc tags +release = '0.0.alpha' + + + +######################### Begin mRemoteNG Stuff ############################### + +import re + +# Load assembly information +try: + file = open("..\\Properties\\AssemblyInfo.cs", "r") + + for line in file: + if re.match(r'(\[assembly: AssemblyTitle.*)', line): + project = line + elif re.match(r'(\[assembly: AssemblyCompany.*)', line): + author = line + elif re.match(r'(\[assembly: AssemblyVersion.*)', line): + version = line + release = line + elif re.match(r'(\[assembly: AssemblyCopyright.*)', line): + copyright = line + + project = re.search(r'\".*\"', project) + project = project.group(0).replace('\"', '') + + author = re.search(r'\".*\"', author) + author = author.group(0).replace('\"', '') + + version = re.search(r'\".*\"', version) + version = re.search(r'\"[\d].[\d].', version.group(0)) + version = version.group(0).replace('\"', '') + + release = re.search(r'\".*\"', release) + release = release.group(0).replace('\"', '') + + copyright = re.search(r'\".*\"', copyright) + copyright = copyright.group(0).replace('\"', '') +except: + print("Assembly file cannot be found, using default values") + +########################### End mRemoteNG Stuff ############################### + + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones.For a full list see the documentation: +# http://www.sphinx-doc.org/en/master/usage/extensions/index.html +#extensions = [ +#] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. + +# Remove page source editing +html_show_sourcelink = False + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'mRemoteNGdoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'mRemoteNG.tex', 'mRemoteNG Documentation', + 'The mRemoteNG Team', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'mremoteng', 'mRemoteNG Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'mRemoteNG', 'mRemoteNG Documentation', + author, 'mRemoteNG', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + +# -- Extension configuration ------------------------------------------------- + +# -- Options for todo extension ---------------------------------------------- + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True diff --git a/mRemoteV1/Documentation/contact_mail.rst b/mRemoteV1/Documentation/contact_mail.rst new file mode 100644 index 00000000..17489691 --- /dev/null +++ b/mRemoteV1/Documentation/contact_mail.rst @@ -0,0 +1,12 @@ +**** +Mail +**** + +If you want to contact the mRemoteNG project maintainers +use the following address: support@mremoteng.org + +If you have found a security vulnerability, that you feel shouldn't be made public, +please report this to the following address: security@mremoteng.org +We will work together to determine public disclosure. +If you do not recieve a response within 48 hours to the e-mail file an issue on +GitHub and tag @sparerd and @kmscode within the issue. diff --git a/mRemoteV1/Documentation/external_tools_cheat_sheet.rst b/mRemoteV1/Documentation/external_tools_cheat_sheet.rst new file mode 100644 index 00000000..b302e40e --- /dev/null +++ b/mRemoteV1/Documentation/external_tools_cheat_sheet.rst @@ -0,0 +1,132 @@ +*********************************** +Common External Tool Configurations +*********************************** + +The list below of various examples is by no means a full list of ways to use +**External Tools** but gives you a idea of how it can be used in different ways. + +Ping +==== +Ping a server via cmdline. + +- Filename: %COMSPEC% +- Arguments: /c ping -t %HostName% +- Can integrate: Unknown + +Traceroute +========== +Run a traceroute via cmdline. + +- Filename: %COMSPEC% +- Arguments: /c set /P = | tracert %HostName% +- Can integrate: Unknown + +`WinSCP `_ +============================================ +WinSCP is a free GUI Secure Copy program. + +- Filename: C:\\Program Files\\WinSCP\\WinSCP.exe (example path) +- Arguments: scp://%Username%:%Password%@%Hostname%/ +- Can integrate: Unknown + +`FileZilla S/FTP `_ +=================================================== +Free and open source FTP client for most platforms. + +- Filename: C:\\Program Files\\FileZilla FTP Client\\filezilla.exe (example path) +- Arguments (FTP): ftp://%Username%:%Password%@%Hostname% +- Arguments (SFTP): sftp://%Username%:%Password%@%Hostname% +- Can integrate: Unknown + +`Firefox `_ +======================================================= +Don't like the built-in browser support? Integrate with the Mozilla Firefox browser directly! + +- Filename: C:\\Program Files\\Mozilla Firefox\\firefox.exe (example path) +- Arguments: %Hostname% +- Can integrate: Unknown + +`Google Chrome `_ +=========================================================================== +Google Chrome is a freeware web browser developed by Google. + +- Filename: C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe (example path) +- Arguments: %Hostname% +- Can integrate: Unknown + +`Internet Explorer `_ +============================================== +Description + +- Filename: C:\\Program Files\\Internet Explorer\\iexplore.exe +- Arguments: %Hostname% +- Can integrate: Unknown + +`MySql Workbench `_ +============================================================= +MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more. You will be prompted for a password when starting the connection. + +- Filename: C:\\Program Files\\MySQL\\MySQL Workbench 6.3 CE\\MySQLWorkbench.exe (example path) +- Arguments: -query %USERNAME%@%HOSTNAME% +- Can integrate: Unknown + +`VNC Viewer `_ +========================================================= + +- Filename: C:\\Program Files\\RealVNC\\VNC Viewer\\vncviewer.exe (example path) +- Arguments: %HostName% +- Can integrate: Unknown + +Windows Computer Manager +======================== + +- Filename: %WINDIR%\\system32\\compmgmt.msc +- Arguments: /Computer=%HostName% +- Can integrate: Unknown + +`Zenmap GUI `_ +======================================== +Zenmap is a GUI front-end for nmap. + +- Filename: C:\\Program Files\\Nmap\\zenmap.exe (example path) +- Arguments: -p "Quick scan plus" -t %Hostname% +- Can integrate: Unknown + +`UltraVNC `_ +====================================== +UltraVNC is a free and open source program for connection to remote machines using the VNC protocol. + +- Filename: C:\\Program Files\\UltraVNC\\vncviewer.exe (example path) +- Arguments: %HostName%:%port% -password %PASSWORD% +- Can integrate: Unknown + +COM Serial Port +=============== +This will allow you to connect to a specific COM serial port using PuTTY. + +- Filename: putty.exe (example path) +- Arguments: -serial com%Port% +- Can integrate: Yes + +Create a new connection entry with the following information: + +- Name: Serial COM***X*** +- Protocol: Ext. App +- External Tool: COM Serial Port +- Port: your desired COM port # here + +`Windows PowerShell (ISE) `_ +========================================================================================================================================================================= +Windows PowerShell is a task-based command-line shell and scripting language designed especially for system administration. + +- Filename: %WINDIR%\\system32\\WindowsPowerShell\\v1.0\\PowerShell_ISE.exe +- Arguments: args here +- Can integrate: Yes + +PowerShell, Enter-PSSession +=========================== +This will allow you to right-click a Windows connection entry and use the hostname and user/password entry to begin a remote PowerShell session. + +- Filename: %WINDIR%\\system32\\WindowsPowerShell\\v1.0\\PowerShell.exe +- Arguments: -NoExit -Command "$password = ConvertTo-SecureString '%PASSWORD%' -AsPlainText -Force; $cred = New-Object System.Management.Automation.PSCredential -ArgumentList @('%Domain%\\%Username%', $password); Enter-PSSession -ComputerName %Hostname% -Credential $cred" +- Can integrate: No diff --git a/mRemoteV1/Documentation/faq.rst b/mRemoteV1/Documentation/faq.rst new file mode 100644 index 00000000..35226e05 --- /dev/null +++ b/mRemoteV1/Documentation/faq.rst @@ -0,0 +1,18 @@ +************************** +Frequently Asked Questions +************************** + +PuTTY sometimes displays icons in the terminal +============================================== + +You sometimes see PuTTY icons on the side of the terminal (example below). + +.. figure:: /images/putty.png + +This is a new security feature in PuTTY 0.71. It is meant to signify that PuTTY itself is outputting those lines and not some remote server. +Full details are available `here `_. + +How can I edit or creat connections in bulk? +============================================ + +Currently, mRemoteNG does not have a feature to support editing or creating connections in bulk. See :ref:`bulk_connections` for more info on this. diff --git a/mRemoteV1/Documentation/folders_and_inheritance.rst b/mRemoteV1/Documentation/folders_and_inheritance.rst new file mode 100644 index 00000000..f9345fdb --- /dev/null +++ b/mRemoteV1/Documentation/folders_and_inheritance.rst @@ -0,0 +1,59 @@ +*********************** +Folders and Inheritance +*********************** + +Folders on mRemoteNG cannot only be used to categorize connections but also to inherit +properties to underlying connections. + +Example +======= +You have ten Remote Desktop enabled servers in one domain and 15 in another domain. +Normally you would spend a lot of time creating all those connections and setting +the individual properties like username, password, etc. + +In mRemoteNG there is an easier way. You just create two folders +(one for domain A and one for domain B) and set all properties there. +Then create the connections itself and let it inherit every property. +The only properties left to set on the connection itself are the connection name and hostname. +Everything else will be inherited from the parent folder. + +**Here is how you do this:** +Add the folder. This can be done like this: + +- Right click on connections and click on **New Folder** +- :menuselection:`File --> New Folder` +- Or with keybinding: :kbd:`Ctrl+Shift+N` + +.. figure:: /images/folders_and_inheritance_01.png + +Then give it a name and fill all the properties you need (like you did with the test connection). + +.. figure:: /images/folders_and_inheritance_02.png + +When you have filled in the settings and values you can either +just drag the test Connection inside the folder or create a new one. + +.. figure:: /images/folders_and_inheritance_03.png + +Right now nothing has changed and nothing will be inherited. +To enable inheritance switch to the inheritance view by clicking the dedicated button. +(Marked with a red arrow below) + +.. figure:: /images/folders_and_inheritance_04.png + +The properties that show up now are almost the same as before, +but you only select yes or no to enable or disable a inheritance. + +.. figure:: /images/folders_and_inheritance_05.png + +When no is selected the property will not be inherited, yes indicates an inherited property. +For this test set Inherit Everything to Yes. +Now if you switch back to the properties view (the button left of the inheritance button) +you should see that not much is left of all those properties. + +.. figure:: /images/folders_and_inheritance_06.png + +Only the Name and Hostname/IP properties are left over, +everything else will be inherited from the parent folder. +Of course you can also only let some of the properties be inherited. +Just play around with this a bit and you'll get the hang of it. diff --git a/mRemoteV1/Documentation/howtos/bulk_connections.rst b/mRemoteV1/Documentation/howtos/bulk_connections.rst new file mode 100644 index 00000000..74dfafb1 --- /dev/null +++ b/mRemoteV1/Documentation/howtos/bulk_connections.rst @@ -0,0 +1,18 @@ +.. _bulk_connections: + +************************* +Creating Bulk Connections +************************* + +Currently, mRemoteNG does not have a feature to support editing or creating connections in bulk. +Since this is a common issue, it would be useful to have a work around while a more user-friendly feature is developed. +The best way to create bulk connections is to generate XML with a PowerShell script. + +Since you likely don't want to spend your own time reading through XML files, we have provided an official script for doing this. +You can find the most recent version `here `_. + +A few notes about using this script: + +- While much of the setup has been done for you, you will still need to know some PowerShell in order to use this effectively. Some examples have been provided, but you will need to modify the bottom portion of the script to suite your needs. +- The script works with mRemoteNG v1.75 and will produce XML formatted for use with confCons v2.6 files. This script may need to be updated for future versions of mRemoteNG. +- As always, feel free to reach out to us in a `GitHub Issue `_ or on `Gitter `_ if you have issues. diff --git a/mRemoteV1/Documentation/howtos/external_tools.rst b/mRemoteV1/Documentation/howtos/external_tools.rst new file mode 100644 index 00000000..0fa573ac --- /dev/null +++ b/mRemoteV1/Documentation/howtos/external_tools.rst @@ -0,0 +1,76 @@ +************** +External Tools +************** + +Start External Application +========================== + +This example will create a entry that will launch and login to server using filezilla and sftp. +Start with opening up external tools from: :menuselection:`Tools --> External Tools` And create a *New* entry. +Change *Display Name* to **FileZilla** and *Filename* to **C:\\Program Files\\FileZilla FTP Client\\filezilla.exe**. See image below: + +.. figure:: /images/example_et_start_application_01.png + +We then need to arguments to use for filezilla, which we can find out either by searching for it on the great wide +internet or by called the `-h` parameter to filezilla.exe in powershell: + +:code:`& 'C:\Program Files\FileZilla FTP Client\filezilla.exe' -h` + +This will open a small dialog showing the various input parameters. +What we are going to use is the following for our entry: + +- Application: FileZilla +- Protocol - sftp:// +- Input Parameters (variables) - %HOSTNAME%, %USERNAME%,%PASSWORD% and %PORT% + +All of the variables are parsed from mRemoteNG connection item to the filezilla command line. +So lets build this entry up in **External Tools** where we add all these items. + +.. figure:: /images/example_et_start_application_02.png + +Try the launch the FileZilla based external tool now against the server you want to login too +and you will notice that the application is launched with the variables. + +Traceroute +========== + +This example will create a traceroute which you can call on for a connection to get the traceroute to the +connection. Start with opening up external tools from: :menuselection:`Tools --> External Tools` +And create a *New* entry. See :doc:`/user_interface/external_tools` +Change *Display Name* to **Traceroute** and *Filename* to **cmd**. + +See image below: + +.. figure:: /images/example_et_traceroute_01.png + + Figure 1.0: Showing traceroute init settings + +Now comes the interesting part where we fill in arguments that tells the console what to launch. +Here are the parts we need: + +- Keep the console open - /K +- Program to run - tracert +- Variable to use - %HOSTNAME% + +So lets fill these options in to the arguments like so: + +.. figure:: /images/example_et_traceroute_02.png + +This is all we really need in order to do a traceroute. Right click on a connection in the connection +list and go to :menuselection:`External Tools --> Traceroute` which will open a cmd prompt and run a +tracert against the host using hostname variable. + +.. figure:: /images/example_et_traceroute_03.png + +A console like below will appear that show the traceroute and will not exit until you close the window. + +.. figure:: /images/example_et_traceroute_04.png + +If you want to use **powershell** instead. Then follow information below: + +- Filename - powershell.exe +- Arguments - -NoExit tracert %HOSTNAME% + +Notice that we replaced the /K with -NoExit and changed **cmd** with **powershell.exe**. See image below: + +.. figure:: /images/example_et_traceroute_05.png diff --git a/mRemoteV1/Documentation/howtos/jumpservers.rst b/mRemoteV1/Documentation/howtos/jumpservers.rst new file mode 100644 index 00000000..920feafe --- /dev/null +++ b/mRemoteV1/Documentation/howtos/jumpservers.rst @@ -0,0 +1,32 @@ +.. HowTo - Jump server / Bastion host with mRemoteNG + +.. Need more information here to explain and work with hosts for jumps + +************************** +Jump server / Bastion host +************************** + +Introduction +============ +This document will not go into details on what a bastion host or a jump server really is. Instead +it will give you a howto for setting up the hosts so you can do the jump with mRemoteNG. If you need +more information regarding the function of bastion host and jump server then see links mentioned below. + +.. note:: + + The information below could probably be a lot better. If you have a better idea or easier + way to work with bastion host and jump server, then please let us know. + +References +========== +`Wikipedia Bastion host `_ + +`Wikipedia Jump server `_ + +Linux Server to target host +=========================== +In this section we will use a Ubuntu 18.04 LTS to jump to another host both RDP and SSH. + +Windows Server to target host +============================= +In this section we will use a Windows 2016 Server to jump to another host both RDP and SSH. diff --git a/mRemoteV1/Resources/Help/Screenshots/Config/main_top_bar.png b/mRemoteV1/Documentation/images/config_top_bar.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/Config/main_top_bar.png rename to mRemoteV1/Documentation/images/config_top_bar.png diff --git a/mRemoteV1/Resources/Help/Screenshots/Reference/config_panel_01.png b/mRemoteV1/Documentation/images/connections_config.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/Reference/config_panel_01.png rename to mRemoteV1/Documentation/images/connections_config.png diff --git a/mRemoteV1/Resources/Help/Screenshots/Config/main_window.png b/mRemoteV1/Documentation/images/connections_main.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/Config/main_window.png rename to mRemoteV1/Documentation/images/connections_main.png diff --git a/mRemoteV1/Resources/Help/Screenshots/Reference/open_connection.png b/mRemoteV1/Documentation/images/connections_open.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/Reference/open_connection.png rename to mRemoteV1/Documentation/images/connections_open.png diff --git a/mRemoteV1/Resources/Help/Screenshots/Reference/new_connection.png b/mRemoteV1/Documentation/images/connections_rightclick_menu.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/Reference/new_connection.png rename to mRemoteV1/Documentation/images/connections_rightclick_menu.png diff --git a/mRemoteV1/Documentation/images/connections_status.png b/mRemoteV1/Documentation/images/connections_status.png new file mode 100644 index 0000000000000000000000000000000000000000..ceaf83c441780e674f193a05631fdcae73e84946 GIT binary patch literal 1058 zcmV+-1l{|IP)KLZ*U+Lo_&c z4I0{J@AU8vFYg1f&AeGC#ekDmsET{L!ggFS^~^MjB$y?A%#mEJY0FF>TEDG2{R&dfBh9j@B{s7U7MmD&0_!n03c&X zQcVB=hYA1yj0yk%{^|e#e+K{nfdT*k>Z||&IpF{R9xE@MAA$e?0!v9mK~#9!bd%do zlTi?bzrFuc=>b|=z!nr@G#Eev7bcPzqEQncz$>4?m-01?H(n9-h6KcTNFg2oX(=tG zh0^vvjTh_^V!|Xl+1Y!|%FLQI>h;^_ToX26nR^6;*MY8v0+PT8FpMGrfY1ZlKnv(x zM_>VY;3iN+Q2>=vpip!K>L3RQdqBffbxELrao`RxTP?R9?QPZ{_q*Y!(xM&DX->_L zew17QWnd$=p6M@KQ|6vwyNE`bI&H< z2oeK5plJgRFb2%j%I($4&hg6h(}H#qHeS-fb}hV&L;6NS@4Txn?Qadem|V=Y5Ng1g z1`?+C;-Af<)xu&%E3L3>jpI3ZNf&qMf~fQ$r*^mMD?kw_0GlSh9}@Tx zQ4n#sal+I>{s+)BIsE}a1E@^Qj;v2iXLtA48qz!Qkr*Tr`X>PgpN=J$&-}f$l>Y!! zOis@>99!)_`zeq_%mqfUq>5 zYn0}5>qcpSGvmD9K-pm1SFJ3DF*3_iHFHjy|8t;jO5Zo-%m2$18&JmpGiI~^z7ef$ c$S&jG0MADKnlJeg_y7O^07*qoM6N<$g1I)&B>(^b literal 0 HcmV?d00001 diff --git a/mRemoteV1/Resources/Help/Screenshots/Reference/new_connection_test_item.png b/mRemoteV1/Documentation/images/connections_test_item.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/Reference/new_connection_test_item.png rename to mRemoteV1/Documentation/images/connections_test_item.png diff --git a/mRemoteV1/Resources/Help/Screenshots/Connections/menu_top_bar.png b/mRemoteV1/Documentation/images/connections_top_bar.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/Connections/menu_top_bar.png rename to mRemoteV1/Documentation/images/connections_top_bar.png diff --git a/mRemoteV1/Resources/Help/Screenshots/CommonProblemsRDP/credssp-error.png b/mRemoteV1/Documentation/images/credssp-error.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/CommonProblemsRDP/credssp-error.png rename to mRemoteV1/Documentation/images/credssp-error.png diff --git a/mRemoteV1/Documentation/images/example_et_start_application_01.png b/mRemoteV1/Documentation/images/example_et_start_application_01.png new file mode 100644 index 0000000000000000000000000000000000000000..8ea1f1d68630b95ff5e1cebce48cec8ec30f8425 GIT binary patch literal 16199 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 IXC0#dKhb~&)&Kwi literal 0 HcmV?d00001 diff --git a/mRemoteV1/Documentation/images/example_et_start_application_02.png b/mRemoteV1/Documentation/images/example_et_start_application_02.png new file mode 100644 index 0000000000000000000000000000000000000000..26aecc7ac043c77607489259e035663f55969110 GIT binary patch literal 18012 zcmeHuc{tQ<`?pe5l%g!jQjxM|mu*st5{m4`J}HbP>tIMKlr75)##Tc1ea1QxnHWp5 z%rLeRVvKzZGlqA#`#tyb+`r!+?|U5YKksq8a~w5JU*GFGuk$+B&v{)@_YHK8A3J-D ziHYg>9bIiBCMISUCZ+@7M;QMzy%k}FF}@CX8|mC&D(yKp#~=Akwc&)S_AAZ98GxyACH?6C(E-xfV zu2Mo8NXM_oPPNzGNN>hhH5ZPUOpMp~n`8v_l8k55Cp=1oP%gMqV1wUa!5Y-WH!X`= zfP)STmkvei$Q~+eHp}VDQOSf8o zAq=kFIb^r+;fA)hc3Vf4qHHZ)o|00QiS7vA&BLTPhb$agi}6@;B_k$=op)ARBD$i= z8Z<{P8N^j29y`VOi1iM&P4)z#AMZ@Z8m5KPT5Qwec3Y)p!a@T-CIWVFI$bMe^!wG_ ze$B4#@|q}8^dMp4ZgYqO47D|Fg|_jLnL#{7 zXN}EDC2rZGrYo)I=RiI9J1-*{pG0RGS9rrtyZZDML)i!czZA&4ahA&oz_#aFb-qUT zIj^=;GhZ*pDd-46tFLX~9lO0S0?x63odEBjQDSM%>Qj6(9}*4ZFp@wnaMhUo!6`bA zHp;{GA#^yDwvP3v?X?adQo4I+LUPX56oEB8_;g3uHZ(J%xdn!OTEJ5((QY8l5SMnk zx)oQrA#^5Fl8=|2Wu_tyT6}Ht8FQD%&WuMI2C%a-bJQ^4Iplj{rqc=4-@#coCgqXwaw#rzJ zLY%jsrdwAyKz2gfhS0G|^^jATr}1eLjv781ITww2PCZ zP&pepldbaz9TY;vgR+P8dBl=(S!GAdpzV(H+DwDs*PXkS%PA6zaYO$9E(I%h+P#hX zc)dd#i({@Z80>w=vqtw{Hj058RaxNJpl;S2Fj69{;x;Qq`XhyTN1T^q27K@>>ox>o zvYgcm*J>6y3qn|q+0>SN^Ms&d7cuS>`e@c@S7#ZFmFAYgNTujv*vj?{)N zEPM>!r0FvV7gP|kq}y*$?x|%_!C~@$_G5FjZtddCXEvE=ajXL|l3}G0fWRWijC@wA z=)nlVz{d<$gwE^93D-Ma4|ySZ=f!5@tVZv-t@)z&U?kz>Gyl8nBa7Rpt|0K&BK1<6 zo6T|rnw*creMz+qX~^NbOO)S9LT9lYae(FN&>kDH!1;#e2WV4~j^{M3r(J*SVoDKq zPC@jrgR6rlsmH3TAU|_nlzGwi;?s_2+i$eR(mii%$Z%@V=L~yyOy17|cDH7pur0+P zhuy`Q;7^a{jZK&XQ{%?$;|BG*^j23UnP<$e^d1Z_ld%?47|J^~)8v#5wt%W7oQtM1 z>>=^PY8gidM~o<6d}!vw&grtQ(EB0rZt#fRq=J75Ww1lb%19V_iNy^1J7;+5@UMbr zdMxVz{rMe;5u{K!GkCRQ#-cY625Dilu{%MVl3=I_g0(x%V}cA^!eE94)-MFegkC;J zU#S57Hj5hI2oVa#k0OV}Sl;8{rPzmR;}ZHiT(2H%R>8+z1t}Y4X%|bkUqQMM^iZho zOs+LdPot@ePp#l2!%EhpCaxMO?v zCE}msoa|3UDKz1AH;iQeDT_wtj&*~ zD_m`{5fes6ZA{au!tXlkG^vAKaZZQja&&Ikzwf3^1S2lpvqrWHtfX4AErt6wkL z3`@o`@2v(&NZ}nN*U6-XZms8cHPa`@X1I3CvFgi)9KNfVU25cT#Tu7ZP(#;eJ3AJ( zh6~e(uGK71ULTVu+{h5zqRem1v{`FQTEhkpB^PG2=>`d)ctUN|2wDH=H7hGNaSvx*! zUCx^Q>3f7xiXgzt+k11_MHou44XlP5K&!; zS=&zD%Pp*kn;aSnY^sJDfcj`ZC@Td{I;m5=+SIXMn?EoqWiYfH=8qUC6ep|Mao*9@Wc2mSJm(f z-(b{1<5#-$AvH2TO2%YZu&OxgmG(vs)D{FGzc$)BbYaA_fw8hF%z3j|3oyWiOb(W9 zYBVpMZO%-NE3<;dc~``WAiiw+1m&{rDc?lR|n$5bk9*01kAidOM;h{wlC(=1)p zOnRjZ`SsZAV_PN4u5~tUr?qyy)!|S(@$NXy+A7Zmli+A`Noxx~L}@U`XoRf}Y3=Ev zJ!8w=M|^cQGPkr?1)TQ6$XZ`q$iTU$U(eStjWlJ2toP|49OE>G(nF|ojJ?(5uI4%P zlCuq@l`U@O-=1M1a7E^MbMj#;RItFEgSQ19=Z$@Xc07dMA?d)O#|Z{Q5-?@neXjIM zRl6F0OwFcMO$23MTYTa8iZ|j$P%w4}=KGl%h_<&-VySr6T%fUMi09hd+a_NjJmkeP ze2lmiG#M#R$3Y!RxXID%TSv3Ann8)zLW#qVuxeSZJ#`CwGwX1TR%>z#;`zqs?Cvr9 zB~GULY{HNf*Fh`8`JiSqU4pNzbSeN}?6z~JiuNH(QCX7+NWq5APM)AS3__PUzxo~b zOC*oPh_V!T1q_nKQeJWhf^57>HALc7iG@`y|o_;m5viOy^z?tfPgSCT?DKfaPV?J9r*B<=SG)QZVjBM8C zNb-yX$EZCrgc{d9Y{j7zy7|gGeB*+a75DP-=W3l5X18CPy?SmI$<1BgY}ya9l^*tq ztXq1Y({1QZXIuNNtO*hvhP>VSzQu~*x1oK{ZZf}qcIU(e^1L1a-A-7n&l)jzh(8;# z2JlI;s9VyQ$)TXt^p5!L&?_y*p%ud`{vPt7KJhDC9_wT-3SB5(V`IjFKrDa+jpqIl~83wtpx_fbO)Y zEd?ZRtr=!`j0Y3Ay@xTj4${r!Gc!$;#=dla(#lK}oL-GHRXO1x*f<*&JcQf2Rh4Z^ z`Ci65+*W!vZh1Sh+l=sf2bQDs_o}?Rbt?U_q5<57>ML!l6E$$$gI^QK-3+}G@+c^Y zZecWuubI8;J+Re$3hZs|H_QWp{_YF%klwg3yNlkzRjryMpvo}b5A8p0nF%;)uI7Tg z={!517dE#EU93ABB}&&e9oNh#*6v7afJf$LeW-^tl!9nP?!}^gkBdb6M_ikVmhVb+ z&U})&yFH7j>QTiuP9B!I$_TN3GmIGP7^|@xnueNKFP*0r5^rm81|-K%0A zbQAAU!fxUg-8EKmsg5SM_MIccC3CsnR>8S(-N$>Hrun;Ozv$?9WJE%O00n=2HGBq4 zD3$fF49Tk7CM_w#(d4^p^~&z@yTnTWlw7^t(R8oAr4;!Iuk5WiYBn&9EAh>8yJ`N- zaw9Xf3zafUL0^{AnuE3yyO_%~KB;f!1Dw&c%1~!bD76=%HW3(7-HqOJU(u~UiQ`Tu zAg#R!0N$$-@|_qmoL;plx7KL}bkL-rY*$D2tG2lcS=rz7YJNMZ5bCYCUK^o=W;vlE z<)b0QSN>_e=w+t0xx~<(QQwX9t&zd9xFN(L$0#i`j`{_j?om;ICQ3UjhdxMm1=)mdxO;4UU{5wn+3UEin(f9706vDXpQ>9Zcz7m6gV{JFkklg6?)}d}o)@#QO@8Rp<2TYRM6(B0GBV(scWqmL)hlf)f~|4MG5E!lvbPrjw|91m&&wXc zZcl$tT`0Jb5@lVH+o)#)QVkqa|FOLEVHO0UKW2GY?KO7B&u+95=~tv`h5SWNe%kTb zseWhuyeXR7x7ldgJ_En;M%CqB5q-XY=R!~Asznkpn|=?1E19n{2lf{Bj$JXcejAET z#4(2sk7)MaQmb**H9?8L0pd=1i6`f$&j%)tWgu}M3h$M={!lEaMQfLu4EmPV&LrWa zc?d73D~Jj1@_rfYCG*FTZUv~aJY(FCb;XAx*!;DS-#a9+2-Vx&vOmuFo6%-qWwNqg zl}`gc{@~F;_dSgltu<6fFXK9hUwIO&lrs;QfStmPiN@w;9zpRaxW=N)P-KeZV-?#Kph>cHLkqBKYR z;89{|L)$?X?&OvxLmd$z~{QKa{>UEgf zN7fts)$l>mH}^`RA3l=twnbXa@27!CAtYB9r&uYu@7s;DNo1<`?e2`QTE6sf@kEp8|dY4a)I;~Hvmg)BcUoR>BE;%jRpnp&LM3W`dW#8~YZ{s~ficg*?Zi zjATERucJ8|sS@>+G~Ya>dRv5rKRf!OW0VSg^_ouGog`PY-R{`F9}yfLA4=>+WbsU( zb9{PjbMW447YyDrhV$@?cFP8^i?C>zw7;#;P7m2izxY$6v!-bG5$0oWRLj_x+XA%3 zqE6egdF!B@=FAQ227{QUt;&aLVDQERKFn|PMVLUTr{nKN+Ih9xE}9Y&^QxCXlAlA$ zrh}t~LDAGe_q))Tb$Lmy58dVJbs25f&TRCPL!|=2x7v5fe(5hB2sp|Pwp$Vimm5Or z+S?y%(9V$-uyQ7}<48IE;p9&MCZLwe*>UV?5l zc>?>OrU+^-ptpX^Q!*V$j39`^hnp*)x-p<)b+uP63vDCj9f4GN-s-6y8D}>)Bka0) zne+BJYMOl4<|~p8=K85cZ#Oqrn#&ce*yQ%YWQk*vCmwu<{vZpXPi_T` z2hZ0kr*pJ!l-wB`DxU(p4*9KgyUsSJoCtTtFZq%pfF4;VPQ2Nwyf^daSuSx!9P2cu zJz)gh=nVHZg57Ce542aa5CVr9Yk>no^p-_xl^p2eT;^8e3fw)VWMkUdG1ez~I1dT< z#%plH)tIb=9Nvc`&E+6|=4o%H^ zv1U9EEP^G2^E%&bU23pt@C<&0dCbYh3=|xCyTwjwL*RA z_?=gT6BMbNHFM}AFBT5E5m7M@iW{-Wbbep=SJ20n+=w{n0pBMwL#D4rD8;d7T~Qn$ zpq}X?Lf=#wyg^2>NkfA)C^Pa6qnvZuu;yKUgAK=L@ca}43_t=3i#za&^6Ji5B`LYv zfi`hfg1d6pzu_W2Uw!7eR%6#nmzuv;1wP|wE|KWF;1f^^@wMy(jhAFeRY4^Zxy|zC zv0h#6cLu%4E(cPpMQKGNM+n%?`skNu2{o}9U3wEaG-2>*ERa6*v<97??@xdZf~fLB z^lesfK9%1p4_hA_p~*v@m1PY7+HXjeQMVB_iF1+mwBhYT=~?gkydGbU8$P{c59o@0 zFu}zf)4=;dlWF)?$wy-~3sUut@asM4nsyos?RZH{{f+@Sh3bWKG)E)GZJTy2K0Tu}Zgyb&9zla;?$$kJ|iHQGTM!#rw0n@y7pPhhuYFV7gOvs<(RR6{w}dWt#; zn?tTQYA(7%rmleoiNv`)FX`T!4c6Za|Gm|qV(_h+npPEPTUt6q_(k0kyIMMoLRuQN$iS)V;V8 z6qJTLtX&^ln$Ij(keFPcN>Z`Cz}JPy<9CH4UvV+`t#_`US9EmWWu&P4ue!NG4~t7{X(RAgB@M7P zVK-$e2wxuZ2)mg-l>8({kTL*w@AtvU;%dRQGBbI-X^V!P47Ky?38dS!1{aVL7rnvg zZ-<@jnJ!=*!1}^8BL%y`@4@psS%e~ZJD}gj{JO#5b zy@^&$C1ieH1}L=#tEtvn;R~wI%*={hGp3$gFm{B5>#qoIv@Y=KTREI8%F5WDZ=H4n zi>a&_lPFqz7*ENFxv~bfi~R-U&#QS`J=nADwb*K;9t7^E?cXwBd!#k?0UQiouS*q= zlX5L2E{xc?Sn|VACH)FJ1-_0Xr_Rm8Q{yA;ff(x{RFW-q$Z3ql7}vF&ew-laH-1Gc zQkr8{o)pZNT`T(?^cHDM=nr!!jFskK)@!=gu6@u7c&YzM!j-svaGfA4za6rR?bvK9n^8$09Y!A9@Xg3`Oyn!Jf+@!6Jjm;9eX3^E zTQcS5DpP4#UyRjsC2UyqQs~=VrB`kyq5c?LpMogMYFP1DM*`RQP!#l;F)68kgV`)| zTaMKEhD`eq?Wh79j!>@E?Ns|R9&#p6`szrzwRG2XfF8odYP{k|dylIQCHEa;`Gj0+ zL!DlpTuB`1xZ3R!LM2v-Iyyi^?#bs~rtyYHbylUiY>z%6j-2~s+nA^XRy#*|$Up7V znnK(dK@R7-C+g$wJ&{3j6hKhmrP_IVHM!~8`E;2iQa$wbVg9Ej-*D-8$gd>it9tGZ zzlGpBx?P4F0F1Cm9Y@^|*q-;Ta&&~(Y0iUwC{@Qeo*E7z;0KX|l^m8DF#YLabYV#3 zcla_jNdT2CX=RqtY7+_qJfwTtI%%r!654Y{&G;goFJwTKOE8@yLpBTM^Oe%H;$%>u zn`tp&gVN#` zxMN|Ar|Lys?^Hip@<<-f3m)3rvxrNMS>9tZK-1W8#dF3Miy@;jNxp+*EoxzSx~EN& zU#segCg@RJg@To16s;UuDWM0+cP%!x5^&1`k9!KK(DwjZmG%OfBnQieD((~JA5Oqt z()w#TkTyP&#?vnYx2;p%#EQk{HID^Gx0N^lsOWn^>jSB4Kgm~OIfau$S5&q`k>s>? zCAT7^#x=iN7E={9{p0n>;ETPzo>_;Vh?y*oxK&;mZw*Ni$k7yI!2|g) zurG<9ymv9S{Q)Pa3Ep7*cEe@JuPzusds4fa2O$WJ#M z{-QP+GF>o0@7YqMN>T+c(__@}adD~z^O+ngLXv# zX2xXsSabGgk#wZqy@?cFpC{M(8v+=3*H0h5HwR8u>>|HxsP8q>+TQKI?9tG+UJ@0C z&prPiQ-zYwVj2D4HtFN-(t>-O0rz-b$Ok$EIM23azo~e`y4M|o@AGTBUs|5)+?zI0 zX20M(0g`07-qr!%uOcJ%xc~V}?fajaQq1`OtQM`g$1WJMiP^*VB2{w!f!>u~lf{Fi zQxNjroouEKWbFbq4`gXOEM^3coQGyud50R&INcpXNgj{!fK*!riJHLuanOBjlVPF3 zUlC=9WATnBjQyLGz^{tNO@}>vDxBv(0opv7$Kj z7g^1Aj~;%5wDA=ilfvR;I%V*=oip8sdGKTd!Xwi$CFI?BfzoD-n}*b&yZF@;@B+<& zp*vD~HA1ddoD4i@L=08@4qVf`W6WD)*lU0oH1Kbexp8MNR%Ls{ z^RC-+hF?kA4=z-e|M6k6 z$#2qUjF=*&%TASvYB@bG#sWS-E!S!^U{TnQN%61RvUd}B@4X{MX&IlCS=%yxwO#P6 zcQIFMW#BwQuR156l14%l<#P|#Gsd~9$KY(jSA?aZ>&9|gr=7i7d2nBG0MW-}Xv_&_ z_BRqv2&K1u0^EiaXC3=VNl@&m8!Ywb81Fq| z;SAqV``jihxdtzj_7FdKlXCitL$wxG^l5Y{uPf7lN?p9`fY| z7rRw;gjo#@xtloKpI<6t81pakyrGc8^prm|N=w}nE+mYzm74z+tAC7T+W3_ZZExLU zd+RQ9`T!o2;5N^t(OBH-l%sUe|2bstohQHjAVrb z6)6>z_Yc<(`_yolAS!z+lrXa+T;bakrkaTZUnR6}(kIRJ^&BQSkEKcz8Pj}{)N=S1 zN@1k0aNJTYk;O(95$4qf=BBdYN=dvSBjM#CNl9%H4l*%4OATY}ajcT;@?s$l?(Dynh;9AUkg{RJ z_5E*z7hr-PdN*dDPjgP*PoLJA|B~(XnKx#h@3FU_{u5 z%dVb%%S+6n%08_GHrcqSh92acSlkrd%g3If_m+Z7!U~xvnh;#q+E2ND^NX<1{RN_00%Hy>-kb-3 zu8Zv_bnD0W7<(6`wc_dH4VGVKRpx!*@7L zM1PUO3;n}@|B(Oc8;P*=KVHCS?m2`hC2o{ms0hPcr^8tpYyBpc#u<)quRn_Upm~B} z)R+HaDF)d#83EWnwdj0@{n7QmXHIOhV-fk6i~x*>pDZ29gF61pkj;e`l=KiNeqciK zaTXB0#ja|_bWSRyxd@uPDoV38bH>x32<6ncyDn{X+wlLiyEA0KNa*w81~_PSO{Op* z$7c5_ueeNOdjN13cjKEWcsrL3VyojF{qi9Lbmw4VVpu+XkBN0oX8updEe|RjHK;PL z7CG`lwYra^{*b3D+o~nza%VXqfm-1;L@LhhX4GaDSF=nH7KGKTb5#vR zR_hw9+?K8pdTc_{1r(_b4syj5W=i<`M`6)HzsPjWBlYUV7uU#2V;S3WOzr{~G0TLf zU(qjVHXb^L`R)2#8(Lh_Z@MFnUT?iNT_WTvF-m#gvoSw+)0YCk%Xndm3eY z9&3HIaJ~bLpDV@=`^?AIgc{5=T%N8F?(G@YobmPfR7AV~Kq%*dTT!-Ou@Pw#Y^u9; z)$zg$@YdR(mzhF_@i;ZaYR*gW;p{t#$b|)j-?-Nkd81nmqO>B9cNQ|t6E2=|kJVLwtyQuLPckFC z8FaM(|~MLu8H5AUPqm#n+0WEFldJ=%or0 zW=Q7ox!r+!xs0>^Pre_XzG2MoVwKUZj@GAqxInh(_dURr7vm+yVoMuQ?na?&Q0cLQ z2t~?Ghiq)Cs$5p+(G%Q$TVyy7R;GQsBV3Z;2%9aE=`K{aWjGCE3v}g4BmzI)>2Tkf zD#;aoHTy{$OTM1;q+SUROu3t*qKn0Hr|3>a;Bg|{=gQJ|1B0EUo2(cH%!2}h2nDyo z1xD_~A}%$JQ7iKpP#!5aPthJiP}QHxvQ!>22#d~AUKAKHUrOP*b4#7?08@%PHHkNP zDG0C(>o7jFMeIbnkHNZaefqx4j0ZI*BzLTvm;p&8voK&N{rK?HRP>>fZMBPtiME31ZO~GgGNRZbh?uM&BFdus~ zL-HANR|1yskB#3GWx4fjZtTYx7^!#Ki0$=iJ>&u9na*M@%pcH{eWjVWC?$bAKGFxh zGo+{QTAxIm%Z^iYs+$=1bR4j^iYdGGW#mDBhgbh^-m)ra_E%|Hc&b zPF$$VSROcHD%0hrzH(+!X%iCcSHQ+}6&kH3>uD3Rg{VBFCDVVP`CbEr=NGnGghO=` zP8K;I4|&qx^j>6I+TQc7hM6)fJsK;kDf=}X!gs`3<85RY;rjTXkO)CvAA?k;&$nHV zw<|o`dO^7FK5>nC7m$@eFj;4vy!y3G$OtteN;+dbmr2er?mveFmmRJ zs-*xTU(N>jj)UmhNHC(n@ADkK_Q`Y2fEU=bd8&5r6%TrL$uE_B)KYspTUz22U=-Qv z)ytLfkpG8|TUYKV2`*ZpkCL%?I^9$98_&daPY4>|Al$Et=YT7A6Q9{|9=IcDt!A{C zaNOe3D?`y6WTp1$6s~Y2wWV=%ENkMCsTvBAmMPWRX2-iN6c8Ir1r^UAC5lBw$}$pCKn6%2yYNSCzgNuk<NedKsh_w|i+euW7!;#hL`dFX z4D(*(bg86b)7w~C*>dh?*7&f(5S^1qu2S0pTl0I>h%{t7QfI#&E}!7@cbH7dwwh>y z%VqFJQZX1R<;bG%1vBoRHwn7Bsd|FxrTPyN4qZXKXB>9;6Z2xcF0t@3g4};a6WP+X zPh+`pd_@4g1m3P^`}y5B<$%Au^Zy)x`e3}10RxyYMx^||77YKSns@hC1`Yp{U;g3d ze|`v#YFW$;OGO~$5vZl)YgGz(x5^I1%AgKg+ZlLqWlR`u!=?&al^F+CyG&?Gs+mHG z`mRDfrAhAMJgcDa!cUyTJL9BB-qnUb>aPW%Jlsj}fwyxr6(4__PE5eelIHmPmTm^M+TEfmz1WOiTy=q~i#N>%vDK5^5C=dwt?W)mFDjY8TIeH;05n7B~q= zalON}9h$7uoV745d-Of3X^EMK7;);mk;2F0%=fGaEQUslBavh*%=avt4vyM_96;Zu zoL7VuJbhy5@vX-hV`7p-s)eL(VDfnpl`%e{uGmIKXRJB6$@2OY<2+u z=mlwZjSc`vA;&kKrn<Y|qHEtNZJHn2D+{bkvNW{HX_md&rfgSN^7e5m4kqzHaiigLCp&)PG*8smb%+=z{FmQ#HzqyKc)p7tepskb-2O+^HI zzz%j^_IESUklhrOy47;2s`0GFkd=Sx%P69^e^J}@gJD;%9t{u2H`Wuc90+sG;XYS; z{mX-Hv!hYf0z=*}2;AFpxLBdYUr?Vg+xecVVymWkBSy)XcobQ7@WQUiSu@5-@>- z$CBM|<`L=h3fwMkI61#*^d-tW7c=cRHp8z$zXY1K!(uTE- z7$gtVAG3?RY_#Fq6rm6doWWb9fEF0f5fgH!Dkz@2nxABLD^T*MLL5-ztKL%hMcXpL z>Om|BF}xCe_yg5knWZCYCy@R+1|ejpb{2E7Xn_?Ogpx@n)wf;mS4Z1tJ+#P&`u(CU z#zFAtOjLiOXUJV4m)WZ=@u@Y>a97T>2he!~^3YNy*)`AYECQ$XdSIZ5B$6gtl!ShcxUcxhTZmdZ8EtbP-Zm$!;)}CR7r}fQv=BM|7Kn6-Rj96borArN!yLLb+=Z z0#1VlAs>;(3vb4?U4!~od_fh{+!oFKDG@~48WaGia_v0%$B==x4#H)p&a_k=T40lK zw-5{_<{zoFX8jS~6QxyQv(af(5#v^WWbzGi4XpS6XPFfXh4VL@*oL&IF&oNCX!{fb zBxH-6IoCE*B;@(Xc3oQcoBx&8XXnpe|LSM5%z0EvuIsq6XE*KAOzRB_ev;w5H zj1W*Rlk_MGe13WzMaI7XTySTo;{3*7>`g%xg3@#bwC=<}te#bneb%AoVrZ7)R;7zu z>&DbtlR989CFn!v0j6X7YRJhf!?%2J&U|w0^tQjnkOFDq4wm+Ts8Awv_r|+~$fKyc z>>?+>V)BlO&$omf;x!WEc)U8@7wZ1-Fe~TjIbPv(p3m72=Lbe44_>;`3op2?cksBc z8y&hFSGU+Oj*<+(K2N7sx`n>3e9Qz~^e8Wtieqgo2&Z6zYD;k3fPK1DSQ!y>Wy*aN1hqBG3;gZ zD}ZVYi(+EkQ&1g;`y5{pOJDtue>cX~-*atU-SAx%<7-I_KU%%R2>llh+&ylEVdHLv zJoEY?mbT@4XJU|*>6zDlVVcRSZBtW_Df}YLKST!|Tyr_71S8c8hZqXJKM?Gq`nW-1 z;ie0;B=F3WLL1SuucY@&x=)^aFn}T>5A-;83~QNkzg>g(d9lq3~P3Y;F(@URe1 z;TXYz{exZ3)8SOe4Mu4&@!HAm5!YU;;#uF#y_%RZHKmx=R5?YLxUF*cZ@_1Q4&$v2 zJ)zKCRJQbM>f^r^u9#IuU2FPx0r~$-UHd=h91QvIm5cxO(Az1hrStPA$>QIYz(@Aw z9g<~*mC3i{Qy7^XRuvdsZ46_$p)$9mc~Y#4RRMI^{EyV4gsV#ph(#@R$7*k zwR45dKe@hf$ld}@lEo@L`1su6XaehS3vWQnQ$ckZNjLFK>ECv$wql`jr(lG+=`V7$ zHLm#Jrp91|rA&39vblLN><bK&XOWlY=;Nk6CJV3X_CW?eb>OEWE!NKuB_hB+_B3=qUr?%9H zN%tRL0@c^QFP0$cZZR%F-SQZ&JqL7{JiH?(RW@GRjFe1JNouK}ynY~fnHE-6&95iv zQ?B{(xziKFCTb2!)KF@hsj+fMtPC1zWwN{O`Y=Q&w=whbCSg(aghlfkWT%+SetvfK z-T!g%aOx6^xLvYH_7QVz_ApC@$yEWCulAEbTcxt46o2b{=-yGkion4{rivZyn>c;& z#dHo>a+FDmaE;y{ac~&2J6W>QepKc`1itBA5bg+f)#(IQp2xN=7ifPRZ?8S~#9{I| z?hHaWpsWcm@~*x}`oyV|&TGsB_f6Uhq;I_><4B`p3F%8`+Dt3x){XL?0LUEU?hwP` z)?*lLlOMtTm7X@4yrX^u66l8T8uiX|t;C7mx}9fA6UV?%44!Ue>UBAb$gEphw%zKwnt2}cvp z?z@7N`|TOLDx$xK{Fid?G47V_tW@l1JP*qFn*4I@y$Gk#Oag1Zt8tQuR%f2H>~F^1 z7Lbv(>%`xd^Ql(;EwAo%l3eAct2PuBU{u+TPTVt+>l3_Y4wDX_Q!1!czq&MJQ*Qlv zX}K*s^xp~#MmQ0RYGMB`t(KDgwDK{InE^733#spQY|(sgtjYoZg1`T|%k_u+*XhB3 zpl&4$_-yedj}4>GrR2F9EkL;B2;OT=x!rNNI(_#W<#$e;Ujma?;ICT7+3%m_4B)zs zc>JUpH_IdYTX2#b8v`|lm?W1-rnPJWFpd-rdO(&Ap1Sy-K!omGZ}(dH`w z6K=-wii=Ecfd@bN3Q@Yq(U{wD(>v;>{oXbV9+mc3ELFR1{olOF*YHcJrHcw?9naZ{ ze|fmo6&XtvWg0!4-T@LDyI;Q4kIFye(sZHXExG}GS1u7gOH!bKSI>ybF!F2YjLCQfeq zs0o{MEGY4)Vs8XxyuzV>V$>5(UfSp|gB@>{Vr=OhKYCOcz0%LWe_PE3{K^(deZ#9W zefeOU+;Sqr1$^)P^i?o)DWzzwh2xV$|GNtB3yKp%2EK4JAAc0c)(JiDjZ+fC#@t~a zz$YEGXY{==m0(TN@oED%i-i=9{#P~RZQr$(HO2)iuLPi(L;M7^zoqfe(fJd$Id5e^ z=jtvVJ^4o1^NZk;98*FAYD2}$-{6hhQf!E1xr^!|!+~tsk38TGvpw_G7wla*y4?0j z^pJ$UVYCk&xn&ONS9N_N!|*=7s-cc+3>dfnhbm`yTgHu}7g}|e=LLSuOWSOYyDwl- z0TId@xz<5TDz=M@N8m^GPJODMu9|s#ux;DCw*eO+NAiki6zTI7u({RRIY)j$XD~E1 zYGc8^(HQ1V+`3>dq+OsSZ@1RZ3BQx*60)5EMclMT9DO7 zNmxy0vxAEjgO^0o2p6-=fp0UmX{ra7o824_SU}O&gxy@^e<$u#W@+hg33D4pJil%b z`xb!Qs_5X9=f7%-sS0sxeNk#@o5fXHd|qpPUc73pzXYDeMNRMA5F-ZR(E2diMcL)> z*?MxtJpny%zY=}RlJ?foM#4iyrfCO4eud{|n9-pItthR2o~7H;*u(@2gF`oTl6fbc z>Hx7pk`@aMiFjwm&eNw=ZA6bTuiucdH+Oy3JOrv6h6DUp+0s5X-%YZSG1I6?Suu;+ zzpl|xTiSMgz<;Vu{L0C-Y~T*-jfw`}ouGz_XA@1Wgrpa0U_< z8HpERjH;H_cKz^mrThHs3};p{{!zepvSw)Gl01`}`XbFQMZQXS>t2mFi; zI!1K>6ICJc=9*3MFF=fznN%koY)Ui*RVXbSbz^<_$zU_X?+&weH9eo7 z>jzYN4-V=uPK!tEx%`h@;S194d;^=<`LM+L2Ey_Ot>^9PAHTO`PxuuZ48h++0n0vj z`3poY)r@7A6i@5~Cfd!{E)l#Q36^KpwJu0>{={eq*#aidAmUuX3$MLz2}xYZLQRq8 zZ^Z%SWIMta8x6;LEAU&ViOy?sW4Cc&Jq_rI+Z$&X-d=3aY3AHvFKoyH2|twX*Q(0& zu*@S9$`1CGm*@%{6|Bnc=2#Hb^(Gf)YYt^0N$oRYH?P4c*5b6}X6Yn>smU|%XQmdr zFa<$!Ddu?x>5S`?$OIL?p7yrv)(sb;?}GCzNS|Ds(Zjg2*%q=FCSotidbUKPt@x$c zW)ZL_4N3X)r?njToJK0!)f($#qzN(IhOc;R0!r(ukKFsBw^Y!4V<336hFYr}W7sdp z^Nmm`cfLFX{3vlvtqM2K6mvKv?}zH*|$G-fM3o`kiJpl<2FP5zcU7^n^CMP63F6 z-SKc?9v>=T;5g3p$m>d{i=id?#}0*4`&3P3mN^*^hs|=U{n5=2jqFq-@cinN&6O1m z_#+x8`o^zlL4QS-EtOicuOqQVXLmhE8T%-fFdnRZ4QDO1=NSmp_X6*;IzaU?!ImMq z=gN50Lf5H#b2Hjmoxo6sXNiwV46U%2K5ldV>C;h0tNj6^P51Oaoz&jB807yg5AoNf zvOmp!-9LBC7`58onKkWyO!D8ZmFcp7ILO#5#-WSmm_Nq~_M8i2L6MORtYrUN1sg)x b4xKyr%;y=kw1|y?)m=$?}Aka literal 0 HcmV?d00001 diff --git a/mRemoteV1/Documentation/images/example_et_traceroute_01.png b/mRemoteV1/Documentation/images/example_et_traceroute_01.png new file mode 100644 index 0000000000000000000000000000000000000000..593b4fa026fb2e2b9a2289a64f8c0a19c47c5bcd GIT binary patch literal 14832 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 QuRhPHt7@qf-!l*VKm5@-UjP6A literal 0 HcmV?d00001 diff --git a/mRemoteV1/Resources/Help/Screenshots/External Tools/08.png b/mRemoteV1/Documentation/images/example_et_traceroute_04.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/External Tools/08.png rename to mRemoteV1/Documentation/images/example_et_traceroute_04.png diff --git a/mRemoteV1/Documentation/images/example_et_traceroute_05.png b/mRemoteV1/Documentation/images/example_et_traceroute_05.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3dcb72de4ec302340e1f61307dced9d76d1c0c GIT binary patch literal 16860 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 literal 0 HcmV?d00001 diff --git a/mRemoteV1/Documentation/images/external_tools_external_tool_properties_01.png b/mRemoteV1/Documentation/images/external_tools_external_tool_properties_01.png new file mode 100644 index 0000000000000000000000000000000000000000..321de595d4fcc420a0dbff76abba7117f0551478 GIT binary patch literal 7056 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 G?EeM%vh@l8 literal 0 HcmV?d00001 diff --git a/mRemoteV1/Documentation/images/external_tools_toolbar_01.png b/mRemoteV1/Documentation/images/external_tools_toolbar_01.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d56a234a517a1e710c95fc9358396b7dbd5b11 GIT binary patch literal 2180 zcmYLLc{CJi8=ovSNVt|MTTzNE*BD#Kl3^?nDaJnbeJmq0)`_lVa1CxmX{JW1FJdO6 zY>{p3q?;u|84TIRzU!Ou{qa5Lyvy@D&w0+X{NCrhI2&siKd(41007`OH-p{=064i= z_jACLtR3$>ufsY{pl-u%0LuF$=UEDupOKXj06@X>9e8lFbe=FXM-%{XriHyuw1>X- z1^|HP%%MhiFm6lVgM#n)h@T2uNiPM{7HA{4IjZESHpq{*D#}~3aH@?{URi{qC)y&( zwevlcH|fF$Yo4}~uS-ToJp-h8-$r(c$&=C)^DI>z(coZ_N~CvXD~Y(HyHa=!;@21b z3T2Zr)q~A-*I^W)C$9BF4w-t4dWe>5J%$I$7Lmszf`URUNmkY5I!0tN`A@I`TcDS* z;ju~c3x1>FpZI}jCh$x`QzzC63`NX;=!*+2mZ1en`o)+ zaw@wzndK97bzmsGL)9J2`x4%>w~wnhy?+BN!1g#zq{@)d_vjncSIm`JSazTUzS8~a z_Chz7(2kz`eZO{mDP?!hPPNT5-yawg8~br9*;6`=B^?F<#$n8kS36ing3FOFWGj9w zo$vQ<(?d&xEz`EmW!-PPf)SQbj&#$j-&t8vFr)8ddK=Epq)z_EC;c#Zw*0kzy zdUkGZ5|8j@#FrQ5W|o%5_num55i2p>J*QLKe7~QcBdG{dFnx}}-H)ZNLnv-_ab_!m zTYl?xRA{+f0n2aHg#8-1gvHD+l| zCJ4wuNL_f-I7wvrmdBV$aIE^+RbdwA=Z(C)isz>&<@3hlafGQ}U!Gwl%7ExS3y&q2 zEaBy=EbpeA8M~ z-RhQNkjfE_eX-~AA&tMlegxMFA*+{)2DAA{Hgj?aR2lz6vZdnsy~d~4?vA!q*z)nM;cJvGWkkDkfHEw`1b5O} zZkDCg#Q$xF-@hCL?3wlOu+p0yZuJOm9-K9*z!&hht9O^T`Yj_9ifS}yOEG`Pw0ACO zuo)Jq@q)i;*}m>wmY$A|_?24(C<+Df^z!0QuB<)MlaV=LZf@Su*JpZf{8a63WZN_O ziHB3SD&0|XE+v^l`>rO$-l?+-Zc&$bO+pgqoejNg{rlP+Bz-*x`%J@-I{^(It8vyMHo)yFUO!Pd`06DKIFncV{)a5#;(exj??8F(XO3KPjxrS;4ESjO%p@?t#KGVOz>SK__ zb5MC*l9IFdl#}=i=d0e70(X6{%lTi*;6?DF`@~VrA6?%L=R#aE>B(S!xEf50SSC1# z?Qa_X1B9h?F*GG!SujC`cGKTw^GU&;!lGuV1vO#Bb&5 zoWF`U@5oK@{q`@YFet>CC<)iDMQ14TGU(WD>APFqv-Ja=;vDYL7!POlD5(#mqmh$e z6Y9lQBwgwLylzcnYQ26xP<)bMEYD4}D`Gst)B!?z@ez=B}SGKQ4uKP04dN|9P0X>LZ=s$@ zUKw<8O_%8zB2JL60qvTslf!HkvLvrB|33u8&>n3V?6HdQDa_tceD6a~5I7nj3#Ae= z4E;uzvlg}i^sYE+rH=p%$0GOLtL(6X7uw literal 0 HcmV?d00001 diff --git a/mRemoteV1/Documentation/images/external_tools_tools_list_01.png b/mRemoteV1/Documentation/images/external_tools_tools_list_01.png new file mode 100644 index 0000000000000000000000000000000000000000..0a49430ab2854cdce05e3b2427a3ac4989e1e38f GIT binary patch literal 4085 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 literal 0 HcmV?d00001 diff --git a/mRemoteV1/Resources/Help/Screenshots/Main Menu/Main_Menu.png b/mRemoteV1/Documentation/images/menus_main_menu.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/Main Menu/Main_Menu.png rename to mRemoteV1/Documentation/images/menus_main_menu.png diff --git a/mRemoteV1/Documentation/images/mremoteng_favicon_32.png b/mRemoteV1/Documentation/images/mremoteng_favicon_32.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8fd49d3f6ff7c5387365eaea7b3d614efc37ea GIT binary patch literal 1038 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 e$pK}r`n#nFXJK%OtGrue9=Q0;{i4Z5F0RT1 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 literal 0 HcmV?d00001 diff --git a/mRemoteV1/Resources/Help/Screenshots/Notifications/notification_warning.png b/mRemoteV1/Documentation/images/notifications_panel.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/Notifications/notification_warning.png rename to mRemoteV1/Documentation/images/notifications_panel.png diff --git a/mRemoteV1/Resources/Help/Screenshots/Notifications/popup_warning.png b/mRemoteV1/Documentation/images/notifications_popup.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/Notifications/popup_warning.png rename to mRemoteV1/Documentation/images/notifications_popup.png diff --git a/mRemoteV1/Resources/Help/Screenshots/CommonProblemsRDP/oracle_remediation_setting.png b/mRemoteV1/Documentation/images/oracle_remediation_setting.png similarity index 100% rename from mRemoteV1/Resources/Help/Screenshots/CommonProblemsRDP/oracle_remediation_setting.png rename to mRemoteV1/Documentation/images/oracle_remediation_setting.png diff --git a/mRemoteV1/Documentation/images/putty.png b/mRemoteV1/Documentation/images/putty.png new file mode 100644 index 0000000000000000000000000000000000000000..7bbd3382703d4677a327ee5537a6aeed7bf4841b GIT binary patch literal 619 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 literal 0 HcmV?d00001 diff --git a/mRemoteV1/Documentation/images/user_interface_overview.png b/mRemoteV1/Documentation/images/user_interface_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..a7bbc0d5cc47bc7b48644f25ef3766393f3755eb GIT binary patch literal 146382 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 literal 0 HcmV?d00001 diff --git a/mRemoteV1/Documentation/images/user_interface_panels_01.png b/mRemoteV1/Documentation/images/user_interface_panels_01.png new file mode 100644 index 0000000000000000000000000000000000000000..c61a3d387cdaa01647abc1f1abad157a3780ba2a GIT binary patch literal 1676 zcmV;726Op|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1|dmAK~#8N?VMX^ z9Ay;8gD42n7mKC#Aq#>c^hq(LCQ8$m*o|qMrh-yP!3)+x*|aJ8V7#=_#9OW1l*T?3 z#Vf84(pcM+Vj({Gpb~RwO=w9%F|?^o(iIdb_;Q@{?ab_%$$xhyGqXEu{04r^obR>^ z=X`(8`G(!9Z1zvmEN-eg1~iKt|3~?oTOADLDkjOHp%pPFs?)lbyG6YNa-Qa=Y!rvMnD{63qdj(rDIUob(D8#*U2mAFag!D5tbqf|1uAe9OffD*S) z-4ye2a6yq9+T5(8lVVJz;rh->l(MvA-nd{ad1H{;Pft;1BuiUApP)PT=R}3?Er$K& z$PLsz= z3E$b?V~EL8qaV#iQmM2#tUuW2iR$(KcTyEV5r-_L!#!BP3d<%!jv&w%9T zo6qSsINu3>M{}OaRJv&hj*ABrfRZpij!aNGMkzfb$_OPe`72*um~%7ve(tO7ziC>| z@@dDY*~pij0m;udpZl}sphD%B>pN$R@g>Np?&=z*-G-=qI510H{nP5sBD3tx5jfrg z`8^JN3rgLVmuS_RjVjokpf^`Gt*SdeY~-a z%N7A;qfAGBru*5rEO970UtXolrtW+H0)6n~3=L2Jt?q22aT4VBI0!B%tw)StyXr`X z`M~bii{o_m-1o|kPEgD?Q2ubHkrx{|*TXgiM`b7u5kb$$&f_j~*si2=9~6L+Fg}h} zP|P+^{&1#|7aKX(!!`vccUkRnjMsVv+8rVn9ZU8Psxs&J&olJd(44wIVc3PvPArh$ z!;r~*MeXhF5bi^Bm`DYMIe7ReObYAIN@WlsR1XJa}}>E`L~Ltbs@rj(<#@?;Ns&?Wxvh?cfV9D7npQ zmpE?QAq;440h`Mgt3*+2SmWdzuk}piS~jvwiyst#k}y7wMo`$6o6}`GgaOShU~_h2 zl}3(?LeBA8uRyzFz3}j>VSby#2e2$6{F<2C`OfyId{ArjyI(0=Aiqa}6csNqVSEWn zP=X1HI4ngQSP4LGjI-ZM0HmGU@M;amt6n+AYrPztA)&+CN-BF$07{VW{1RMH1aZpl0Y0`pH5ugB+Am90AWxW=ZN&xvi4oWI0 zhmRbCYii013P1_}Y8d&?4=c8H!ZkJJ1^GP=JOzdSf`ETD%;k$;I5Rn<#iU|D0Vv_W zAmCpObNS*MBQsg9#iU|DevboBLDBs8K>?^)Tp+*4K^6LP8jVI12-v96Xfz9Efc^!! WKD|3J6e3{&0000 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 + +.. toctree:: + :maxdepth: 2 + :caption: Contact Us + + Chat + Reddit + contact_mail.rst diff --git a/mRemoteV1/Documentation/installation.rst b/mRemoteV1/Documentation/installation.rst new file mode 100644 index 00000000..fe9e684f --- /dev/null +++ b/mRemoteV1/Documentation/installation.rst @@ -0,0 +1,11 @@ +#################### +Installing mRemoteNG +#################### + +.. toctree:: + :maxdepth: 2 + + installation/supported_operating_systems.rst + installation/minimum_requirements.rst + installation/install.rst + installation/uninstall.rst diff --git a/mRemoteV1/Documentation/installation/install.rst b/mRemoteV1/Documentation/installation/install.rst new file mode 100644 index 00000000..33cf9135 --- /dev/null +++ b/mRemoteV1/Documentation/installation/install.rst @@ -0,0 +1,90 @@ +******* +Install +******* + +Downloads are provided in three different packages, binary package, portable package and +source package. They are described further down this page. + + +Binary package +============== +The binary package of mRemoteNG is a compiled version of mRemoteNG which comes in an MSI installer. +This is the most common way to install mRemoteNG and get up and running. For more custom and advanced +installs of mRemoteNG then continue reading further down this page. + +On the `mRemoteNG main website download page `_ choose +(**MSI**) from the downloads to get the binary package. + + +Portable package +================ +The portable package consists of the same files as the binary package but contains a modified version +of the executable which stores and loads all your settings from files in the application's directory. +This package can be used to run mRemoteNG from a USB stick and preserve your configuration wherever +you go. + +On the `mRemoteNG main website download page `_ choose +(**ZIP**) from the downloads to get the portable package. + + +Source package +============== +This package is a package provided to be launched within Visual Studio. The only way to launch +mRemoteNG using this package is by compiling it from inside Visual Studio. + + +Command line install +==================== +There is also the possibility to install mRemoteNG through command line with the binary package. + +For example: + +:code:`msiexec /i C:\Path\To\mRemoteNG-Installer.exe PROPERTY1=value PROPERTY2=value` + +To explain the properties that can be set during install we will go into details of them below. + +Extend Installer Properties +--------------------------- +The following extended properties can be provided to the installer when running it from the +command line. + ++---------------------+-----------------------+------------------------------------------------------+ +| Property | Accepted Values | Description | ++=====================+=======================+======================================================+ +| INSTALLDIR | Any valid folder path | | This allows you to set the installation directory | +| | | | from the command line. For paths that contain | +| | | | spaces, enclose the path in double quotes (""). | +| | | | This overrides any value found in the registry. | +| | | | Introduced in v1.75 beta 2. | ++---------------------+-----------------------+------------------------------------------------------+ +| IGNOREPREREQUISITES | ``0`` or ``1`` | | When the ``IGNOREPREREQUISITES`` property is set | +| | | | to ``1``, the installer will not be halted if any | +| | | | prerequisite check is not met. You must still run | +| | | | the installer as Admin - this flag will not remove | +| | | | that requirement. Introduced in v1.74. | ++---------------------+-----------------------+------------------------------------------------------+ + + +Examples +-------- +**Install to a custom folder** + + :code:`msiexec /i C:\Path\To\mRemoteNG-Installer.msi INSTALLDIR="D:\Work Apps\mRemoteNG"` + +**Ignore prerequisites during a normal install** + + :code:`msiexec /i C:\Path\To\mRemoteNG-Installer.msi IGNOREPREREQUISITES=1` + +**Ignore prerequisites during a silent install** + + :code:`msiexec /i C:\Path\To\mRemoteNG-Installer.msi /qn IGNOREPREREQUISITES=1` + + +Troubleshooting installation +============================ +If you find the installer is not working as expected, there are several things you can do +to troubleshoot. + +- Turn on verbose logging by using the ``/lv* `` argument at the command line. + + :code:`msiexec /i C:\Path\To\mRemoteNG-Installer.msi /l*v C:\mremoteng_install.log` diff --git a/mRemoteV1/Documentation/installation/minimum_requirements.rst b/mRemoteV1/Documentation/installation/minimum_requirements.rst new file mode 100644 index 00000000..97c780ba --- /dev/null +++ b/mRemoteV1/Documentation/installation/minimum_requirements.rst @@ -0,0 +1,50 @@ +.. _requirements: + +******************** +Minimum Requirements +******************** + +.. note:: + + In recent versions of Windows 10 and Windows Server 2016 the below requirements are already provided by the system. + +However they are listed below just in case you need to know what mRemoteNG actually needs for different protocols and +error searching on troubles with installing. + +- `Microsoft .NET Framework 4.0 `_ + +- Microsoft Terminal Service Client 8.0 or later + - Needed if you use RDP, mstscax.dll and/or msrdp.ocx be registered. + - Included with newer Windows versions `KB2574819 `_ + AND either `KB2592687 `_ or + `KB2923545 `_ is required for Windows 7/Windows Server 2008 R2 + +- `PuTTY `_ + - Needed if you use Telnet, SSH, Rlogin or RAW. Included in all packages. + - An appropriate and integrated version is included with mRemoteNG. + +- `Citrix ICA Client `_ + - Needed if you use ICA. wfica.ocx must be registered. + +Windows 7 and Windows 2008 R2 Clients +------------------------------------- +.. tip:: + + You can use powershell to check if the hotfixes are installed. Example: ``Get-HotFix | where {$_.HotFixID -eq "KB2574819" -and $_.HotFixID -eq "KB2592687"}`` + +The following updates, **must be** present on any Windows 7 or Windows Server 2008 client that will be running +mRemoteNG. (They must have been installed in the order provided below): + +- `KB2574819 `_ - Adds support for DTLS in Windows 7 SP1 and Windows Server 2008 R2 SP1 +- `KB2592687 `_ - RDP 8.0 update for Windows 7 and Windows Server 2008 R2 + +The following are suggested (but not required) for Windows 7 / Windows Server 2008 clients: + +- `KB2857650 `_ - Update that improves the RemoteApp and Desktop Connections features is available for Windows 7 +- `KB2830477 `_ - Update for RemoteApp and Desktop Connections feature is available for Windows +- `KB2913751 `_ - Smart card redirection in remote sessions fails in a Windows 7 SP1-based RDP 8.1 client +- `KB2923545 `_ - Update for RDP 8.1 is available for Windows 7 SP1 +- `KB2965788 `_ - MS14-030: Description of the security update for Remote Desktop Security Release for Windows: June 10, 2014 +- `KB2985461 `_ - Error 0x800401f0when you update RemoteApp and Desktop Connections feeds in Windows 7 or Windows Server 2008 R2 +- `KB2984972 `_ - Update for RDC 7.1to support restricted administration logons on Windows 7 and Windows Server 2008 R2 +- `KB2984976 `_ - RDP 8.0 update for restricted administration on Windows 7 or Windows Server 2008 R2 diff --git a/mRemoteV1/Documentation/installation/supported_operating_systems.rst b/mRemoteV1/Documentation/installation/supported_operating_systems.rst new file mode 100644 index 00000000..43098154 --- /dev/null +++ b/mRemoteV1/Documentation/installation/supported_operating_systems.rst @@ -0,0 +1,13 @@ +*************************** +Supported Operating Systems +*************************** + +These are the supported and tested operating systems that mRemoteNG can run on: + +- `Windows 10 `_ +- `Windows 8.1 `_ +- `Windows 7 `_ (See: :ref:`requirements`) +- `Windows Server 2016 `_ +- `Windows Server 2012 R2 `_ +- `Windows Server 2012 `_ +- `Windows Server 2008 R2 `_ (See: :ref:`requirements`) diff --git a/mRemoteV1/Documentation/installation/uninstall.rst b/mRemoteV1/Documentation/installation/uninstall.rst new file mode 100644 index 00000000..b4483fdc --- /dev/null +++ b/mRemoteV1/Documentation/installation/uninstall.rst @@ -0,0 +1,28 @@ +********* +Uninstall +********* + +Standard Uninstall +================== +mRemoteNG basic binary package can be uninstalled with Windows Control Panel. If for some reason it does not work please +follow information provided below for Manual Uninstall. + +Manual Uninstall +================ +If for some reason you cannot uninstall mRemoteNG from the Windows Control Panel, +you can manually uninstall the program using the following steps: + +.. note:: + + If you are using the Portable version, simply deleting the folder that contains mRemoteNG should be sufficient. These uninstall instructions are only necessary for the normal binary .MSI installed version of mRemoteNG + +#. Delete the folder where mRemoteNG was installed. By default, this is: + ``C:\Program Files(x86)\mRemoteNG`` + +#. Delete all mRemoteNG custom registry entries (See above table for locations) + +#. Delete the mRemoteNG install entry from one of the following locations. Search for "mRemoteNG" in the DisplayName field: + - x86: ``HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\`` + - x64: ``HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\`` + +#. (Optional) If you would also like to delete user data, delete the folders mentioned here: diff --git a/mRemoteV1/Documentation/keyboard_shortcuts.rst b/mRemoteV1/Documentation/keyboard_shortcuts.rst new file mode 100644 index 00000000..6bbf01ef --- /dev/null +++ b/mRemoteV1/Documentation/keyboard_shortcuts.rst @@ -0,0 +1,75 @@ +****************** +Keyboard Shortcuts +****************** + +General +======= + +.. list-table:: + :widths: 30 70 + :header-rows: 1 + + * - Keybinding + - Action + * - F1 + - Help + + +File +==== + +.. list-table:: + :widths: 30 70 + :header-rows: 1 + + * - Keybinding + - Action + * - Ctrl+N + - New Connection + * - Ctrl+Shift+N + - New Folder + * - Ctrl+O + - Open Connection File... + * - Ctrl+S + - Save Connection FIle + * - Ctrl+Shift+S + - Save Connection File As... + + +View +==== + +.. list-table:: + :widths: 30 70 + :header-rows: 1 + + * - Keybinding + - Action + * - Ctrl+Alt+C + - Jump to (Connections and Config) + * - Ctrl+Alt+E + - Jump to (Notifications) + * - F11 + - Fullscreen + +Connections +=========== + +.. list-table:: + :widths: 30 70 + :header-rows: 1 + + * - Keybinding + - Action + * - Ctrl+Shift+C + - Connect + * - Ctrl+D + - Duplicate + * - F2 + - Rename + * - Del + - Delete + * - Ctrl+Up + - Move Up + * - Ctrl+Down + - Move Down diff --git a/mRemoteV1/Documentation/known_issues.rst b/mRemoteV1/Documentation/known_issues.rst new file mode 100644 index 00000000..6ab90d04 --- /dev/null +++ b/mRemoteV1/Documentation/known_issues.rst @@ -0,0 +1,139 @@ +############ +Known Issues +############ + +CredSSP - CVE-2018-0886 - Authentication error +============================================== + +mRemoteNG uses the Microsoft Terminal Services Client (MSTSC) libraries +in order to make Remote Desktop connections. + +.. note:: + + mRemoteNG has no control over the functionality changes implemented by Microsoft. + +Please refer to `Microsoft's Documentation `_ for full details regarding this problem. +Patched clients attempting to connect to Unpatched servers will fail with the following error: + +.. figure:: /images/credssp-error.png + +The same error will occur with MSTSC directly on a patched +client attempting to connect to an unpatched server. + +Per the MS documentation, the only way around this is to do the following: + +- Patch the servers +- set the "Encryption Oracle Remediation" policy to "Vulnerable" - refer to the MS documentation above for details: + + .. figure:: /images/oracle_remediation_setting.png + +- Uninstall `KB4103727 `_ + +I can't open more than X number of RDP sessions. New sessions fail with error code 3334 +======================================================================================= +The issue here is likely the amount of resources available to the RDP component to open the connection. This was alleviated in `MR-714 `_ and `MR-864 `_ + +Other things you can do to help reduce the issue: + +- On your RDP connections, set CacheBitmaps to False (this reduces the memory usage of each connection) +- Consider removing KB2830477 if you have it installed. This seems to increase the likelyhood of getting 3334 error codes. + +RDP connections fail with error code 264 +======================================== +This issue is often caused by trying to retrieve session information. + +Try doing the following: + +- Disable "Automatically get session information" (Tools -> Options -> Advanced) + +ATI Tray Tools +============== +mRemoteNG is not compatible with ATI Tray Tools. We are aware of the issue and +hope to have it fixed in a future version. We recommend that you disable or +uninstall ATI Tray Tools while using mRemoteNG. + +mRemoteNG crashes with the error "Class not registered" when trying to connect using RDP +======================================================================================== +You may also see a message like "System.Runtime.InteropServices.COMException (0x80040154)" + +If you are running mRemoteNG on Windows 7 or Server 2008: + +- You may be missing one or more required windows updates (See: :ref:`requirements`.). +- A common issue is that `KB2574819 `_ is either missing or has been installed after `KB2592687 `_. They must be installed in the correct order. If you do not have KB2574819, follow these instructions: + - Uninstall `KB2592687 `_ + - Install `KB2574819 `_ + - (Re)Install `KB2592687 `_ + - Reboot your machine + +If you are running mRemoteNG on Windows 8/10 or Server 2012+: + +- Try to repair the mRemoteNG installation using the installer or uninstall/reinstall. Receiving this error on these OS's is just an install fluke (or you've fiddled with your registry). + +VNC connections fail with the error "The server is using an unsupported version of the RFB protocol. The server is using version 4.1 but only version 3.x is supported." +======================================================================================================================================================================== +RFB version 4.0 and higher is a proprietary version owned by `RealVNC Limited `_. Building support for newer versions will likely result in licensing fees. Therefore, it is unlikely that mRemoteNG will have support for version 4.0+ anytime soon. + +Unfortunately, the only way around this limitation is to use an open source +implementation of VNC server such as `TightVNC `_ +or `UltraVNC `_ + +Cannot click some UI elements in an RDP connection window. +========================================================== +It may seem like some elements are not clickable along the top +and left sides of your RDP connection window. More information can be found in issue #210 + +This is likely due to non-standard (>100%) DPI scaling on your local machine. + +To turn this off: + +On Windows 7 / 8 + +- Start menu -> Control Panel -> Display +- Ensure the option **Smaller - 100% (default)** is selected + +On Windows 10 + +- Start menu -> Settings -> Display +- Ensure the slider under **Change the size of text, apps, and other items** is all the way to the left (at 100%) + +SSH login fails when password contains extended ASCII characters +================================================================ +Initial login to SSH (or WinSCP) fails when the password contains +extended ASCII characters (such as: €šœ£ÁØë). +Typing the password into the SSH session directly works. + +Investigation suggests that there is an issue in character encoding +when mRemoteNG passes the value to the cmd line, which then invokes PuTTY. +This was investigated in issue `#186 `_ + +The only resolution for this issue is to not use extended ASCII characters +in passwords that will be sent to PuTTY or similar tools. + +RDP tries to reconnect whenever I resize the window +=================================================== +Your RDP connection reconnects after resizing mRemoteNG or the connection panel. + +This will occur anytime the connection window changes size and +the following connection options are set: + +- Resolution: **Fit to Panel** +- Automatic Resize: **Yes** + +To prevent reconnecting, you can do one of several things: + +- Change the resolution to Smart Size. This will scale the original connection area when the view window size changes. This does not preserve aspect ratio. +- Turn off Automatic Resize. When the view window size changes, you will see scroll bars or dead space. + +There is no way to update the view window size without a reconnect. +This is an RDP protocol limitation. + +AltGr key combinations stop working in other apps when connected to RDP +======================================================================= +When connected to an RDP session AltGr, keyboard combinations sometimes stop working. + +This is a known issue with The Microsoft RDP library that cannot be solved by mRemoteNG. +There are three known work arounds for this issue: + +- Disconnect the RDP session which caused the issue. Since it can be difficult to determine which connection is to blame, you may need to disconnect all RDP sessions. Once you have confirmed AltGr combinations are working again, you may reconnect your RDP session(s). +- When the issue occurs, hold/press the Ctrl key. This is known to release the AltGr key from the RDP session. +- Use :kbd:`Ctrl` + :kbd:`Alt` instead of :kbd:`AltGr`. diff --git a/mRemoteV1/Documentation/migrate.rst b/mRemoteV1/Documentation/migrate.rst new file mode 100644 index 00000000..6c0b4d77 --- /dev/null +++ b/mRemoteV1/Documentation/migrate.rst @@ -0,0 +1,38 @@ +***************************** +Migrate Settings from mRemote +***************************** + +mRemoteNG does not automatically migrate settings from old (non-NG) versions of mRemote. +You will manually need to copy your settings files from mRemote to mRemoteNG. + +On Windows XP / Windows Home Server / Windows Server 2003 +========================================================= +Copy all the files in this folder: + +:: + + C:\Documents and Settings\[username]\Local Settings\Application Data\Felix_Deimel\mRemote + +To this folder: + +:: + + C:\Documents and Settings\[username]\Local Settings\Application Data\mRemoteNG + +On Windows Vista / Windows 7 / Windows Server 2008 +================================================== + +Copy all the files in this folder: + +:: + + C:\Users\[username]\AppData\Local\Felix_Deimel\mRemote + +To this folder: + +:: + + C:\Users\[username]\AppData\Local\mRemoteNG + +If you keep both programs installed on your computer, +changes within one program will not affect the other. diff --git a/mRemoteV1/Documentation/sql_configuration.rst b/mRemoteV1/Documentation/sql_configuration.rst new file mode 100644 index 00000000..6b4c23aa --- /dev/null +++ b/mRemoteV1/Documentation/sql_configuration.rst @@ -0,0 +1,381 @@ +.. _sql_configuration: + +***************** +SQL Configuration +***************** + +.. warning:: + + The SQL feature is in an early beta stage and not intended for use in an productive environment! I recommend you to do a full backup of your connections and settings before switching to SQL Server. + +Supported Databases +=================== + +The list below includes databases that are officially supported. Others may already work and this list may expand with future updates. + +- MSSQL +- MySQL + +Steps to configure your SQL Server +================================== +- Create a new Database called "mRemoteNG" on your SQL Server. +- Run the SQL Script for your DB type listed below in topic (SQL Table creation Scripts) on the newly created Database. +- Give the users that you want to grant access to the mRemoteNG Connections Database Read/Write permissions on the Database. + +Steps to configure mRemoteNG for SQL +==================================== +- Start mRemoteNG if it's not already running. +- Go to Tools - Options - SQL Server +- Check the box that says "Use SQL Server to load & save connections". +- Fill in your SQL Server hostname or ip address. +- If you do not use your Windows logon info to authenticate against the SQL Server fill in the correct Username and Password. +- Click OK to apply the changes. The main window title should now change to "mRemoteNG | SQL Server". +- Now click on File - Save to update the tables on your SQL Server with the data from the loaded connections xml file. (Do not click File - New, this doesn't work yet) +- You should now be able to do everything you were able to do with the XML storage plus see the changes live on another mRemoteNG instance that is connected to the same Database. + +SQL Table creation Scripts +========================== + +MSSQL +----- + +.. code-block:: sql + + if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblCons]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) + drop table [dbo].[tblCons] + GO + + if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) + drop table [dbo].[tblRoot] + GO + + if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblUpdate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) + drop table [dbo].[tblUpdate] + GO + + CREATE TABLE [dbo].[tblCons] ( + [ID] [int] IDENTITY (1001, 1) NOT NULL , + [ConstantID] [varchar] (128) NULL , + [PositionID] [int] NOT NULL , + [ParentID] [varchar] (128) NULL , + [LastChange] [datetime] NOT NULL , + [Name] [varchar] (128) NOT NULL , + [Type] [varchar] (32) NOT NULL , + [Expanded] [bit] NOT NULL , + [Description] [varchar] (1024) NULL , + [Icon] [varchar] (128) NOT NULL , + [Panel] [varchar] (128) NOT NULL , + [Username] [varchar] (512) NULL , + [DomainName] [varchar] (512) NULL , + [Password] [varchar] (1024) NULL , + [Hostname] [varchar] (512) NULL , + [Protocol] [varchar] (32) NOT NULL , + [PuttySession] [varchar] (128) NULL , + [Port] [int] NOT NULL , + [ConnectToConsole] [bit] NOT NULL , + [UseCredSsp] [bit] NOT NULL , + [RenderingEngine] [varchar] (10) NULL , + [ICAEncryptionStrength] [varchar] (32) NOT NULL , + [RDPAuthenticationLevel] [varchar] (32) NOT NULL , + [RDPMinutesToIdleTimeout] [int] NOT NULL, + [RDPAlertIdleTimeout] [bit] NOT NULL, + [Colors] [varchar] (32) NOT NULL , + [Resolution] [varchar] (32) NOT NULL , + [DisplayWallpaper] [bit] NOT NULL , + [DisplayThemes] [bit] NOT NULL , + [EnableFontSmoothing] [bit] NOT NULL , + [EnableDesktopComposition] [bit] NOT NULL , + [CacheBitmaps] [bit] NOT NULL , + [RedirectDiskDrives] [bit] NOT NULL , + [RedirectPorts] [bit] NOT NULL , + [RedirectPrinters] [bit] NOT NULL , + [RedirectSmartCards] [bit] NOT NULL , + [RedirectSound] [varchar] (64) NOT NULL , + [SoundQuality] [varchar] (20) NOT NULL, + [RedirectAudioCapture] [bit] NOT NULL, + [RedirectKeys] [bit] NOT NULL , + [Connected] [bit] NOT NULL , + [PreExtApp] [varchar] (256) NULL , + [PostExtApp] [varchar] (256) NULL , + [MacAddress] [varchar] (32) NULL , + [UserField] [varchar] (256) NULL , + [ExtApp] [varchar] (256) NULL , + [VNCCompression] [varchar] (10) NULL , + [VNCEncoding] [varchar] (20) NULL , + [VNCAuthMode] [varchar] (10) NULL , + [VNCProxyType] [varchar] (20) NULL , + [VNCProxyIP] [varchar] (128) NULL , + [VNCProxyPort] [int] NULL , + [VNCProxyUsername] [varchar] (512) NULL , + [VNCProxyPassword] [varchar] (1024) NULL , + [VNCColors] [varchar] (10) NULL , + [VNCSmartSizeMode] [varchar] (20) NULL , + [VNCViewOnly] [bit] NOT NULL , + [RDGatewayUsageMethod] [varchar] (32) NOT NULL , + [RDGatewayHostname] [varchar] (512) NULL , + [RDGatewayUseConnectionCredentials] [varchar] (32) NOT NULL , + [RDGatewayUsername] [varchar] (512) NULL , + [RDGatewayPassword] [varchar] (1024) NULL , + [RDGatewayDomain] [varchar] (512) NULL , + [InheritCacheBitmaps] [bit] NOT NULL , + [InheritColors] [bit] NOT NULL , + [InheritDescription] [bit] NOT NULL , + [InheritDisplayThemes] [bit] NOT NULL , + [InheritDisplayWallpaper] [bit] NOT NULL , + [InheritEnableFontSmoothing] [bit] NOT NULL , + [InheritEnableDesktopComposition] [bit] NOT NULL , + [InheritDomain] [bit] NOT NULL , + [InheritIcon] [bit] NOT NULL , + [InheritPanel] [bit] NOT NULL , + [InheritPassword] [bit] NOT NULL , + [InheritPort] [bit] NOT NULL , + [InheritProtocol] [bit] NOT NULL , + [InheritPuttySession] [bit] NOT NULL , + [InheritRedirectDiskDrives] [bit] NOT NULL , + [InheritRedirectKeys] [bit] NOT NULL , + [InheritRedirectPorts] [bit] NOT NULL , + [InheritRedirectPrinters] [bit] NOT NULL , + [InheritRedirectSmartCards] [bit] NOT NULL , + [InheritRedirectSound] [bit] NOT NULL , + [InheritSoundQuality] [bit] NOT NULL, + [InheritRedirectAudioCapture] [bit] NOT NULL, + [InheritResolution] [bit] NOT NULL , + [InheritUseConsoleSession] [bit] NOT NULL , + [InheritUseCredSsp] [bit] NOT NULL , + [InheritRenderingEngine] [bit] NOT NULL , + [InheritICAEncryptionStrength] [bit] NOT NULL , + [InheritRDPAuthenticationLevel] [bit] NOT NULL , + [InheritRDPMinutesToIdleTimeout] [bit] NOT NULL, + [InheritRDPAlertIdleTimeout] [bit] NOT NULL, + [InheritUsername] [bit] NOT NULL , + [InheritPreExtApp] [bit] NOT NULL , + [InheritPostExtApp] [bit] NOT NULL , + [InheritMacAddress] [bit] NOT NULL , + [InheritUserField] [bit] NOT NULL , + [InheritExtApp] [bit] NOT NULL , + [InheritVNCCompression] [bit] NOT NULL, + [InheritVNCEncoding] [bit] NOT NULL , + [InheritVNCAuthMode] [bit] NOT NULL , + [InheritVNCProxyType] [bit] NOT NULL , + [InheritVNCProxyIP] [bit] NOT NULL , + [InheritVNCProxyPort] [bit] NOT NULL , + [InheritVNCProxyUsername] [bit] NOT NULL , + [InheritVNCProxyPassword] [bit] NOT NULL , + [InheritVNCColors] [bit] NOT NULL , + [InheritVNCSmartSizeMode] [bit] NOT NULL , + [InheritVNCViewOnly] [bit] NOT NULL , + [InheritRDGatewayUsageMethod] [bit] NOT NULL , + [InheritRDGatewayHostname] [bit] NOT NULL , + [InheritRDGatewayUseConnectionCredentials] [bit] NOT NULL , + [InheritRDGatewayUsername] [bit] NOT NULL , + [InheritRDGatewayPassword] [bit] NOT NULL , + [InheritRDGatewayDomain] [bit] NOT NULL , + [LoadBalanceInfo] [varchar] (1024) NULL , + [AutomaticResize] [bit] NOT NULL DEFAULT 1 , + [InheritLoadBalanceInfo] [bit] NOT NULL DEFAULT 0 , + [InheritAutomaticResize] [bit] NOT NULL DEFAULT 0 , + [RedirectClipboard] [bit] NOT NULL DEFAULT 0 , + [InheritRedirectClipboard] [bit] NOT NULL DEFAULT 0 + ) ON [PRIMARY] + GO + + CREATE TABLE [dbo].[tblRoot] ( + [Name] [varchar] (2048) NOT NULL , + [Export] [bit] NOT NULL , + [Protected] [varchar] (4048) NOT NULL , + [ConfVersion] [float] NOT NULL + ) ON [PRIMARY] + GO + + CREATE TABLE [dbo].[tblUpdate] ( + [LastUpdate] [datetime] NULL + ) ON [PRIMARY] + GO + +MYSQL +----- + +.. code-block:: sql + + /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; + /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; + /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; + /*!40101 SET NAMES utf8 */; + /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; + /*!40103 SET TIME_ZONE='+00:00' */; + /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; + /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; + /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; + /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + + -- + -- Table structure for table `tblCons` + -- + + DROP TABLE IF EXISTS `tblCons`; + /*!40101 SET @saved_cs_client = @@character_set_client */; + /*!40101 SET character_set_client = utf8 */; + CREATE TABLE `tblCons` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `ConstantID` varchar(128) DEFAULT NULL, + `PositionID` int(11) NOT NULL, + `ParentID` varchar(128) DEFAULT NULL, + `LastChange` datetime NOT NULL, + `Name` varchar(128) NOT NULL, + `Type` varchar(32) NOT NULL, + `Expanded` tinyint(1) NOT NULL, + `Description` varchar(1024) DEFAULT NULL, + `Icon` varchar(128) NOT NULL, + `Panel` varchar(128) NOT NULL, + `Username` varchar(512) DEFAULT NULL, + `DomainName` varchar(512) DEFAULT NULL, + `Password` varchar(1024) DEFAULT NULL, + `Hostname` varchar(512) DEFAULT NULL, + `Protocol` varchar(32) NOT NULL, + `PuttySession` varchar(128) DEFAULT NULL, + `Port` int(11) NOT NULL, + `ConnectToConsole` tinyint(1) NOT NULL, + `UseCredSsp` tinyint(1) NOT NULL, + `RenderingEngine` varchar(10) DEFAULT NULL, + `ICAEncryptionStrength` varchar(32) NOT NULL, + `RDPAuthenticationLevel` varchar(32) NOT NULL, + `RDPMinutesToIdleTimeout` int(11) NOT NULL, + `RDPAlertIdleTimeout` tinyint(1) NOT NULL, + `Colors` varchar(32) NOT NULL, + `Resolution` varchar(32) NOT NULL, + `DisplayWallpaper` tinyint(1) NOT NULL, + `DisplayThemes` tinyint(1) NOT NULL, + `EnableFontSmoothing` tinyint(1) NOT NULL, + `EnableDesktopComposition` tinyint(1) NOT NULL, + `CacheBitmaps` tinyint(1) NOT NULL, + `RedirectDiskDrives` tinyint(1) NOT NULL, + `RedirectPorts` tinyint(1) NOT NULL, + `RedirectPrinters` tinyint(1) NOT NULL, + `RedirectSmartCards` tinyint(1) NOT NULL, + `RedirectSound` varchar(64) NOT NULL, + `SoundQuality` varchar(20) NOT NULL, + `RedirectAudioCapture` tinyint(1) NOT NULL, + `RedirectKeys` tinyint(1) NOT NULL, + `Connected` tinyint(1) NOT NULL, + `PreExtApp` varchar(256) DEFAULT NULL, + `PostExtApp` varchar(256) DEFAULT NULL, + `MacAddress` varchar(32) DEFAULT NULL, + `UserField` varchar(256) DEFAULT NULL, + `ExtApp` varchar(256) DEFAULT NULL, + `VNCCompression` varchar(10) DEFAULT NULL, + `VNCEncoding` varchar(20) DEFAULT NULL, + `VNCAuthMode` varchar(10) DEFAULT NULL, + `VNCProxyType` varchar(20) DEFAULT NULL, + `VNCProxyIP` varchar(128) DEFAULT NULL, + `VNCProxyPort` int(11) DEFAULT NULL, + `VNCProxyUsername` varchar(512) DEFAULT NULL, + `VNCProxyPassword` varchar(1024) DEFAULT NULL, + `VNCColors` varchar(10) DEFAULT NULL, + `VNCSmartSizeMode` varchar(20) DEFAULT NULL, + `VNCViewOnly` tinyint(1) NOT NULL, + `RDGatewayUsageMethod` varchar(32) NOT NULL, + `RDGatewayHostname` varchar(512) DEFAULT NULL, + `RDGatewayUseConnectionCredentials` varchar(32) NOT NULL, + `RDGatewayUsername` varchar(512) DEFAULT NULL, + `RDGatewayPassword` varchar(1024) DEFAULT NULL, + `RDGatewayDomain` varchar(512) DEFAULT NULL, + `InheritCacheBitmaps` tinyint(1) NOT NULL, + `InheritColors` tinyint(1) NOT NULL, + `InheritDescription` tinyint(1) NOT NULL, + `InheritDisplayThemes` tinyint(1) NOT NULL, + `InheritDisplayWallpaper` tinyint(1) NOT NULL, + `InheritEnableFontSmoothing` tinyint(1) NOT NULL, + `InheritEnableDesktopComposition` tinyint(1) NOT NULL, + `InheritDomain` tinyint(1) NOT NULL, + `InheritIcon` tinyint(1) NOT NULL, + `InheritPanel` tinyint(1) NOT NULL, + `InheritPassword` tinyint(1) NOT NULL, + `InheritPort` tinyint(1) NOT NULL, + `InheritProtocol` tinyint(1) NOT NULL, + `InheritPuttySession` tinyint(1) NOT NULL, + `InheritRedirectDiskDrives` tinyint(1) NOT NULL, + `InheritRedirectKeys` tinyint(1) NOT NULL, + `InheritRedirectPorts` tinyint(1) NOT NULL, + `InheritRedirectPrinters` tinyint(1) NOT NULL, + `InheritRedirectSmartCards` tinyint(1) NOT NULL, + `InheritRedirectSound` tinyint(1) NOT NULL, + `InheritSoundQuality` tinyint(1) NOT NULL, + `InheritRedirectAudioCapture` tinyint(1) NOT NULL, + `InheritResolution` tinyint(1) NOT NULL, + `InheritUseConsoleSession` tinyint(1) NOT NULL, + `InheritUseCredSsp` tinyint(1) NOT NULL, + `InheritRenderingEngine` tinyint(1) NOT NULL, + `InheritICAEncryptionStrength` tinyint(1) NOT NULL, + `InheritRDPAuthenticationLevel` tinyint(1) NOT NULL, + `InheritRDPMinutesToIdleTimeout` tinyint(1) NOT NULL, + `InheritRDPAlertIdleTimeout` tinyint(1) NOT NULL, + `InheritUsername` tinyint(1) NOT NULL, + `InheritPreExtApp` tinyint(1) NOT NULL, + `InheritPostExtApp` tinyint(1) NOT NULL, + `InheritMacAddress` tinyint(1) NOT NULL, + `InheritUserField` tinyint(1) NOT NULL, + `InheritExtApp` tinyint(1) NOT NULL, + `InheritVNCCompression` tinyint(1) NOT NULL, + `InheritVNCEncoding` tinyint(1) NOT NULL, + `InheritVNCAuthMode` tinyint(1) NOT NULL, + `InheritVNCProxyType` tinyint(1) NOT NULL, + `InheritVNCProxyIP` tinyint(1) NOT NULL, + `InheritVNCProxyPort` tinyint(1) NOT NULL, + `InheritVNCProxyUsername` tinyint(1) NOT NULL, + `InheritVNCProxyPassword` tinyint(1) NOT NULL, + `InheritVNCColors` tinyint(1) NOT NULL, + `InheritVNCSmartSizeMode` tinyint(1) NOT NULL, + `InheritVNCViewOnly` tinyint(1) NOT NULL, + `InheritRDGatewayUsageMethod` tinyint(1) NOT NULL, + `InheritRDGatewayHostname` tinyint(1) NOT NULL, + `InheritRDGatewayUseConnectionCredentials` tinyint(1) NOT NULL, + `InheritRDGatewayUsername` tinyint(1) NOT NULL, + `InheritRDGatewayPassword` tinyint(1) NOT NULL, + `InheritRDGatewayDomain` tinyint(1) NOT NULL, + `LoadBalanceInfo` varchar(1024) DEFAULT NULL, + `AutomaticResize` tinyint(1) NOT NULL DEFAULT 1, + `InheritLoadBalanceInfo` tinyint(1) NOT NULL DEFAULT 0, + `InheritAutomaticResize` tinyint(1) NOT NULL DEFAULT 0, + `RedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, + `InheritRedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`ID`) + ) ENGINE=InnoDB AUTO_INCREMENT=3324 DEFAULT CHARSET=latin1; + /*!40101 SET character_set_client = @saved_cs_client */; + + -- + -- Table structure for table `tblRoot` + -- + + DROP TABLE IF EXISTS `tblRoot`; + /*!40101 SET @saved_cs_client = @@character_set_client */; + /*!40101 SET character_set_client = utf8 */; + CREATE TABLE `tblRoot` ( + `Name` varchar(2048) NOT NULL, + `Export` tinyint(1) NOT NULL, + `Protected` varchar(4048) NOT NULL, + `ConfVersion` double NOT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=latin1; + /*!40101 SET character_set_client = @saved_cs_client */; + + -- + -- Table structure for table `tblUpdate` + -- + + DROP TABLE IF EXISTS `tblUpdate`; + /*!40101 SET @saved_cs_client = @@character_set_client */; + /*!40101 SET character_set_client = utf8 */; + CREATE TABLE `tblUpdate` ( + `LastUpdate` datetime(3) DEFAULT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=latin1; + /*!40101 SET character_set_client = @saved_cs_client */; + + + /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + + /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; + /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; + /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; + /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; + /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; + /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; + /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; diff --git a/mRemoteV1/Documentation/troubleshooting.rst b/mRemoteV1/Documentation/troubleshooting.rst new file mode 100644 index 00000000..ee504a7f --- /dev/null +++ b/mRemoteV1/Documentation/troubleshooting.rst @@ -0,0 +1,69 @@ +*************** +Troubleshooting +*************** + +Logfile +======= + +The mRemoteNG.log is located in the following location: + +MSI/Installed version +--------------------- + +:: + + %APPDATA%\mRemoteNG\mRemoteNG.log + (example: `C:\Users\[username]\AppData\Roaming\mRemoteNG\mRemoteNG.log`) + +Portable version +---------------- + +:: + + [location of mRemoteNG.exe]\mRemoteNG.log + +Crash at Startup +================ + +Try deleting your `user.config `_ file, see https://support.microsoft.com/en-us/kb/956762 + +Crash Information +================= + +- Provide the Stack Trace from the crash prompt or from the Windows Application Event Log `example `_) +- Check `C:\Users\All Users\Microsoft\Windows\WER\Report*` folders for any reports related to mRemoteNG +- Check `%LOCALAPPDATA%\CrashDumps `_ for any mRemoteNG.exe.*.dmp files +- Attach the Error Reports, Dumps and mRemoteNG.log to a new `Issue `_ + +Backup and Recovery +=================== + +By default, your connections file is backed up every time it is saved. +These backup files are normal/valid connections file - they have only been renamed to avoid being overwritten. +mRemoteNG will save the 10 most recent backups. + +Files and Locations +------------------- + +Your backup files are located in the same place as your normal connections file. +This could be one of three places: + +- Normal version: `%AppData%\mRemoteNG` +- Portable version: In the same location as mRemoteNG.exe +- If you have saved your confCons.xml to a custom location, go there. + +There are 2 different backup naming schemes: + +- `confCons.xml.backup` is the most recent backup that was taken. +- `confCons.xml.YYYYMMDD-HHmmssxxxx.backup` is a rolling backup that was moved to a rolling backup file on the date specified in the file name. + +Recovering corrupted connections file +------------------------------------- + +If you find that your confCons.xml file has corrupted or has lost its data, +you will need to revert to a previous version. + +- Locate your confCons.xml file +- Find the most recent backup file that appears to have data (>1KB in size). +- Rename or delete the corrupted `confCons.xml` file. +- Rename the chosen backup file to remove the date stamp and .backup suffix. Unless you set a custom path, your backup file should now be named `confCons.xml`. diff --git a/mRemoteV1/Documentation/user_interface.rst b/mRemoteV1/Documentation/user_interface.rst new file mode 100644 index 00000000..3a472350 --- /dev/null +++ b/mRemoteV1/Documentation/user_interface.rst @@ -0,0 +1,21 @@ +############## +User Interface +############## + +.. figure:: /images/user_interface_overview.png + +.. toctree:: + :maxdepth: 1 + + user_interface/main_window.rst + user_interface/panels.rst + user_interface/menus.rst + user_interface/connections.rst + user_interface/quick_connect.rst + user_interface/port_scan.rst + user_interface/screenshot_manager.rst + user_interface/notifications.rst + user_interface/import_export.rst + user_interface/ssh_file_transfer.rst + user_interface/external_tools.rst + user_interface/options.rst diff --git a/mRemoteV1/Documentation/user_interface/connections.rst b/mRemoteV1/Documentation/user_interface/connections.rst new file mode 100644 index 00000000..9fa9b269 --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/connections.rst @@ -0,0 +1,147 @@ +*********** +Connections +*********** + +The connections dialog is the main collection of all connections that inside mRemoteNG. +This document will explain the details of the connections dialog. + +Connection Tree +=============== + +Menu Items +---------- + +.. figure:: /images/connections_top_bar.png + +- **Red** - New Connection +- **Green** - New Folder +- **Blue** - View (Expand/Collapse all folders) +- **Yellow** - Ascending sort + +New Connection +-------------- + +.. tip:: + + You can also duplicate an already created connection if you want to follow some sort of template of a connection. Just right click on folder or connection to duplicate the item. The information is then carried over for editing. This can save a lot of time when the connection list is large. + +Creates a new connection item in the connections dialog after where cursor is present. + +New Folder +---------- + +.. tip:: + + Folders can help to make adding connections easier. By setting a folder with some values that can be inheritaded down to the connections. + +Creates a new folder in connections dialog after where cursor is present. + +View +---- +Collapses or expands all directories in the connection dialog. +Useful when working with a lot of connections sorted in different directories. + +Ascending +--------- +Works like a sort or a refresh to get connection in ascending order. +(Descending order is note supported yet) When you have been moving around in the tree of connections, +just click this item to refresh the list and get everything in ascending ordering. + +Configuration +============= + +.. figure:: /images/connections_main.png + +Config dialog to setup the connection specific properties. +This includes inheritance from other items before the item and more. +Details below is about how to work with this dialog to get the most out of connections and configuration. + +Menu Items +---------- + +.. figure:: /images/config_top_bar.png + +- **Red** - Sort values Categories or Alphabetical +- **Green** - Show Properties, Inheritance values +- **Blue** - Connection icon +- **Yellow** - Host status (based on ICMP ping) + +Sort Values +----------- +Sorts the values in properties either by Categories or Alphabetically. + +- Categories sort - Shows values in categories with expanding options. +- Alphabetical sort - Expands everything and shows values in alphabetical order instead + +Icon +---- + +.. note:: + + Don't forget that mRemoteNG will save the change on exit auto unless you have unchecked this setting in options. + +The icon indicates the visual identifier for the connection. +Clicking the icon will let you set a different icon for the connection. + +Status +------ + +.. note:: + + In order for this to work you have to open up ICMP. On windows servers this is also disabled in windows firewall. + +Is a indicator that will glow red or green depending on the status of the host. +The status is based on ICMP ping to the host. + + +Creating a connection +===================== + +.. tip:: + + You can see an indicator in the properties window that is glowing green: + + .. figure:: /images/connections_status.png + + This icon does a ICMP ping on to check response from the server. If it glows green it indicates a connection response can be made using ping to the host. However this is turned off on windows by default. You have to enable ICMP and allow the firewall access for it. + + +Right click on the root item (the little blue globe named **Connections**) +in the Connections panel and select **New Connection**. + +.. figure:: /images/connections_rightclick_menu.png + +A new item shows up under the root item. You can give it a name now (or rename it later). +We'll just call this connection "Test" for the moment. + +.. figure:: /images/connections_test_item.png + +Now lets look at the config panel in the bottom left, just under the connections panel. +As you may notice this is where you configure all the properties of connections and folders. + +.. figure:: /images/connections_config.png + +Fill in the necessary properties and you have just created your first connection! +You can now connect to the server with a simple double-click on the "Test"-connection! + +Opening and Closing Connections +=============================== + +.. note:: + + If the connecting fails, the notifications panel will pop up and show an error message describing the problem. + +There are multiple ways to open a connection in mRemoteNG, +but the easiest way is to double click the connection in the Connections panel. +If you double click the connection you will notice that the connection is going +to try and open in a new panel called "General" and under a tab called "Test". +If all goes well you should see the remote desktop without any problems. + +.. figure:: /images/connections_open.png + +To close the connection you can do any of the following: + +- Log off in the start menu (Closes the connection and logs you out completely from RDP) +- Close the panel with the (Which leaves your session active on server but closes connection in mRemoteNG) +- Close the connection tab with (Also keeps your login active on server but closes RDP connection in mRemoteNG) +- Double click the connection tab (Same as above where the connection is active on server but closes RDP connection in mRemoteNG) diff --git a/mRemoteV1/Documentation/user_interface/external_tools.rst b/mRemoteV1/Documentation/user_interface/external_tools.rst new file mode 100644 index 00000000..c9bd34e4 --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/external_tools.rst @@ -0,0 +1,198 @@ +.. _external_tools: + +************** +External Tools +************** + +External Tools can help you get things done that can't be done in mRemoteNG. + +For example you can: + +- Start a command +- Launch your favorite FTP tool + +This might not 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 start your apps. + +But from within 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``. + +Main UI +======= +The below image will show the main UI of *External Tools*. You may find the interface a bit confusing in the beginning but +we will explain the various items in more details below. + +:Menu: :menuselection:`Tools --> External Tools` + +.. figure:: /images/external_tools_main_ui_01.png + + External Tools open with one new entry + + Toolbar (red), Tools/Items List (blue), External Tool Properties (green) + +Toolbar +------- + +.. figure:: /images/external_tools_toolbar_01.png + + External Tools - Toolbar + +New ``Shift-F4`` + Create a new external tool. + +Delete ``Del`` + Delete selected tool item in list. + +Launch + Run the current selected tool on currently selected connection. + +.. hint:: + + All items can be accessed with right click menu and with a keyboard shortcut except for the Launch action. + +Tools/Items List +---------------- + +.. figure:: /images/external_tools_tools_list_01.png + + External Tools - Tools/Items list + +Basically shows the list of Tools/Items that you have created with the arguments and options. + +External Tool Properties +------------------------ + +.. figure:: /images/external_tools_external_tool_properties_01.png + + External Tools - External Tool Properties + +Is where you do most of the work to setup the Tool/Item for External Tools. We will explain each item further down this page. + +Display Name + Name of the tool, this can be any type of name. + + **For example:** + + :code:`Open in FileZilla`, :code:`FileZilla`, :code:`Traceroute` + +Filename + Application/Command to run. + + **For example:** + + :code:`cmd`, :code:`powershell`, :code:`C:\WINDOWS\system32\compmgmt.msc`, + :code:`C:\Program Files(x86)\FileZilla FTP Client\filezilla.exe` + +Arguments + Sometimes also called switches and parameters. This is where you tell the application in the previous (filename) input what to run. + And also which variables from mRemoteNG to use for the arguments. + + **For Example:** + + :code:`sftp://%USERNAME%:%PASSWORD%@%HOSTNAME%:%PORT%`, :code:`/K tracert %HOSTNAME%`, :code:`-NoExit tracert %HOSTNAME%` + +Working directory + From where should this Tool/Item be ran. + +Variables +========= + +Variables and arguments can be used to tell the external tool what to do. + +This is the list of variables supported by mRemoteNG: + +- %NAME% +- %HOSTNAME% +- %PORT% +- %USERNAME% +- %PASSWORD% +- %DOMAIN% +- %DESCRIPTION% +- %MACADDRESS% +- %USERFIELD% + +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. + +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. + +Rules for variables +------------------- +- Variables always refer to the currently selected connection. +- Variable names are case-insensitive. +- Variables can be used in both the Filename and Arguments fields. + + +Special Character Escaping +========================== +Expanded variables will be escaped using the rules below. There are two levels of escaping that are done. + +1. Is escaping for standard argument splitting (C/C++ argv, CommandLineToArgvW, etc) +2. Is escaping shell metacharacters for ShellExecute. + +Argument splitting escaping +--------------------------- + +- Each quotation mark will be escaped by a backslash +- One or more backslashes (\\) followed by a quotation mark ("): + - Each backslash will be escaped by another backslash + - The quotation mark will be escaped by a backslash + - If the connection's user field contains ``"This"`` is a ``\"test\"`` + - Then %USERFIELD% is replaced with ``\"This\"`` is a ``\\\"test\\\"`` +- A variable name followed by a quotation mark (for example, %USERFIELD%") with a value ending in one or more backslashes: + - Each backslash will be escaped by another backslash + - Example: + - If the connection's user field contains ``c:\Example\`` + - Then "%USERFIELD%" is replaced with ``"c:\Example\\"`` + +To disable argument splitting escaping for a variable, precede its name with a minus (-) sign. For example: %-USERFIELD% + +Shell metacharacter escaping +---------------------------- + +- The shell metacharacters are ( ) % ! ^ " < > & | +- Each shell metacharacter will be escaped by a caret (^) + +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. + +Only variables that have been expanded will be escaped. It is up to you to escape the rest of the arguments. + + +Variable Examples +================= + ++-------------------+----------------+------------------------+ +| Arguments | User Field | Result | ++===================+================+========================+ +| %USERFIELD% | "Example" Text | | ++-------------------+----------------+------------------------+ +| %-USERFIELD% | "Example" Text | | ++-------------------+----------------+------------------------+ +| %!USERFIELD% | "Example" Text | | ++-------------------+----------------+------------------------+ +| ^%USERFIELD^% | "Example" Text | | ++-------------------+----------------+------------------------+ +| ^^%USERFIELD^^% | "Example" Text | | ++-------------------+----------------+------------------------+ +| -d "%USERFIELD%" | c:\\Example\\ | | ++-------------------+----------------+------------------------+ +| -d "%-USERFIELD%" | c:\\Example\\ | | ++-------------------+----------------+------------------------+ +| -d "%USERFIELD%" | Left & Right | | ++-------------------+----------------+------------------------+ +| -d "%!USERFIELD%" | Left & Right | | ++-------------------+----------------+------------------------+ +| %WINDIR% | N/A | | ++-------------------+----------------+------------------------+ +| \\%WINDIR\\% | N/A | | ++-------------------+----------------+------------------------+ +| \\^%WINDIR\\^% | N/A | | ++-------------------+----------------+------------------------+ +| \\%WINDIR\\% | N/A | | ++-------------------+----------------+------------------------+ diff --git a/mRemoteV1/Documentation/user_interface/import_export.rst b/mRemoteV1/Documentation/user_interface/import_export.rst new file mode 100644 index 00000000..58b3463d --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/import_export.rst @@ -0,0 +1,76 @@ +************* +Import/Export +************* + +You can import or export your connections to mRemoteNG. Imports can be done in various +different ways. See below for more information. + +Import +====== + +Import from File +---------------- +Opens a normal file load dialog to open a exported xml or csv file for mRemoteNG. +See Export to file further down this page for information on exporting your connections. + +Import from Active Directory +---------------------------- +.. TODO: Needs even more information and testing (new image with a actual import of server from AD) + +This option can be used to import computers from a specific OU from you Arctive Directory. + +.. figure:: /images/import_from_active_directory.png + + Import from Active Directory dialog + +#. Go to: :menuselection:`File --> Import --> Import from Active Directory` +#. Choose the domain to check for computers available + +.. note:: Check the **Import sub OUs** checkbox if you want to import OUs recursively. + +Import from Port Scan +--------------------- +This option opens a dialog to import connections from a port scan. +Both network and port range can be specified. + +.. important:: Port Scan uses nmap to scan the ports. Be carefull on how you scan your network, as this can be considered a brute force attack. + + +.. figure:: /images/import_from_port_scan.png + + Import from Port Scan dialog + +- **First IP** - Start of ip to scan from +- **Last IP** - Stop of ip to scan to +- **First Port** (Optional) - Start port to scan from +- **Last Port** (Optional) - Stop port to scan to +- **Timeout [seconds]** - Seconds to wait until continuing scan + +Once the scan is done you can select connections to import with some options on the lower part of the dialog: + +- **Protocol to import** - Which protocol to use for the import of the connection(s) + +Export to file +============== +Here you can export your settings to a file to share or backup. +The dialog shown below is the dialog of which you chose the options to export. + +.. figure:: /images/import_export_dialog.png + + Export to file dialog example + +Export options: +--------------- +Here is a detailed explanation of the export dialog. + +- **Filename** - The output filename for which to save the export +- **File Format** - Currently supports xml and comma seperated csv output file format +- **Export Items** - Options to what you want to save + - **Export everything** - Will export all the connections + - **Export the currently selected folder** *[nameoffolder]* - Is used to only export all connections + in the folder selected. Note! the *[nameoffolder]* is the name to which you have selected in the connection tree. + - **Export the currently selected connection** *[nameofconnection]* - Same as before with folder but uses the currently + selected connection for export. +- **Export Properties** - Properties of the specific connections to export + +.. note:: Options do change based on what is selected in the connection tree. You can try this out by right clicking on a folder and selecting **Export to file** on a connection to understand more diff --git a/mRemoteV1/Documentation/user_interface/main_window.rst b/mRemoteV1/Documentation/user_interface/main_window.rst new file mode 100644 index 00000000..d556571a --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/main_window.rst @@ -0,0 +1,55 @@ +*********** +Main Window +*********** +After launching mRemoteNG for the first time you will be see +the main interface window looking similar to what is being shown below. + +.. figure:: /images/mremoteng_main_ui.png + + mRemoteNG 1.77 first launch + +In the next part we will start to explore the interface of mRemoteNG. + + +Default Screen +============== +The default screen of mRemoteNG + +- Menubar - Main menu, Quick Connect +- Sidebar - Connections, Config +- Work area - Remote Connections +- Footer - Notifications + +.. figure:: /images/mremoteng_main_ui_connect_win_server.png + + mRemoteNG default Screen, RDP to a Windows 2012 R2 host + +The default interface is very basic in that it will show the most important +part to get started with mRemoteNG. We will explain more details of the interface +further on this document. + + +Customization +============= +.. seealso:: + + :doc:`/keyboard_shortcuts` - For keybindings in mRemoteNG + +mRemoteNG supports themes and keyboard shortcuts. + +.. note:: + + Keyboard shortcuts can be overwritten when a connection is active. Since the connection might use the same shortcut + +The mRemoteNG shortcuts will work when the interface is in focus but not so often when the remote connection is active. + +Themes +------ +These can be chosen from the :menuselection:`Tools --> Options`. +There are also possibilities to create your own themes inside the settings for themes. +By default mRemoteNG has turned off the themes but they are easily +enabled by choosing another theme rather then the default (vs2015light) one. + +.. warning:: + + In order for the theme to load, mRemoteNG needs to be restarted diff --git a/mRemoteV1/Documentation/user_interface/menus.rst b/mRemoteV1/Documentation/user_interface/menus.rst new file mode 100644 index 00000000..7cf4807e --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/menus.rst @@ -0,0 +1,126 @@ +***** +Menus +***** + +.. figure:: /images/menus_main_menu.png + +In this section we are going to explain the menus located in mRemoteNG. The above screenshot shows the main menu with colors. + +- **Red** - Anchor to move menu around the interface +- **Green** - The menu items + +File Menu +========= +Contains standard commands for the application. + +.. list-table:: + :widths: 30 70 + :header-rows: 1 + + * - Item + - Description + * - New Connection + - Will add a new connection to the Connections dialog after where the cursor is positioned. + * - New Folder + - Add a new folder in the Connections dialog tree where the cursor is positioned. + * - New Connection File + - Create a new connection file. Dialog will come up asking about: filename and where to place the new connection file. + * - Open Connection File + - Open a connection file. Dialog comes up asking about which file to open. For security reasons, this also shows a dialog to ask if you want to save the current file before continuing. + * - Save Connection File + - Saves the currently opened connection file. If you are using a SQL server connection instead it will send a save to the SQL server. + * - Save Connection File As... + - Saves the current connection file to a specific location on disk. + * - Delete... + - Delete currently selected item in connections dialog. + * - Rename + - Rename current selected item in connections dialog. + * - Duplicate + - Duplicate current selected item in connections dialog. + * - Reconnect All Open Connections + - Sends a reconnect to all the open connections in mRemoteNG. + * - Exit + - Exit mRemoteNG application + +View Menu +========= +Menu for additional dialogs for mRemoteNG. + +.. list-table:: + :widths: 30 70 + :header-rows: 1 + + * - Item + - Description + * - Add Connection Panel + - Create a new and empty panel. + * - Connection Panels + - Jump to panel. + * - Connections + - Show connections dialog + * - Config + - Show config dialog + * - Notifications + - Show notifications dialog + * - Screenshots + - Open Screenshots Manager (See: :ref:`screenshot_manager`) + * - Jump To + - Place focus on "Connections", "Config" or "Notifications" panel based on selection. + * - Reset layout + - Resets the layout of panels and dialogs. Warning will come up about the action before continuing. + * - Lock toolbar positions + - Locks the toolbars at the top of the application so you do not move around items by mistake. + * - Quick Connect Toolbar + - Show quick connect toolbar + * - External Tools Toolbar + - Show external tools toolbar + * - Multi SSH Toolbar + - Show multi ssh toolbar + * - Fullscreen + - Fullscreen mRemoteNG (will not fullscreen connection window but only the mRemoteNG application) + +Tools Menu +========== +Additional tools that can be used and triggered in mRemoteNG. + +.. list-table:: + :widths: 30 70 + :header-rows: 1 + + * - Item + - Description + * - SSH File Transfer + - Show SSH file transer panel (See: :ref:`ssh_file_transfer`) + * - External Tools + - Show external tools dialog (See: :ref:`external_tools`) + * - Port Scan + - Show port scan dialog (See: :ref:`port_scan`) + * - Components Check + - Show installed components requirements test + * - Options + - Opens mRemoteNG global settings and options dialog + +Help Menu +========= +Get more information for the application. + +.. list-table:: + :widths: 30 70 + :header-rows: 1 + + * - Item + - Description + * - mRemoteNG Help + - Show help panel (this panel) + * - Website + - Go to mRemoteNG website + * - Donate + - Go to mRemoteNG donation page + * - Support Forum + - Go to mRemoteNG suport forum + * - Report a Bug + - Go to github page to report a bug + * - Check for Updates + - Opens dialog to check for any updates of mRemoteNG + * - About + - Open about dialog for mRemoteNG (Shows contributors, changelog and more) diff --git a/mRemoteV1/Documentation/user_interface/notifications.rst b/mRemoteV1/Documentation/user_interface/notifications.rst new file mode 100644 index 00000000..d3946303 --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/notifications.rst @@ -0,0 +1,43 @@ +************* +Notifications +************* + +The notifications panel contains any errors or informational messages that mRemoteNG triggers. +Some example errors can be if there is a problem to connect, information on lost connection and so much more. +Notification settings can be found in (Tools > Options > Notifications) +below we will explain what can be set and how they do affect for various troubleshooting. + +Notifications general settings +============================== + +.. tip:: + + If you dont want the panel to show at all. Then unmark all options inSwitch to Notification panel on. Then the panel will not come up automatically. + +.. figure:: /images/notifications_panel.png + +This will tell mRemoteNG what type of messages and the level of messages to send to the panel. It does not the level for the log that mRemoteNG has but only for panel output. + +There is also 2 different options mentioned below: + +- Show these message types - Level of messages to show in panel. (default: Warnings and Errors) +- Switch to Notifications panel on - If interface should switch to the panel when a level of message occurs (default: all enabled) + +Logging settings +================ +Here you define the logging of messages. +That is a continues log which can be used to backtrack any error that has occurred. +Good when for example reporting issues about mRemoteNG or to check more details about problems. + +Log path - Choose where the log should recide (default: Log to application directory) +Log these message types - Level of logging to logfile (default: Informations, Warnings, Errors) + +Popups settings +=============== + +.. figure:: /images/notifications_popup.png + +When items are selected here you will recieve a popup on the error that occurrs +based on level chosen in settings here. +This can be useful if you do not want to use the notification area +and only get a popup if error occurs. (**default**: all off) diff --git a/mRemoteV1/Documentation/user_interface/options.rst b/mRemoteV1/Documentation/user_interface/options.rst new file mode 100644 index 00000000..7b9d2db1 --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/options.rst @@ -0,0 +1,242 @@ +******* +Options +******* + +Options window which can also be named settings is the window +where you can personalize your options for all of mRemoteNG. +This includes how to set logging, credentials and so on. +Continue reading for the details of the different options here. + +Startup/Exit +============ +Options below are for the various settings for Startup/Exit of mRemoteNG. + +.. list-table:: + :widths: 30 70 70 + :header-rows: 1 + + * - Option + - Default + - Description + * - Save connection on exit + - On + - Save to connection file/database on exit of mRemoteNG + * - Reconnect to previously opened sessions on startup + - Off + - This option will allow you to open the connection from which you where connected to after last exit of application + * - Allow only a single instance of the application (mRemoteNG restart required) + - Off + - Enforces and makes sure only a single instance of mRemoteNG is running on the computer + * - Check proper installation of components at startup + - Off + - Opens the panel for Components Check on every startup + +Appearance +========== +Various options for mRemoteNG appearance. + +.. list-table:: + :widths: 30 70 70 + :header-rows: 1 + + * - Option + - Default + - Description + * - Language + - (Automatically Detect) + - Which language to use for the interface of mRemoteNG + * - Show description tooltips in connection tree + - Off + - Holding mouse over a item in connection tree will show a popout from mouse with information + * - Show full connections file path in window title + - Off + - Adds the complete path to the title of mRemoteNG to where the connection file is located + * - Always show notification area icon + - Off + - Adds mRemoteNG to the taskbar in the OS + * - Minimize to notification area + - Off + - Will place mRemoteNG in taskbar on minimize + +Tabs & Panels +============= +Various settings for how tabs & panels should work in mRemoteNG. + +.. list-table:: + :widths: 30 70 70 + :header-rows: 1 + + * - Option + - Default + - Description + * - Always show panel tabs + - Off + - Will always show the tabs & panels in mRemoteNG + * - Open new tab to the right of the currently selected tab + - On + - When active then open next tab on the right of the active selection in mRemoteNG. Turn this off and next tab will open the next connection at the end of all tabs + * - Show logon information on tab names + - Off + - Show your login in the connection tab + * - Show protocols on tab names + - Off + - When active then in the tab show what protocol is used for the connection + * - Identify quick connect tabs by adding the prefix "Quick:" + - Off + - When active shows Quick: before the connection name in the tab connection to easier identify what is a quick connection and what is a non quick connection + * - Double click on tab closes it + - On + - When double clicking a tab it will close the connection but does not log you out from the server. The connection in this case is active on the destination server + * - Always show panel selection dialog when opening connections + - Off + - Option to allow you to always select what panel to place the connection on. If this is off it will create a General panel where the connection is placed or use the connections set panel from the connection options + * - Create a empty panel when mRemoteNG starts + - Off + - On startup if this is active mRemoteNG will create a panel mentioned under Panel Name + +Connections +=========== +.. list-table:: + :widths: 30 70 70 + :header-rows: 1 + + * - Option + - Default + - Description + * - Single click on connections opens it + - Off + - In connection tree when this is active will try to connect on single click. By default this is turned off to use double click to open connection. + * - Single click on opened connection in Connection Tree switches to the opened Connection Tab + - Off + - Allows you to single click on a active connection in the connection tree to go to that open connection in the tabs faster. + * - Set hostname like display name when creating or renaming connections + - Off + - Will make mRemoteNG try to use the remote host hostname to set the title of the tab in mRemoteNG. + * - Save connections after every exit + - On + - When active mRemoteNG will save the connection tree to the active config after every exit. If inactive then you have to save using **File > Save Connection File** or keyboard shortcut Ctrl+S + * - Filter search matches in connection tree + - Off + - Allows you to filter out the connections to which does not match your filter search in the connection tree. If not active the search will only select the filter to which you do search. + * - RDP Reconnect count + - 5 + - Value in seconds + * - RDP Connection Timeout + - 20 + - Value in seconds + * - Auto save time in minutes (0 means disabled) + - 0 + - Value in minutes + * - When closing connections + - Warn me when closing connections + - Various options of how mRemoteNG should act when you close connections. The different options are listed below: + :: + + - Warn me when closing connections + - Warn me only when closing multiple connections + - Warn me only when exiting mRemoteNG + - Do not warn me when closing connections + By default a warning will come up on closing a connection. Change this value based on your prefered settings. + +Credentials +=========== +Options for credentials in mRemoteNG. The main purpose here is that when you have empty username, password or domain field then use below information. + +.. list-table:: + :widths: 30 70 70 + :header-rows: 1 + + * - Option + - Default + - Description + * - None + - On + - Use no specific settings on login + * - My Current credentials (Windows logon information) + - Off + - This option will use the logon information for the OS. This is useful if you are in a domain that uses specific credentials and want to login to servers with those credentials + * - The following + - Off + - Use one or two of the options below for the empty login or all of them. For example if you have a different domain that you login to the servers with + +SQL Server +========== + +.. note:: + + To understand more about SQL Server connection please see here: :ref:`sql_configuration` + +.. list-table:: + :widths: 30 70 70 + :header-rows: 1 + + * - Option + - Default + - Description + * - Use SQL Server to load & save connections + - Off + - Enable to fetch connections from a database. + +Updates +======= +Options for how mRemoteNG should check for updates from the website. + +.. list-table:: + :widths: 30 70 70 + :header-rows: 1 + + * - Option + - Default + - Description + * - Check for updates at startup + - On (Every 14 days) + - Here you can choose how often mRemoteNG checks for updates. Standard is every 14 days + * - Release Channel + - Stable + - The main channel to use for mRemoteNG. Note that the channels are described under the selection. Stable is suggested for normal usage but its always good to get feedback on upcoming releases + * - Use a proxy server to connect + - Off + - Proxy to connect through to check for updates. This is not a proxy connection for when you connect to a server but more to check for updates + +Theme +===== +This is not enabled by default but can be used inside mRemoteNG. +To enable themes you have to first enable it in the checkbox at the bottom of the options. +Then restart mRemoteNG in order for it to work. + +.. note:: + + Default theme is: vs2015light + +.. note:: + + To know more about themes and how to create your own See Here + +Advanced +======== + +.. list-table:: + :widths: 30 70 70 + :header-rows: 1 + + * - Option + - Default + - Description + * - Automatically get session information + - Off + - + * - Automatically try to reconnect when disconnected from server (RDP & ICA only) + - Off + - + * - Use UTF8 encoding for RDP "Load Balance info" property + - Off + - + * - Use custom PuTTY path + - Off + - + * - To configure PuTTY sessions click this button + - Launch PuTTY + - Will launch the putty agent so you can edit the sessions + * - Maximum PuTTY and integrated external tools wait time + - 2 seconds + - diff --git a/mRemoteV1/Documentation/user_interface/panels.rst b/mRemoteV1/Documentation/user_interface/panels.rst new file mode 100644 index 00000000..96ddcdb3 --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/panels.rst @@ -0,0 +1,62 @@ +****** +Panels +****** + +mRemoteNG is using tabs and panels to stay organized but also to create +a better view of all multitasking that is being done inside the application. + + +Explanation +============ + +Panels are used to organize tabbed conections. This might seem a bit confusing +at first glance but is a great way to stay organized. Below is a few examples +of how to use panels to give you a hands on better view of them: + +- *Test and Production* - You can add 2 panels where you have test servers in one panel and production connections in the other + +- *Datacenters* - Maybe you want to divide panels into different datacenters + +- *Temp project* - To see all servers you work on for a temporary project + +- *Home vs Work* - Or divide them up into where home connections are and work connections are located + +As you can see the panels organization do have benefits to it. +Below you will see a screenshot of a organized view where Domain A +is in panel 1 and Domain B is in panel 2. + +.. figure:: /images/user_interface_panels_01.png + + Example two panels created with Domain A and Domain B + +The function of a panel works as a sort of workspace. + + +Creating Panels +=============== + +Usually panels are created using connections and folders to stay organized +automatic when making connections. However you can also create panels manually. + +.. figure:: /images/user_interface_panels_02.png + + Menu items for panels under **View** + +Creating manual panels will make you able to organize tabs manually in mRemoteNG. +To then open a connection to the new panel, right click on the connection and use +:menuselection:`Connect (with options) --> Choose panel before connecting` + +The other option in the menu name **Connection Panels** will list all panels +that are available in mRemoteNG window. + + +More Options +============ +If you right click on the panel there are a few more options that can be set: + +.. figure:: /images/user_interface_panels_03.png + + Right click context menu for panel + +- **Rename** - Rename the panel +- **Send to...** - Send the whole panel to monitor/screen *[number]*. Note this is not a real window but a detachable panel. If you double click the title then the panel will go back to mRemoteNG window and not fullscreen the window. diff --git a/mRemoteV1/Documentation/user_interface/port_scan.rst b/mRemoteV1/Documentation/user_interface/port_scan.rst new file mode 100644 index 00000000..b7476585 --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/port_scan.rst @@ -0,0 +1,20 @@ +.. _port_scan: + +********* +Port Scan +********* + +The Port Scan feature (under Tools > Port Scan) is similar to a nmap port scan. +It will scan a range of IP addresses and to determine if specific mRemoteNG supported protocols are active. Hosts can then be bulk imported into mRemoteNG. + +.. tip:: + + If you leave this at the default of 0 & 0, the test will be for the default protocol ports that mRemoteNG supports. + +- Start the Port Scan feature by clicking Tools > Port Scan in the menu bar. +- Input your Start IP and End IP of the range you'd like to scan. +- Enter the Start Port and End Port that mRemoteNG should test for. +- Click Scan +- Wait. Possibly a long time. +- The table will populate, and eventually you'll get a notification that the scan has completed. Alternatively, you can press Stop to end the scan at any time. +- Change the dropdown to the protocol you'd like to import and click Import. \ No newline at end of file diff --git a/mRemoteV1/Documentation/user_interface/quick_connect.rst b/mRemoteV1/Documentation/user_interface/quick_connect.rst new file mode 100644 index 00000000..fa819597 --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/quick_connect.rst @@ -0,0 +1,26 @@ +************* +Quick Connect +************* + +The Quick Connect functionality of mRemoteNG allows you to quickly connect to a remote host using a variety of network protocols. + +Prerequisites +============= +- Knowledge of a DNS host name or IP address +- Knowledge of an appropriate protocol to communicate with remote host +- A predefined mRemoteNG connection + +Using QuickConnect +================== +To use Quick Connect, ensure the Quick Connect toolbar is enabled by selecting View and then Quick Connect Toolbar. +Next, input a DNS host name or IP address into the box labeled "Connect". This box will also save previous entries during your session. + +.. figure:: /images/quick_connect_01.png + +.. figure:: /images/quick_connect_02.png + +Select the appropriate network protocol by clicking the arrow next to the Connect box. + +.. figure:: /images/quick_connect_03.png + +If you wish to use an existing connection, select the globe icon next to the protocol button and select the appropriate connection. \ No newline at end of file diff --git a/mRemoteV1/Documentation/user_interface/screenshot_manager.rst b/mRemoteV1/Documentation/user_interface/screenshot_manager.rst new file mode 100644 index 00000000..a4af8ed5 --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/screenshot_manager.rst @@ -0,0 +1,35 @@ +.. _screenshot_manager: + +****************** +Screenshot Manager +****************** + +The screenshot manager is a panel and tool that can be used to organize +and take screenshots inside mRemoteNG. + +Take a screenshot +================= +To take a screenshot of a instance its as easy as to right click on +the connection tab and press Screenshot and it will open the screenshot manager. + +.. figure:: /images/screenshot_manager_rightclick_menu.png +.. figure:: /images/screenshot_manager_overview.png + +On the first image you can see the right click menu of the connection tab. +Clicking the screenshot there will allow mRemoteNG to create a screenshot. + +The second image is where the screenshots are stored in mRemoteNG. +Here you can store and then decide what to do with the images after you are done taking screenshots. + +Editing +======= +The manager is a simple tool for saving and deleting screenshots. +If you need to do more with the screenshots then the suggestion is to open them in a third party app. +Here is what the manager allows you to do: + +- Save +- Save All +- Delete +- Delete All + +Once you press save, a window to save the files will come up where you want to save the screenshots. diff --git a/mRemoteV1/Documentation/user_interface/ssh_file_transfer.rst b/mRemoteV1/Documentation/user_interface/ssh_file_transfer.rst new file mode 100644 index 00000000..27346f96 --- /dev/null +++ b/mRemoteV1/Documentation/user_interface/ssh_file_transfer.rst @@ -0,0 +1,67 @@ +.. _ssh_file_transfer: + +***************** +SSH File Transfer +***************** + +SSH File Transfer functionality allows you to securely transfer files to a +remote host over an encrypted tunnel using either **SFTP** or **SCP**. + +Prerequisites +============= +- SSH File Transfer requires an SSH service to listen on an available network port (default 22) on a remote host. +- A username and password must be supplied to connect with the remote host. +- The remote host must have a writeable folder on its filesystem to place the transferred files. + +Configuration Options +===================== +- **Host** - The remote host you connect to. Can be DNS name or IP address. +- **Port** - Remote network port listening for SSH/SFTP/SCP traffic. +- **User** - Username for account to log on to remote host. +- **Password** - Password for account to log on to remote host. +- **Protocol** - Choice of SCP or SFTP protocol used for communication. +- **Local File** - Path of file to transfer from local host. +- **Remote File** - Path where file will be transferred on remote host. (e.g. "/home/John/Documents") + +Using SSH File Transfer +======================= +Begin by going to :menuselection:`Tools --> SSH File Transfer`. + +The tool will open a new panel inside mRemoteNG which allows you to configure +some options for the SSH File Transfer. Each option is needed in order to +complete a file transfer over SSH. + +.. figure:: /images/ssh_file_transfer_01.png + + Main SSH File Transfer panel + +- To populate the **Local File** option, select the **Browse** button and navigate to + the desired file on the local filesystem. + +- To populate the **Remote File** option, manually type desired filesystem path, + including the desired file name. + +Once all options are populated, select **Transfer** and the progress bar at +the bottom of the window will show the progress of the transfer. + +Troubleshooting SSH File Transfer +================================= +To troubleshoot issues with SSH File Transfer, consult the log under +:code:`%AppData%\mRemoteNG\mRemoteNG.log`. +This log provides verbose information about successful and failed connections. + +Common Issues +------------- +ERROR - Please fill all fields + This issue was likely encountered because you did not provide all + information needed to establish the connection. + +ERROR- SSH background transfer failed! + This issue was likely encountered due to a permissions issue. + Ensure you have appropriate access to write to the specified Remote File. + +System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it + This issue was likely encountered because the local host could not contact the remote + host specified on the remote port specified. + The issue may be caused by improperly configured firewall rules or a + SSH service not listening properly on the remote host. diff --git a/mRemoteV1/Properties/AssemblyInfo.cs b/mRemoteV1/Properties/AssemblyInfo.cs index 2f15b6a7..a78739d7 100644 --- a/mRemoteV1/Properties/AssemblyInfo.cs +++ b/mRemoteV1/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Resources; using System.Runtime.InteropServices; @@ -11,9 +11,9 @@ using System.Runtime.InteropServices; [assembly: AssemblyTitle("mRemoteNG")] [assembly: AssemblyDescription("Multi-protocol remote connections manager")] -[assembly: AssemblyCompany("")] +[assembly: AssemblyCompany("The mRemoteNG Team")] [assembly: AssemblyProduct("mRemoteNG")] -[assembly: AssemblyCopyright("Copyright © 2019 mRemoteNG Dev Team; 2010-2013 Riley McArdle; 2007-2009 Felix Deimel")] +[assembly: AssemblyCopyright("2019 mRemoteNG Dev Team, 2010-2013 Riley McArdle, 2007-2009 Felix Deimel")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] diff --git a/mRemoteV1/Resources/Fonts/HandelGotD.ttf b/mRemoteV1/Resources/Fonts/HandelGotD.ttf deleted file mode 100644 index 024244664d342fbc0411e3095e196d4399b99f2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28288 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 Zss;*0yKcWM{qa?)qeV%BZSX&~{4b#2>TLi3 diff --git a/mRemoteV1/Resources/Fonts/HandelGotDLig.ttf b/mRemoteV1/Resources/Fonts/HandelGotDLig.ttf deleted file mode 100644 index 56e05894f18d598a819db72ce38d9ec208d3deb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52656 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%0Ak7oyVdc0xv~nUQkVS*7phBUQbJcCLJ{ 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
k)1}!mUTR z^$52f;npMEdW2h#GTc_P;v1xVG6VF%&s&7e`o#w)uY+d&;)9?2R4ux35;QZ$TA{Cn zx3h%Jys=j1jkQ={6E^ckKRmnyn$gn_59ie;iPhc?NfO>$_H9NHv@Hp!t)a%htr+9ZcI z$)Qbh*e7kePug^!wBtk6#m}CHnY>YLX50pu&w|Y9K)2-sJ%TMl86kXtRF{L9Sl|Ps z>I-IbU+(~^;z74{8R!vg5y}YRgQVI7W^$+QAgR*8Y?Th?Q0_re`9Y6hi%>=gx1(uo zU@Gm~P7d@gG`|BZ!;-h7U8liyj4$o9=2@@;>(owrnV2f;PoNtf+R52qi{ua?e3;y} zftj5jgQgvskJFBaX~*|L(~gHpWze+aVb;jo)Km14kzghx{!^qX2eVm&JcT?nL34ks zLt3gsTB<`@szX|;Lt3gsTB<`@szX|;Lt3gsTB<`@Dk3>V#BP{-z9YF0V(dml@`*@3 z5y^-9BiN0IYh~0>Y-H3?Yh=|>Yh~0>Y-H3?Yh|p{9 zBdxJ=5hVG0&{(;MSd55Rj3dbKQFTQ0>IkJjMcCMiBcfeLC7x9v@kb?w^)y!Hn8X~D znB!tej*BHZF1Z~S8**H1$Z@eD$Hj(l-;}am6l5~SJURO3Q$N;Y^lP?FaY=DA;%eh| z$9-s@ZQo?S$==2eQX?J99lv$1aXt_~G5((Tw-dG`{3-E*M1SJ0#3vHpOA05CPi{)K z`dr%QslHSD?(CP`@3MY3_j{xN?EW|Pe5(7-VRD+k`6W=mU@ zc1PNoLH!2#2kjcPZ_qP?iv}MYGH}Q@hrBhkXy{ABvWIOO_Wbai;lAO=M`Vt;X2c&x zt{HjnsA;3_8ujVunWOI>{kJjoV;)J*OkbCN{DQO#{(bC)V}CdH#MpPnHI3Ub?mOeY zKkn{vt>YdZf7OH`6UI)MI${2Vr4z27@MOk-jL{jBGUj9~&M3+#&$v8ebHGg&AK9MU)Eo;i?grFzApRRf&mL|ThPAX)tpOmURt zo?3Ktv1f5;aogh0a-F&PxvO(8$$cjGc(olVKm|b%k(`RO7%}IARr*pl)6|D9KmWLYiiv7Ma zudgZK3KN~(6F-#;wb>>~PaIL}yx|6aD40HD#>{CmX3XumCiJWzSZS$rR#72UqZ-wf z%Eegi<-N~zwUoGe#_2Hg0w1%5M&f2NI%M(9aXNFUW-yw*fK)-|C|(s{MHPZFkF}>s zRYsgoH4$&}jZ$-$fL_TzzJia_c6JDH@@jtqdub)(XYY-uo$ z4+!S#ES;?v=p4OJFVc&3u3n-q)=PDs&ezNMfS^DZ>LR^D7weU}M3?GSdbKXoYxG)O zuGg`N#|B-2FTRbsN?)Qc)tBkZwM)BkBwVe%x<>nSt@iUq>}DO%bvnq-0rh;V5Y`QR zoY17V=qvSAx>;}4+w^w*4Slu#roKk+(AVng^!54%{Vn}(`bK?|zFB`;e@EY z3%ju0rf+kFTqwmmn>L2L4^bhrq^pEv!y+_}z|3lxSf1-b?f2Mz~_v(A; ze!tN7=~msQ_v!ofe*J)cP(P#(=!3dlKdc|okLq9Q$MB4DNFUa}(og9BtADMZ)KBTB zb%%aNNA$D$H~P2wIsH5RpZbVCs-M@#^l|-yeo?=qU)I0ZC-h1EihfnUreFU`qyCS7 z>NoV8`jmc4zpYQ}cl5jZJ^jA^gZ`ublm4^*K>tPmRez}era#hW^jZC}{zQMO&*{(f zdHuQmLU(G*#tTd~n+?ApU-!?^Q19}1o!+ZF0asnZ6-}W=Z?!v+6l|(jc$wJ)V5BdV$#Ci-yFyO6eOp=gTjRaRiqc`kt*le#4G&MLp zp}IPkv$nau)*Ez^hd)&9Xb89(YVBLS;ZR&C=#6W!&QO#z6eSJy$}ZGR8j6xOMM;~Yq)oj@o4QG>T|S>T?5u`8RL5v(g3-JH z;)!qYdW;r0-A#djx6$aSseXNJ5-IA?Vt1e+DeU$6O#*LqqNi)fOKc3gs=alt@Mec_ zkkD0HLXa+EG|jdo-&rbJk>C&3_=En&=0v0Db^c&eL!!}0A?p)UNcj=h>g#Jl zle~2y(fWSfzoNa_8wmL8(L3i7X$$9)XakkX$ySir>_bxP^wybEpDt@+G`ers z56LW1eu=%1kVHDG{agIi-uOUht2gNLCN_78Jh7rHlu$ztF|tbVG=;G^o@U`$jF8Dq zc$Qz1qpikos|h4V^@FDF7d1OZLriP;ld^@}?P~CL^J{)2L)usyY7$Ggq(|+N^LxV1 zC88RM`CaTe^P{3El=$Sr9@50ZZkoat)g9N&|kyl2C2h zr=h{0)N{!ZZHqdWCmaeo++plxB4jQ)aIn#C`f_}%EBC2w3i@2(rn-QusnHqoVRkn= zJT8*O2i-CjV1+`Py+JHcVna=1)Ltisw#2MkGB&!QN#q#rE4I4pm$S}aO_|B$*cFvT zn645=+VKQyU4fctnpk8*Tz+G1LS0j!(O(~Ec2-E09cybt;b5G%vDVofji4RELFZEW z;q*jLOND2rC(1hg!qnWkT&nK$$;n;_JI-S19?n3tr>=>KA)%qmw5^F|)DS&YMo(Mi lOI-@?XvNsS*GH diff --git a/mRemoteV1/Resources/Help/Index.htm b/mRemoteV1/Resources/Help/Index.htm deleted file mode 100644 index d1df19dc..00000000 --- a/mRemoteV1/Resources/Help/Index.htm +++ /dev/null @@ -1,87 +0,0 @@ - - - - - mRemoteNG Help - - - -

mRemoteNG Help

-
-
    -
  • RDP
  • -
  • SSH
  • -
  • VNC
  • -
  • ICA
  • -
  • Telnet
  • -
  • RAW
  • -
  • RLogin
  • -
  • HTTP/S
  • -
-

-

Table of Contents

-
- -

Features

-
-

-

    -
  • Free and Open Source, released under the GPL
  • -
  • Organizing connections into panels and tabs
  • -
  • Multiple supported protocols (RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S)
  • -
  • Easy to organize and maintain list of connections
  • -
  • Inheritance makes it possible to store properties on folder basis and let the underlying connections inherit this info
  • -
  • Importing connections from Active Directory
  • -
  • Creating nested folder structures to categorize connections
  • -
  • "Quick Connect" feature to quickly open a connection without creating an entry
  • -
  • "Quick Search" feature to quickly find a connection while typing
  • -
  • Support for SCP/SFTP (SSH) file transfers
  • -
  • Assign icons to connections for quick identification
  • -
  • A screenshot manager to create screenshots of running connections
  • -
  • "Auto-Update" feature
  • -
  • Minimize to system tray
  • -
  • Fullscreen (Kiosk) mode
  • -
  • Assign global credentials to use when no information is provided on connection basis
  • -
  • Host Indication on each connection to show if host responds ti ping requests
  • -
-

- - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/MSSQLScript.txt b/mRemoteV1/Resources/Help/MSSQLScript.txt deleted file mode 100644 index dff03270..00000000 --- a/mRemoteV1/Resources/Help/MSSQLScript.txt +++ /dev/null @@ -1,151 +0,0 @@ -if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblCons]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) -drop table [dbo].[tblCons] -GO - -if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) -drop table [dbo].[tblRoot] -GO - -if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblUpdate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) -drop table [dbo].[tblUpdate] -GO - -CREATE TABLE [dbo].[tblCons] ( - [ID] [int] IDENTITY (1001, 1) NOT NULL , - [ConstantID] [varchar] (128) NULL , - [PositionID] [int] NOT NULL , - [ParentID] [varchar] (128) NULL , - [LastChange] [datetime] NOT NULL , - [Name] [varchar] (128) NOT NULL , - [Type] [varchar] (32) NOT NULL , - [Expanded] [bit] NOT NULL , - [Description] [varchar] (1024) NULL , - [Icon] [varchar] (128) NOT NULL , - [Panel] [varchar] (128) NOT NULL , - [Username] [varchar] (512) NULL , - [DomainName] [varchar] (512) NULL , - [Password] [varchar] (1024) NULL , - [Hostname] [varchar] (512) NULL , - [Protocol] [varchar] (32) NOT NULL , - [PuttySession] [varchar] (128) NULL , - [Port] [int] NOT NULL , - [ConnectToConsole] [bit] NOT NULL , - [UseCredSsp] [bit] NOT NULL , - [RenderingEngine] [varchar] (10) NULL , - [ICAEncryptionStrength] [varchar] (32) NOT NULL , - [RDPAuthenticationLevel] [varchar] (32) NOT NULL , - [RDPMinutesToIdleTimeout] [int] NOT NULL, - [RDPAlertIdleTimeout] [bit] NOT NULL, - [Colors] [varchar] (32) NOT NULL , - [Resolution] [varchar] (32) NOT NULL , - [DisplayWallpaper] [bit] NOT NULL , - [DisplayThemes] [bit] NOT NULL , - [EnableFontSmoothing] [bit] NOT NULL , - [EnableDesktopComposition] [bit] NOT NULL , - [CacheBitmaps] [bit] NOT NULL , - [RedirectDiskDrives] [bit] NOT NULL , - [RedirectPorts] [bit] NOT NULL , - [RedirectPrinters] [bit] NOT NULL , - [RedirectSmartCards] [bit] NOT NULL , - [RedirectSound] [varchar] (64) NOT NULL , - [SoundQuality] [varchar] (20) NOT NULL, - [RedirectAudioCapture] [bit] NOT NULL, - [RedirectKeys] [bit] NOT NULL , - [Connected] [bit] NOT NULL , - [PreExtApp] [varchar] (256) NULL , - [PostExtApp] [varchar] (256) NULL , - [MacAddress] [varchar] (32) NULL , - [UserField] [varchar] (256) NULL , - [ExtApp] [varchar] (256) NULL , - [VNCCompression] [varchar] (10) NULL , - [VNCEncoding] [varchar] (20) NULL , - [VNCAuthMode] [varchar] (10) NULL , - [VNCProxyType] [varchar] (20) NULL , - [VNCProxyIP] [varchar] (128) NULL , - [VNCProxyPort] [int] NULL , - [VNCProxyUsername] [varchar] (512) NULL , - [VNCProxyPassword] [varchar] (1024) NULL , - [VNCColors] [varchar] (10) NULL , - [VNCSmartSizeMode] [varchar] (20) NULL , - [VNCViewOnly] [bit] NOT NULL , - [RDGatewayUsageMethod] [varchar] (32) NOT NULL , - [RDGatewayHostname] [varchar] (512) NULL , - [RDGatewayUseConnectionCredentials] [varchar] (32) NOT NULL , - [RDGatewayUsername] [varchar] (512) NULL , - [RDGatewayPassword] [varchar] (1024) NULL , - [RDGatewayDomain] [varchar] (512) NULL , - [InheritCacheBitmaps] [bit] NOT NULL , - [InheritColors] [bit] NOT NULL , - [InheritDescription] [bit] NOT NULL , - [InheritDisplayThemes] [bit] NOT NULL , - [InheritDisplayWallpaper] [bit] NOT NULL , - [InheritEnableFontSmoothing] [bit] NOT NULL , - [InheritEnableDesktopComposition] [bit] NOT NULL , - [InheritDomain] [bit] NOT NULL , - [InheritIcon] [bit] NOT NULL , - [InheritPanel] [bit] NOT NULL , - [InheritPassword] [bit] NOT NULL , - [InheritPort] [bit] NOT NULL , - [InheritProtocol] [bit] NOT NULL , - [InheritPuttySession] [bit] NOT NULL , - [InheritRedirectDiskDrives] [bit] NOT NULL , - [InheritRedirectKeys] [bit] NOT NULL , - [InheritRedirectPorts] [bit] NOT NULL , - [InheritRedirectPrinters] [bit] NOT NULL , - [InheritRedirectSmartCards] [bit] NOT NULL , - [InheritRedirectSound] [bit] NOT NULL , - [InheritSoundQuality] [bit] NOT NULL, - [InheritRedirectAudioCapture] [bit] NOT NULL, - [InheritResolution] [bit] NOT NULL , - [InheritUseConsoleSession] [bit] NOT NULL , - [InheritUseCredSsp] [bit] NOT NULL , - [InheritRenderingEngine] [bit] NOT NULL , - [InheritICAEncryptionStrength] [bit] NOT NULL , - [InheritRDPAuthenticationLevel] [bit] NOT NULL , - [InheritRDPMinutesToIdleTimeout] [bit] NOT NULL, - [InheritRDPAlertIdleTimeout] [bit] NOT NULL, - [InheritUsername] [bit] NOT NULL , - [InheritPreExtApp] [bit] NOT NULL , - [InheritPostExtApp] [bit] NOT NULL , - [InheritMacAddress] [bit] NOT NULL , - [InheritUserField] [bit] NOT NULL , - [InheritExtApp] [bit] NOT NULL , - [InheritVNCCompression] [bit] NOT NULL, - [InheritVNCEncoding] [bit] NOT NULL , - [InheritVNCAuthMode] [bit] NOT NULL , - [InheritVNCProxyType] [bit] NOT NULL , - [InheritVNCProxyIP] [bit] NOT NULL , - [InheritVNCProxyPort] [bit] NOT NULL , - [InheritVNCProxyUsername] [bit] NOT NULL , - [InheritVNCProxyPassword] [bit] NOT NULL , - [InheritVNCColors] [bit] NOT NULL , - [InheritVNCSmartSizeMode] [bit] NOT NULL , - [InheritVNCViewOnly] [bit] NOT NULL , - [InheritRDGatewayUsageMethod] [bit] NOT NULL , - [InheritRDGatewayHostname] [bit] NOT NULL , - [InheritRDGatewayUseConnectionCredentials] [bit] NOT NULL , - [InheritRDGatewayUsername] [bit] NOT NULL , - [InheritRDGatewayPassword] [bit] NOT NULL , - [InheritRDGatewayDomain] [bit] NOT NULL , - [LoadBalanceInfo] [varchar] (1024) NULL , - [AutomaticResize] [bit] NOT NULL DEFAULT 1 , - [InheritLoadBalanceInfo] [bit] NOT NULL DEFAULT 0 , - [InheritAutomaticResize] [bit] NOT NULL DEFAULT 0 , - [RedirectClipboard] [bit] NOT NULL DEFAULT 0 , - [InheritRedirectClipboard] [bit] NOT NULL DEFAULT 0 -) ON [PRIMARY] -GO - -CREATE TABLE [dbo].[tblRoot] ( - [Name] [varchar] (2048) NOT NULL , - [Export] [bit] NOT NULL , - [Protected] [varchar] (4048) NOT NULL , - [ConfVersion] [float] NOT NULL -) ON [PRIMARY] -GO - -CREATE TABLE [dbo].[tblUpdate] ( - [LastUpdate] [datetime] NULL -) ON [PRIMARY] -GO - diff --git a/mRemoteV1/Resources/Help/Main.css b/mRemoteV1/Resources/Help/Main.css deleted file mode 100644 index 4980a15d..00000000 --- a/mRemoteV1/Resources/Help/Main.css +++ /dev/null @@ -1,140 +0,0 @@ -/* COMMON STUFF */ - -body { -background-color: #FFFFFF; -margin-left: 10px; -margin-top: 10px; -margin-right: 10px; -margin-bottom: 10px; -font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; -font-size: 0.75em; -color: #333333; -} - -img { border: none; } - -hr { -display: block; -height: 1px; -border: 0; -border-top: 1px solid #ccc; -margin: 1em 0; -padding: 0; -} - -/* HEADINGS */ - -h1 { -font-size: 2.0em; -color: #000000; -padding-top: 20px; -} - -h2 { -font-size: 1.5em; -color: #000000; -padding-top: 20px; -} - -h3 { -font-size: 1.17em; -color: #000000; -padding-top: 20px; -} - -h4 { -font-size: 1em; -color: #000000; -padding-top: 20px; -} - -h5 { -font-size: .83em; -color: #000000; -padding-top: 20px; -} - - -/* LINKS */ - -a:link { -color: #5d6b70; -text-decoration: none; -text-decoration: underline; -} - -a:visited { -color: #5d6b70; -text-decoration: none; -} - -a:hover { -color: Black; -text-decoration: underline; -} - -/* TABLES */ - -table { -font-family: arial, sans-serif; -border-collapse: collapse; -} - -td, th { -border: 1px solid #dddddd; -text-align: left; -padding: 8px; -} - -tr:nth-child(even) { background-color: #f2f2f2; } - - -/* MISC STYLES */ - -.Code { -padding-right: 5px; -padding-left: 5px; -color: #000000; -font-family: 'Courier New', Monospace; -background-color: #C1C1C1; -} - -.monospace { -white-space: nowrap; -font-family: 'Courier New', monospace; -} - -.nowrap { white-space: nowrap } - -.isa_info, .isa_success, .isa_warning, .isa_error { -margin: 10px 0px; -padding: 12px; -} - -.isa_info { -color: #00529B; -background-color: #BDE5F8; -} - -.isa_success { -color: #4F8A10; -background-color: #DFF2BF; -} - -.isa_warning { -color: #9F6000; -background-color: #FEEFB3; -} - -.isa_error { -color: #D8000C; -background-color: #FFD2D2; -} - -.lvl1 { padding-left: 20px; } - -.lvl2 { padding-left: 40px; } - -.lvl3 { padding-left: 60px; } - -.lvl4 { padding-left: 80px; } diff --git a/mRemoteV1/Resources/Help/MySQLScript.txt b/mRemoteV1/Resources/Help/MySQLScript.txt deleted file mode 100644 index 1af6b391..00000000 --- a/mRemoteV1/Resources/Help/MySQLScript.txt +++ /dev/null @@ -1,183 +0,0 @@ - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `tblCons` --- - -DROP TABLE IF EXISTS `tblCons`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `tblCons` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `ConstantID` varchar(128) DEFAULT NULL, - `PositionID` int(11) NOT NULL, - `ParentID` varchar(128) DEFAULT NULL, - `LastChange` datetime NOT NULL, - `Name` varchar(128) NOT NULL, - `Type` varchar(32) NOT NULL, - `Expanded` tinyint(1) NOT NULL, - `Description` varchar(1024) DEFAULT NULL, - `Icon` varchar(128) NOT NULL, - `Panel` varchar(128) NOT NULL, - `Username` varchar(512) DEFAULT NULL, - `DomainName` varchar(512) DEFAULT NULL, - `Password` varchar(1024) DEFAULT NULL, - `Hostname` varchar(512) DEFAULT NULL, - `Protocol` varchar(32) NOT NULL, - `PuttySession` varchar(128) DEFAULT NULL, - `Port` int(11) NOT NULL, - `ConnectToConsole` tinyint(1) NOT NULL, - `UseCredSsp` tinyint(1) NOT NULL, - `RenderingEngine` varchar(10) DEFAULT NULL, - `ICAEncryptionStrength` varchar(32) NOT NULL, - `RDPAuthenticationLevel` varchar(32) NOT NULL, - `RDPMinutesToIdleTimeout` int(11) NOT NULL, - `RDPAlertIdleTimeout` tinyint(1) NOT NULL, - `Colors` varchar(32) NOT NULL, - `Resolution` varchar(32) NOT NULL, - `DisplayWallpaper` tinyint(1) NOT NULL, - `DisplayThemes` tinyint(1) NOT NULL, - `EnableFontSmoothing` tinyint(1) NOT NULL, - `EnableDesktopComposition` tinyint(1) NOT NULL, - `CacheBitmaps` tinyint(1) NOT NULL, - `RedirectDiskDrives` tinyint(1) NOT NULL, - `RedirectPorts` tinyint(1) NOT NULL, - `RedirectPrinters` tinyint(1) NOT NULL, - `RedirectSmartCards` tinyint(1) NOT NULL, - `RedirectSound` varchar(64) NOT NULL, - `SoundQuality` varchar(20) NOT NULL, - `RedirectAudioCapture` tinyint(1) NOT NULL, - `RedirectKeys` tinyint(1) NOT NULL, - `Connected` tinyint(1) NOT NULL, - `PreExtApp` varchar(256) DEFAULT NULL, - `PostExtApp` varchar(256) DEFAULT NULL, - `MacAddress` varchar(32) DEFAULT NULL, - `UserField` varchar(256) DEFAULT NULL, - `ExtApp` varchar(256) DEFAULT NULL, - `VNCCompression` varchar(10) DEFAULT NULL, - `VNCEncoding` varchar(20) DEFAULT NULL, - `VNCAuthMode` varchar(10) DEFAULT NULL, - `VNCProxyType` varchar(20) DEFAULT NULL, - `VNCProxyIP` varchar(128) DEFAULT NULL, - `VNCProxyPort` int(11) DEFAULT NULL, - `VNCProxyUsername` varchar(512) DEFAULT NULL, - `VNCProxyPassword` varchar(1024) DEFAULT NULL, - `VNCColors` varchar(10) DEFAULT NULL, - `VNCSmartSizeMode` varchar(20) DEFAULT NULL, - `VNCViewOnly` tinyint(1) NOT NULL, - `RDGatewayUsageMethod` varchar(32) NOT NULL, - `RDGatewayHostname` varchar(512) DEFAULT NULL, - `RDGatewayUseConnectionCredentials` varchar(32) NOT NULL, - `RDGatewayUsername` varchar(512) DEFAULT NULL, - `RDGatewayPassword` varchar(1024) DEFAULT NULL, - `RDGatewayDomain` varchar(512) DEFAULT NULL, - `InheritCacheBitmaps` tinyint(1) NOT NULL, - `InheritColors` tinyint(1) NOT NULL, - `InheritDescription` tinyint(1) NOT NULL, - `InheritDisplayThemes` tinyint(1) NOT NULL, - `InheritDisplayWallpaper` tinyint(1) NOT NULL, - `InheritEnableFontSmoothing` tinyint(1) NOT NULL, - `InheritEnableDesktopComposition` tinyint(1) NOT NULL, - `InheritDomain` tinyint(1) NOT NULL, - `InheritIcon` tinyint(1) NOT NULL, - `InheritPanel` tinyint(1) NOT NULL, - `InheritPassword` tinyint(1) NOT NULL, - `InheritPort` tinyint(1) NOT NULL, - `InheritProtocol` tinyint(1) NOT NULL, - `InheritPuttySession` tinyint(1) NOT NULL, - `InheritRedirectDiskDrives` tinyint(1) NOT NULL, - `InheritRedirectKeys` tinyint(1) NOT NULL, - `InheritRedirectPorts` tinyint(1) NOT NULL, - `InheritRedirectPrinters` tinyint(1) NOT NULL, - `InheritRedirectSmartCards` tinyint(1) NOT NULL, - `InheritRedirectSound` tinyint(1) NOT NULL, - `InheritSoundQuality` tinyint(1) NOT NULL, - `InheritRedirectAudioCapture` tinyint(1) NOT NULL, - `InheritResolution` tinyint(1) NOT NULL, - `InheritUseConsoleSession` tinyint(1) NOT NULL, - `InheritUseCredSsp` tinyint(1) NOT NULL, - `InheritRenderingEngine` tinyint(1) NOT NULL, - `InheritICAEncryptionStrength` tinyint(1) NOT NULL, - `InheritRDPAuthenticationLevel` tinyint(1) NOT NULL, - `InheritRDPMinutesToIdleTimeout` tinyint(1) NOT NULL, - `InheritRDPAlertIdleTimeout` tinyint(1) NOT NULL, - `InheritUsername` tinyint(1) NOT NULL, - `InheritPreExtApp` tinyint(1) NOT NULL, - `InheritPostExtApp` tinyint(1) NOT NULL, - `InheritMacAddress` tinyint(1) NOT NULL, - `InheritUserField` tinyint(1) NOT NULL, - `InheritExtApp` tinyint(1) NOT NULL, - `InheritVNCCompression` tinyint(1) NOT NULL, - `InheritVNCEncoding` tinyint(1) NOT NULL, - `InheritVNCAuthMode` tinyint(1) NOT NULL, - `InheritVNCProxyType` tinyint(1) NOT NULL, - `InheritVNCProxyIP` tinyint(1) NOT NULL, - `InheritVNCProxyPort` tinyint(1) NOT NULL, - `InheritVNCProxyUsername` tinyint(1) NOT NULL, - `InheritVNCProxyPassword` tinyint(1) NOT NULL, - `InheritVNCColors` tinyint(1) NOT NULL, - `InheritVNCSmartSizeMode` tinyint(1) NOT NULL, - `InheritVNCViewOnly` tinyint(1) NOT NULL, - `InheritRDGatewayUsageMethod` tinyint(1) NOT NULL, - `InheritRDGatewayHostname` tinyint(1) NOT NULL, - `InheritRDGatewayUseConnectionCredentials` tinyint(1) NOT NULL, - `InheritRDGatewayUsername` tinyint(1) NOT NULL, - `InheritRDGatewayPassword` tinyint(1) NOT NULL, - `InheritRDGatewayDomain` tinyint(1) NOT NULL, - `LoadBalanceInfo` varchar(1024) DEFAULT NULL, - `AutomaticResize` tinyint(1) NOT NULL DEFAULT 1, - `InheritLoadBalanceInfo` tinyint(1) NOT NULL DEFAULT 0, - `InheritAutomaticResize` tinyint(1) NOT NULL DEFAULT 0, - `RedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, - `InheritRedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, - PRIMARY KEY (`ID`) -) ENGINE=InnoDB AUTO_INCREMENT=3324 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `tblRoot` --- - -DROP TABLE IF EXISTS `tblRoot`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `tblRoot` ( - `Name` varchar(2048) NOT NULL, - `Export` tinyint(1) NOT NULL, - `Protected` varchar(4048) NOT NULL, - `ConfVersion` double NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `tblUpdate` --- - -DROP TABLE IF EXISTS `tblUpdate`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `tblUpdate` ( - `LastUpdate` datetime(3) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - - -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; diff --git a/mRemoteV1/Resources/Help/Screenshots/External Tools/01.png b/mRemoteV1/Resources/Help/Screenshots/External Tools/01.png deleted file mode 100644 index 2cbd401e61ca8754b1e43b994518602bc70b330e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3965 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 TdTltkZopv=%C2CS_r-q#=xJ4R diff --git a/mRemoteV1/Resources/Help/Screenshots/External Tools/02.png b/mRemoteV1/Resources/Help/Screenshots/External Tools/02.png deleted file mode 100644 index 2f25956d563398099ce658c225897d0e6b3bd8fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8235 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 diff --git a/mRemoteV1/Resources/Help/Screenshots/External Tools/03.png b/mRemoteV1/Resources/Help/Screenshots/External Tools/03.png deleted file mode 100644 index 3a7a8ed2c003ae26420ce39acc31a38bf3757b62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4157 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 S6K%qK0aoYjEeg+h-uw?P|F}8; diff --git a/mRemoteV1/Resources/Help/Screenshots/External Tools/04.png b/mRemoteV1/Resources/Help/Screenshots/External Tools/04.png deleted file mode 100644 index e8ac720dd70f6c767af3b4ac787ea07ddfdf9c8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3983 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 diff --git a/mRemoteV1/Resources/Help/Screenshots/External Tools/05.png b/mRemoteV1/Resources/Help/Screenshots/External Tools/05.png deleted file mode 100644 index 9e719ca302ec5dc8c691968e99ec7a842c92dc92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4085 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 Crq&ez diff --git a/mRemoteV1/Resources/Help/Screenshots/External Tools/07.png b/mRemoteV1/Resources/Help/Screenshots/External Tools/07.png deleted file mode 100644 index 52f96e91fbc4e683e6780327408f9a764db92155..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24274 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 diff --git a/mRemoteV1/Resources/Help/Screenshots/Navigation/ssh_context_menu.png b/mRemoteV1/Resources/Help/Screenshots/Navigation/ssh_context_menu.png deleted file mode 100644 index 7f851f8bc25595c35d6e1b849e54894d8ea53271..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6284 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 diff --git a/mRemoteV1/Resources/Help/Screenshots/Navigation/view_menu.png b/mRemoteV1/Resources/Help/Screenshots/Navigation/view_menu.png deleted file mode 100644 index 71d9a1c52e9e2148a9312e33f272e58b562a7050..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2220 zcmV;d2vhfoP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2ti3iK~#8N?VS5> z6-5-s@4w-1#`pt?kEAg{8>3=CELdovP*NYzN^c=ZfI@jxN@)RL4*ZQqL{q#A`A59 z6|H`4$OWj#(fWua$Z3FP+jdz%YXkIC&c!cyZ@9Uq)i;mZ8e|8aL{Z*!js-f3;b>P6 zZm1Rtq@i`1|Bg86CJMkk0U^b8>gBI|gtqR3o-nVv^_@Fa?{E6%V$ z_j8S|Z5Mn52ZJ_oBU#3fo?wZmJf{7A)eYiJSJ{N$mq9&WC&T$ck^)LBa&?($ONv%y zlYR32i`%%o_2?&A*0+#Sa0MD4kK|7(v#qP)-`v8w__m#&+)sAmNfd7{JIw-p)ckhH zpVtOMYuZ@(%Afz)g4d{;R>4PL@aCFA-~__Tc$1Ssz|y{X(^WPO!M`1%AAPaKKFmN_ zj{(95fXc>=MYHJvr3=CuxKewetoP%8d_1Cm=k1fVUw`wH>a!G2qIhfRNfzh>W_<}C z?6?3g%s9l#D1g8I?G-RYQ8ed};3FvVmWeHxu@IJk=5D&mX4Yx2AhHXT1U7bja_T`S z`{c_C8}o@zP!61v<5=8$1sNX?*7M_$#=rvJuo=I18x!wOgRPlU|Jj8nQM~!#2^Q$j zO*sg)+t0(ZlMk@6A&RSi-+(K!6n$FCZuN*RROVawv$%_I+xe;b$sRn3qGZ7_7VIbr z6a+5{B!6xW9JWu5ak4^CWdyffz2qFx45=B|#_lZ!qzh0?)0vg-ig(YpJth}VP zG%cBeAo>DNqL{y}6DmLIfRg%ep{TkIM$A40BW4|h!m9mHFnuo!oH7oImi2?>ZRIRO z;3t+-ey1RaKERVGyioaRExc6uB-=9KCzkEn5k$6=Hc=47!vcwdAS4_`K@g8J7E#>2 zd)MU7ojWGCZ{Ie#b?cVN&6_u&x3`yZziZ1~3E716OB!5yl9!>hz`{&yDnji01 zo@e5BA;g%2oy`rUD4b67$lov+N?M9w%#IN-dRqY$eKrgVHw|SrJk295qEK!Xa3Q%x zV~cGptZp*{C5{2Y2Y|}P1)*ls14<7RYv4-lg|gm{|MBsN{++i^)_(oXkE_S_roh6D zA&MZvP>RCoG>?*&kudMf3`WiA=`i=yG#J+WIOm+iz9ncJY|Ll! zMlvu!9LM73E6DhGu$~`}GzJ#%hRyiB+n9KN8cYDzHujk-TnO{juxsOlQWQ?7c@%Fi zgxWJzf+&Wp8^mlQW*taf6mIVnfrHL1Xl#PtsotlrV4|?A*AV>Uy)xSQ8tTy1tw$#iX>yo`^>sa^x`jj@$tzWIKgeB*a7^Uy(IggIjb6$GNr z6b`3(6mEKhWd{TWG3Ue-7`WzTW-F*{NslNHw%|#{3wvt8<`f8WS!L6Z`!n~~*e+Rb z1iSgND{n(Az7&00%5L=t_d=W-g{YTIfo0qIaczVxnO#;14>$+AdM_wN;dGkEJG+b7 zOZLbu`H-)@OAPsB5WKc_0J9ZL+nGL55JVrK6vd>N{!ZcNDw(~TL_vfar6@KY{23N) zIR|4G9mqo8sZ44>Kp!=~)iK6gOz%odoj{3{X#5o(m8Fra@OCmtn86a*nbq96zf u5(Pm>kSGX3f?`Sioh$T7CXthnh6Wy-!n=BO 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%0D&Sz;6y{+ap)oJ}Be+ye4*9?mG~; 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 YEON(&cG@`q5Ae@O-%PLM;?0o%0RZh;B>(^b diff --git a/mRemoteV1/Resources/Help/Screenshots/Reference/example_01.png b/mRemoteV1/Resources/Help/Screenshots/Reference/example_01.png deleted file mode 100644 index 68413d735930ad173afd4de3850104306a535441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3048 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 - - - - Command-Line Switches - - - -

Command-Line Switches

-
-

The following commandlline switches are supported by mRemoteNG.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CommandDescription
- /cons: - PathToConnectionsFile -
-
- /c: - PathToConnectionsFile -
Loads the connections file from the given path.
-
This path can be a:
    -
  • full file path
  • -
  • path relative to the current directory
  • -
  • path relative to the mRemoteNG application directory
  • -
  • path relative to the mRemoteNG default connection file directory
  • -
-
- /reset - Resets window position, panels and toolbars
- /resetpos -
-
- /rp -
Reset the windows position
- /resetpanels -
-
- /rpnl -
Resets all panel positions. Use this if you have troubles with panel layouts
- /resettoolbar -
-
- /rtbr -
Resets the positions of all toolbars
- /noreconnect -
-
- /norc -
Temporary disables reconnect to previously opened sessions. Use this if you have problems opening mRemoteNG after you enabled the setting and restarted mRemoteNG
-
- - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/gs_installation.htm b/mRemoteV1/Resources/Help/gs_installation.htm deleted file mode 100644 index 53b4e6b1..00000000 --- a/mRemoteV1/Resources/Help/gs_installation.htm +++ /dev/null @@ -1,34 +0,0 @@ - - - - - Installation - - - -

Installation

-

- Downloads are provided in four different packages: A setup package, a binary package, a portable package and the source package. -
- These are described below. -

-
-

Setup Package

-

- The setup package is the compiled version of mRemoteNG which comes in an MSI installer. -
- -> The common way to get mRemoteNG up and running -

-

Portable Package

-

- The portable package contains a modified version of the executable which stores and loads all your settings from files in the application's directory. -
- This package can be used to run mRemoteNG off a portable device (a USB stick for example) and preserve your configuration wherever you go. -

-

Source Package

-

- The source package contains the source code as a zip file in form of a Visual Studio solution. -

-
- - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/gs_prerequisites.htm b/mRemoteV1/Resources/Help/gs_prerequisites.htm deleted file mode 100644 index 996a242b..00000000 --- a/mRemoteV1/Resources/Help/gs_prerequisites.htm +++ /dev/null @@ -1,100 +0,0 @@ - - - - - Prerequisites - - - -

Prerequisites

-
-
    -
  • - Microsoft .NET Framework 4.0 -
  • -
  • Microsoft Terminal Services Client 8.0 or later.
      -
    • Needed if you use RDP. mstscax.dll and/or msrdp.ocx must be registered.
    • -
    • Included with newer Windows versions.KB2574819 AND eitherKB2592687 orKB2923545is required for Windows 7/Windows Server 2008 R2
    • -
    -
  • -
  • - PuTTY -
      -
    • Needed if you use Telnet, SSH, Rlogin or RAW. Included in all packages.
    • -
    • An appropriate and integrated version is included with mRemoteNG.
    • -
    -
  • -
  • - Citrix ICA Client -
      -
    • Needed if you use ICA. wfica.ocx must be registered.
    • -
    -
  • -
-

Supported Operating Systems

-
- - -

Windows™ 7/Windows Server 2008 R2 clients (requirements)

-
-
- TIP! You can use powershell to fetch if the hotfixes are installed. Try using example:
-
- Get-HotFix | where {$_.HotFixID -eq "KB2574819" -and $_.HotFixID -eq "KB2592687"} -
-

The following updates must be present on any Windows 7 or Server 2008 client that will be running mRemoteNG. (They must have been installed in the order provided below):

- -

The following are suggested (but not required) for Windows 7 / Server 2008 clients:

- - - - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/gs_running_mremoteng.htm b/mRemoteV1/Resources/Help/gs_running_mremoteng.htm deleted file mode 100644 index fbb81634..00000000 --- a/mRemoteV1/Resources/Help/gs_running_mremoteng.htm +++ /dev/null @@ -1,93 +0,0 @@ - - - - - Running mRemoteNG - - - -

Running mRemoteNG

-
- -

Creating a connection

-
-

Right click on the root item (the little blue globe named "Connections") in the Connections panel and select "New Connection".

- -

A new item shows up under the root item. You can give it a name now (or rename it later). We'll just call this connection "Test" for the moment.

- -

Now lets look at the config panel in the bottom left, just under the connections panel. As you may notice this is where you configure all the properties of connections and folders.

- -

Fill in the necessary properties and you have just created your first connection!
You can now connect to the server with a simple double-click on the "Test"-connection!

-
- TIP! You can see an indicator in the properties window that is glowing green. -
-
This icon does a ICMP ping on to check response from the server. If it glows green it indicates a connection response can be made using ping to the host. However this is turned off on windows by default. You have to enable ICMP and allow the firewall access for it. -
-

Opening and Closing Connections

-
-

- There are multiple ways to open a connection in mRemoteNG, but the easiest way is to double click the connection in the Connections panel. -
- If you double click the connection you will notice that the connection is going to try and open in a new panel called "General" and under a tab called "Test". -
- If all goes well you should see the remote desktop without any problems. -

- -
- NOTE! If the connecting fails, the notifications panel will pop up and show an error message describing the problem. -
-

To close the connection you can do any of the following:

    -
  • Log off in the start menu - Closes the connection and logs you out completely from RDP
  • -
  • Close the panel with the - Which leaves your session active on server but closes connection in mRemoteNG
  • -
  • Close the connection tab with - Also keeps your login active on server but closes RDP connection in mRemoteNG
  • -
  • Double click the connection tab - Same as above where the connection is active on server but closes RDP connection in mRemoteNG
  • -
-

-

Folders and Inheritance

-
-

Folders on mRemoteNG cannot only be used to categorize connections but also to inherit properties to underlying connections.

-
-

Example

-

You have ten Remote Desktop enabled servers in one domain and 15 in another domain. -
- Normally you would spend a lot of time creating all those connections and setting the individual properties like username, password, etc. -
- In mRemoteNG there is an easier way. You just create two folders (one for domain A and one for domain B) and set all properties there. -
- Then create the connections itself and let it inherit every property. The only properties left to set on the connection itself are the connection name and hostname. Everything else will be inherited from the parent folder. -

- Here is how you do this: -
- Add the folder. This can be done like this: -

    -
  • - Right click on connections and click on New Folder -
  • -
  • - File > New Folder -
  • -
  • - Or with keybinding: Ctrl+Shift+N -
  • -
-

- -

Then give it a name and fill all the properties you need (like you did with the test connection).

- -
- -

When you have filled in the settings and values you can either just drag the test Connection inside the folder or create a new one.

- -

Right now nothing has changed and nothing will be inherited.
To enable inheritance switch to the inheritance view by clicking the dedicated button. (Marked with a red arrow below)

- -

The properties that show up now are almost the same as before, but you only select yes or no to enable or disable a inheritance.

- -

When no is selected the property will not be inherited, yes indicates an inherited property.

-

For this test set Inherit Everything to Yes.

-

Now if you switch back to the properties view (the button left of the inheritance button) you should see that not much is left of all those properties.

- -

Only the Name and Hostname/IP properties are left over, everything else will be inherited from the parent folder.

-

Of course you can also only let some of the properties be inherited. Just play around with this a bit and you'll get the hang of it.

-
- - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/st_common_problems_rdp.htm b/mRemoteV1/Resources/Help/st_common_problems_rdp.htm deleted file mode 100644 index c0fbd589..00000000 --- a/mRemoteV1/Resources/Help/st_common_problems_rdp.htm +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Common Problems (RDP) - - - -

Common Problems (RDP)

-
-

Its hard to make a document on all problems that can occur with connections but here at least we are trying to list some of the most common problems for RDP that has been noticed.

- -
-

Quick Reference

- -
- - -

CredSSP - CVE-2018-0886 - Authentication error

-
-

mRemoteNG uses the Microsoft Terminal Services Client (MSTSC) libraries in order to make Remote Desktop connections. mRemoteNG has no control over the functionality changes implemented by Microsoft. -
-
- Relevant line of code that shows our "RDP Client" connection "object": private MsRdpClient8NotSafeForScripting _rdpClient -
- Relevant MS documentation for this .NET class: MsRdpClient8NotSafeForScripting class -
-
- Please refer to Microsoft's documentationfor full details regarding this problem. - Patched clients attempting to connect to Unpatched servers will fail with the following error:

- -

The same error will occur with MSTSC directly on a patched client attempting to connect to an unpatched server.

-

Per the MS documentation, the only way around this is to do the following:

-
    -
  • Patch the servers
  • -
  • set the "Encryption Oracle Remediation" policy to "Vulnerable" - refer to the MS documentation above for details:
    - -
  • -
  • Uninstall KB4103727 -
  • -
- - - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_config.htm b/mRemoteV1/Resources/Help/ui_config.htm deleted file mode 100644 index 4e881905..00000000 --- a/mRemoteV1/Resources/Help/ui_config.htm +++ /dev/null @@ -1,57 +0,0 @@ - - - - - Config - - - - -

Config

-
- -

- Config dialog to setup the connection specific properties. -
- This includes inheritance from other items before the item and more. -
- Details below is about how to work with this dialog to get the most out of connections and configuration. -

-
-

Quick Reference

- -
- - -

Top Bar

-
-
-

-
- Red - Sort values Categories or Alphabetical
- Green - Show Properties, Inheritance values
- Blue - Connection icon
- Yellow - Host status (based on ICMP ping) -

-

Sort Values

-

Sorts the values in properties either by Categories or Alphabetically.

- Categories sort - Shows values in categories with expanding options.
- Alphabetical sort - Expands everything and shows values in alphabetical order instead

-

-

Icon

-

The icon indicates the visual identifier for the connection. Clicking the icon will let you set a different icon for the connection.

-
- NOTE! Don't forget that mRemoteNG will save the change on exit auto unless you have unchecked this setting in options.
-

Status

-

Is a indicator that will glow red or green depending on the status of the host. The status is based on ICMP ping to the host.

-
- IMPORTANT! In order for this to work you have to open up ICMP. On windows servers this is also disabled in windows firewall.
-
- - - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_connections.htm b/mRemoteV1/Resources/Help/ui_connections.htm deleted file mode 100644 index b0271682..00000000 --- a/mRemoteV1/Resources/Help/ui_connections.htm +++ /dev/null @@ -1,66 +0,0 @@ - - - - - Connections - - - -

Connections

-
-

The connections dialog is the main collection of all connections that inside mRemoteNG. This document will explain the details of the connections dialog.

- -

Top Menu Bar

-
-

-
- Red - New Connection
- Green - New Folder
- Blue - View (Expand/Collapse all folders)
- Yellow - Ascending sort -

-
-

Quick Reference

- -
- - -

New Connection

-
-

Creates a new connection item in the connections dialog after where cursor is present.

-
- TIP! You can also duplicate an already created connection if you want to follow some sort of template of a connection. Just right click on folder or connection to duplicate the item. The information is then carried over for editing. This can save a lot of time when the connection list is large.
- - -

New Folder

-
-

Creates a new folder in connections dialog after where cursor is present.

-
- TIP! Folders can help to make adding connections easier. By setting a folder with some values that can be inheritaded down to the connections. Read more about this inConfiguration -
- - -

View

-
-

Collapses or expands all directories in the connection dialog. Useful when working with a lot of connections sorted in different directories.

- - -

Ascending

-
-

Works like a sort or a refresh to get connection in ascending order. (Descending order is note supported yet) When you have been moving around in the tree of connections, just click this item to refresh the list and get everything in ascending ordering.

- - - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_external_tools.htm b/mRemoteV1/Resources/Help/ui_external_tools.htm deleted file mode 100644 index a86aad3c..00000000 --- a/mRemoteV1/Resources/Help/ui_external_tools.htm +++ /dev/null @@ -1,167 +0,0 @@ - - - - - External Tools - - - -

External Tools

-
-

- External Tools allow you to integrate external command-line tools or applications into mRemoteNG. -
- The external tools configuration is stored in %APPDATA%\mRemoteNG\extApps.xml -

-

Variables

-
-

Variables and arguments can be used to tell the external tool what to do.

-

This is the list of variables supported by mRemoteNG:

-
    -
  • %NAME%
  • -
  • %HOSTNAME%
  • -
  • %PORT%
  • -
  • %USERNAME%
  • -
  • %PASSWORD%
  • -
  • %DOMAIN%
  • -
  • %DESCRIPTION%
  • -
  • %MACADDRESS%
  • -
  • %USERFIELD%
  • -
-

Variables always refer to the currently selected connection. Variable names are case-insensitive. Variables can be used in both the Filename and Arguments fields.

-

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.

-

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.

-

Special Character Escaping

-
-

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.

-
-

Argument splitting escaping:

-
    -
  • Each quotation mark will be escaped by a backslash.
  • -
  • One or more backslashes (\) followed by a quotation mark ("):
      -
    • Each backslash will be escaped by another backslash.
    • -
    • The quotation mark will be escaped by a backslash.
    •      If the connection's user field contains "This" is a \"test\".
           Then %USERFIELD% is replaced with \"This\" is a \\\"test\\\".
    -
  • -
  • A variable name followed by a quotation mark (for example, %USERFIELD%") with a value ending in one or more backslashes:
      -
    • Each backslash will be escaped by another backslash.
    • -
    • Example:
    •      If the connection's user field contains c:\Example\
           Then "%USERFIELD%" is replaced with "c:\Example\\"
    -
  • -
-

To disable argument splitting escaping for a variable, precede its name with a minus (-) sign. For example, %-USERFIELD%.

-

Shell metacharacter escaping:

-
    -
  • The shell metacharacters are ( ) % ! ^ " < > & |
  • -
  • Each shell metacharacter will be escaped by a caret (^).
  • -
-

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.

-

Only variables that have been expanded will be escaped. It is up to you to escape the rest of the arguments.

-

Variable Examples

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgumentsUser FieldResult
%USERFIELD%"Example" Text\^"Example\^" Text
%-USERFIELD%"Example" Text^"Example^" Text
%!USERFIELD%"Example" Text"Example" Text
^%USERFIELD^%"Example" Text%USERFIELD%
^^%USERFIELD^^%"Example" Text^%USERFIELD^%
-d "%USERFIELD%"c:\Example\-d "c:\Example\\"
-d "%-USERFIELD%"c:\Example\-d "c:\Example\"
-d "%USERFIELD%"Left & Right-d "Left ^& Right"
-d "%!USERFIELD%"Left & Right-d "Left & Right"
%WINDIR%N/Ac:\Windows\
\%WINDIR\%N/Ac:\Windows\
\^%WINDIR\^%N/A\%WINDIR\%
\\%WINDIR\\%N/A\\%WINDIR\\%
-
-

Example

-
-

First of all, start the external tools editor. To do this, click Tools in the main menu and select External Tools.
You will see a screen like on the following screenshot.

-

- -

-

The fields below the list are greyed out because you haven't created an external tool entry yet.
To create one, right click the blank area in the list and select Add, as in the screenshot below.

-

- -

-

This is what you'll get:

-

- -

-

So the three fields are now available and need to be filled.
The Display Name is simply the name you will see when you want to launch that tool, so give it a descriptive name.
I named mine Traceroute as I will create a external tool that will start the tracert command in the console.

-

- -

-

Ok, the next thing we'll need is a filename. This is the program that we want to be executed.
I simply type in cmd for a Windows cmd console.

-

- -

-

The Windows cmd has a command line argument that tells the console to launch the command followed by that argument and stay open.
It's /K. (There's also /C, this is useful when you want the console to close after the command was executed)
In this case, I'll use /K as I want to look through the result when the command completes.
After that, I just type tracert %HostName%. This tells the console to do a traceroute on the hostname of the currently selected Connection.

-

- -

-

Now right click one of you connections, click Tools, External Tools and select Traceroute.

-

- -

-

Voilà! A console window will popup and execute your tracert command.

-

- -

- - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_file_transfer.htm b/mRemoteV1/Resources/Help/ui_file_transfer.htm deleted file mode 100644 index 390ba7d4..00000000 --- a/mRemoteV1/Resources/Help/ui_file_transfer.htm +++ /dev/null @@ -1,66 +0,0 @@ - - - - - SSH File Transfer - - - - -

SSH File Transfer

-
-

SSH File Transfer functionality allows you to securely transfer files to a remote host over an encrypted tunnel using either SFTP or SCP.

- - -

Prerequisites

-
-
    -
  • SSH File Transfer requires an SSH service to listen on an available network port (default 22) on a remote host.
  • -
  • A username and password must be supplied to connect with the remote host.
  • -
  • The remote host must have a writable folder on its filesystem to place the transferred files.
  • -
- - -

Configuration Options

-
-
    -
  • - Host - The remote host you connect to. Can be DNS name or IP address.
  • -
  • - Port - Remote network port listening for SSH/SFTP/SCP traffic.
  • -
  • - User - Username for account to log on to remote host.
  • -
  • - Password - Password for account to log on to remote host.
  • -
  • - Protocol - Choice of SCP or SFTP protocol used for communication.
  • -
  • - Local File - Path of file to transfer from local host.
  • -
  • - Remote File - Path where file will be transferred on remote host.
      -
    • Example: /home/John/Documents
    • -
    -
  • -
- -

Using SSH File Transfer

-
-

To begin, select Tools and then SSH File Transfer. The tool will fill the window and allow you to input the configuration options. Each piece of information is needed for a successful transfer.

-

To populate the Local File option, select the Browse button and navigate to the desired file on the local filesystem. To populate the Remote File option, manually type desired filesystem path, including the desired file name.

-

Once all options are populated, select Transfer and the progress bar at the bottom of the window will show the progress.

-

Troubleshooting SSH File Transfer

-
-

To troubleshoot issues with SSH File Transfer, consult the log under %AppData%\mRemoteNG\mRemoteNG.log. This log provides verbose information about successful and failed connections.

-
-

Common Issues

- ERROR- Please fill all fields -
This issue was likely encountered because you did not provide all information needed to establish the connection.
-
- System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it -
This issue was likely encountered because the local host could not contact the remote host specified on the remote port specified.
The issue may be caused by improperly configured firewall rules or a SSH service not listening properly on the remote host.
-
- [14] ERROR- SSH background transfer failed! -
This issue was likely encountered due to a permissions issue. Ensure you have appropriate access to write to the specified Remote File. -
- - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_import_and_export.htm b/mRemoteV1/Resources/Help/ui_import_and_export.htm deleted file mode 100644 index a88e7ecd..00000000 --- a/mRemoteV1/Resources/Help/ui_import_and_export.htm +++ /dev/null @@ -1,32 +0,0 @@ - - - - - Import/Export - - - - -

Import/Export

-
-

Import/Export is for importing or exporting your configuration of connections.

- - -

Import

-
-
-

Import from File

-

Opens a normal file load dialog to open a exported xml or csv file for mRemoteNG. See Export to file further down this page for information on exporting your connections.

-

Import from Active Directory

-

If you have servers that is located in a domain. Then this option can be used to fetch those servers to easily import them to mRemoteNG.

-

Import from Port Scan

-
- - -

Export to file

-
-

Here you can export your settings to a file to share or backup. The dialog shown below is the dialog of which you chose the options to export.

- - - - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_keyboardshortcuts.htm b/mRemoteV1/Resources/Help/ui_keyboardshortcuts.htm deleted file mode 100644 index 8cd72399..00000000 --- a/mRemoteV1/Resources/Help/ui_keyboardshortcuts.htm +++ /dev/null @@ -1,132 +0,0 @@ - - - - - Keyboard Shortcuts - - - -

Keyboard Shortcuts

-
-
-

File

- - - - - - - - - - - - - - - - - - - - - - - - - -
KeybindingAction
- Ctrl+N - New Connection
- Ctrl+Shift+N - New Folder
- Ctrl+O - Open Connection File...
- Ctrl+S - Save Connection File
- Ctrl+Shift+S - Save Connection File As...
-

View

- - - - - - - - - - - - - - - - - -
KeybindingAction
- Ctrl+Alt+C - Jump to (Connections and Config)
- Ctrl+Alt+E - Jump to (Notifications)
- F11 - Fullscreen
-

Connections

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeybindingAction
- Ctrl+Shift+C - Connect
- Ctrl+D - Duplicate
- F2 - Rename
- Del - Delete...
- Ctrl+Up - Move Up
- Ctrl+Down - Move Down
-

Help

- - - - - - - - - -
KeybindingAction
- F1 - mRemoteNG Help
-
- - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_menus.htm b/mRemoteV1/Resources/Help/ui_menus.htm deleted file mode 100644 index e0757f48..00000000 --- a/mRemoteV1/Resources/Help/ui_menus.htm +++ /dev/null @@ -1,224 +0,0 @@ - - - - - Menus - - - - -

Menus

-
- -

In this section we are going to explain the menus located in mRemoteNG. The above screenshot shows the main menu with colors. Short color explanation:
- Red - Anchor to move menu around the interface
- Green - The menu items -

-
-

Quick Reference

- -
- - -

File Menu

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ItemDescription
New ConnectionWill add a new connection to the Connections dialog after where the cursor is positioned.
New FolderAdd a new folder in the Connections dialog tree where the cursor is positioned.
New Connection FileCreate a new connection file. Dialog will come up asking about: filename and where to place the new connection file.
Open Connection FileOpen a connection file. Dialog comes up asking about which file to open. For security reasons, this also shows a dialog to ask if you want to save the current file before continuing.
Save Connection FileSaves the currently opened connection file. If you are using a SQL server connection instead it will send a save to the SQL server.
Save Connection File As...Saves the current connection file to a specific location on disk.
Delete...Delete currently selected item in connections dialog.
RenameRename current selected item in connections dialog.
DuplicateDuplicate current selected item in connections dialog.
Reconnect All Open ConnectionsSends a reconnect to all the open connections in mRemoteNG.
ExitExit mRemoteNG application
- - -

View Menu

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ItemDescription
Add Connection PanelCreate a new and empty panel.
Connection PanelsJump to panel.
ConnectionsShow connections dialog
ConfigShow config dialog
NotificationsShow notifications dialog
ScreenshotsOpen Screenshots panel (See: ScreenshotManager for more information)
Jump ToPlace focus on "Connections and Config" or "Notifications" panel based on selection.
Reset layoutResets the layout of panels and dialogs. Warning will come up about the action before continuing.
Lock toolbar positionsLocks the toolbars at the top of the application so you do not move around items by mistake.
Quick Connect ToolbarShow quick connect toolbar
External Tools ToolbarShow external tools toolbar
Multi SSH ToolbarShow multi ssh toolbar
FullscreenFullscreen mRemoteNG (will not fullscreen connection window but only the mRemoteNG application)
- - -

Tools Menu

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
ItemDescription
SSH File TransferShow SSH file transer panel (See: SSH File Transfer for more details)
External ToolsShow external tools dialog (See: External Tools for more details)
Port ScanShow port scan dialog (See: Port Scan for more details)
Components CheckShow installed components requirements test
OptionsOpens mRemoteNG global settings and options dialog
- - -

Help Menu

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ItemDescription
mRemoteNG HelpShow help panel (this panel)
WebsiteGo to mRemoteNG website
DonateGo to mRemoteNG donation page. (Please help keep mRemoteNG awesome!)
Support ForumGo to mRemoteNG suport forum (Best place is still chat for fast answers)
Report a BugGo to github page to report a bug found
Check for UpdatesOpens dialog to check for any updates of mRemoteNG
AboutOpen about dialog for mRemoteNG (Shows contributors, changelog and more)
- - - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_navigation.htm b/mRemoteV1/Resources/Help/ui_navigation.htm deleted file mode 100644 index 9053710f..00000000 --- a/mRemoteV1/Resources/Help/ui_navigation.htm +++ /dev/null @@ -1,89 +0,0 @@ - - - - - Navigation - - - -

Navigation

-
-
-

Quick Reference

- -

Panels

-

Panels are used to organize tabbed connections. This might seem a bit confusing but its a great way to stay organized. Below is a few examples of how to use panels to give you a hands on better view of them.

-
    -
  • - Test and Production - You can add 2 panels where you have the test servers are located and the other where production servers are running.
  • -
  • - Datacenters - Maybe you divide them into datacenters.
  • -
  • - Temp project - To see all servers you work on for a temporary project.
  • -
  • - Home vs Work - Maybe you are sneaky at work and want to login at home to check you machine at home for something while keeping work in its own panel.
  • -
  • ...and many more
  • -
-

For this tutorial we will keep it simple with Domain A and Domain B. Where both have their own panels.

- -
-

Creating panels

-

Usually panels are created using connections and folders to stay organized automatic when making connections. However you can also create panels manually. See below:

- -

Creating manual panels will make you able to organize tabs manually in mRemoteNG. To then open a connection to the new panel then Right click on connection and use "Connect (with options)", then "Choose panel before connecting"

-

The other option in the menu named "Connection Panels" will list all panels in open in the current running mRemoteNG window.

-

More options"

-

Right click menu for panels will give you a few more options for the panels:

- -
    -
  • - Rename - Rename the panel
  • -
  • - Send To... - Send the whole panel to monitor/screen [number]. Note this is not a real window but a detachable panel. So if you double click the title the panel will go back to mRemoteNG and not fullscreen the window.
  • -
-
-

Tabs

-

Speaking plain the tabs are also the connections that is open in mRemoteNG. There are few tips and tricks regarding tabs and we will try to list them here. In the below examples we will give you examples of RDP and SSH connections.

-
-

Right click conext menu

-

The right click context menu allows you to trigger som additional actions on tabs for example: Rename Tab, Duplicate Tab, Reconnect, Disconnect etc. Below are the two context menus from RDP and SSH.

-
-

RDP context menu

- -
-
-

SSH context menu

- -
-

If you check the difference between the menus you can see that there are some actions that differ depending on the connection. This is intentional since its specific for the type of connection.

-

The default and always available menu items are: -

    -
  • - Screenshot - Create a screenshot to Screenshot Manager
  • -
  • - External Tools - Run external tool script/action
  • -
  • - Rename Tab - Rename current tab
  • -
  • - Duplicate Tab - Duplicate tab connection
  • -
  • - Reconnect - Reconnect the current tab
  • -
  • - Disconnect - Disconnect the current tab (Double clicking the tab will also disconnect the current tab. If you want to change this action then go to Tools > Options > Tabs & Panels and uncheck"Double click on tab closes it")
  • -
Click around and try it out. You will get the hang of it. -

-
-
- - - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_notifications.htm b/mRemoteV1/Resources/Help/ui_notifications.htm deleted file mode 100644 index bfc489f6..00000000 --- a/mRemoteV1/Resources/Help/ui_notifications.htm +++ /dev/null @@ -1,51 +0,0 @@ - - - - - Notifications - - - - -

Notifications

-
-

- The notifications panel contains any errors or informational messages that mRemoteNG triggers. -
- Some example errors can be if there is a problem to connect, information on lost connection and so much more. -
Notification settings can be found in (Tools > Options > Notifications) below we will explain what can be set and how they do affect for various troubleshooting. -

- - -
-

Notifications general settings

- notification warning -

This will tell mRemoteNG what type of messages and the level of messages to send to the panel. It does not the level for the log that mRemoteNG has but only for panel output.

-

There is also 2 different options mentioned below:

-
    -
  • - Show these message types - Level of messages to show in panel. (default: Warnings and Errors)
  • -
  • - Switch to Notifications panel on - If interface should switch to the panel when a level of message occurs (default: all enabled)
    - TIP! If you dont want the panel to show at all. Then unmark all options inSwitch to Notification panel on. Then the panel will not come up automatic.
    -
  • -
- - -

Logging settings

-

Here you define the logging of messages. That is a continues log which can be used to backtrack any error that has occurred. Good when for example reporting issues about mRemoteNG or to check more details about problems.

-
    -
  • - Log path - Choose where the log should recide (default: Log to application directory)
  • -
  • - Log these message types - Level of logging to logfile (default: Informations, Warnings, Errors)
  • -
- - -

Popups settings

- popup warning -

When items are selected here you will recieve a popup on the error that occurrs based on level chosen in settings here. This can be useful if you do not want to use the notification area and only get a popup if error occurs. (default: all off)

- -
- - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_options.htm b/mRemoteV1/Resources/Help/ui_options.htm deleted file mode 100644 index 6f5de57a..00000000 --- a/mRemoteV1/Resources/Help/ui_options.htm +++ /dev/null @@ -1,412 +0,0 @@ - - - - - Options - - - - -

Options

-
-

- Options window which can also be named settings is the window where you can personalize your options for all of mRemoteNG. -
- This includes how to set logging, credentials and so on. Continue reading for the details of the different options here. -

-
-

Quick Reference

- -
- - -

Startup/Exit

-
-

Options below are for the various settings for Startup/Exit of mRemoteNG.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
- Option - - Default - - Description -
Save connection on exitOnSave to connection file/database on exit of mRemoteNG.
Reconnect to previously opened sessions on startupOffThis option will allow you to open the connection from which you where connected to after last exit of application.
Allow only a single instance of the application (mRemoteNG restart required)OffEnforces and makes sure only a single instance of mRemoteNG is running on the computer.
Check proper installation of components at startupOffOpens the panel for Components Check on every startup.
- - -

Appearance

-
-

Various options for mRemoteNG appearance.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Option - - Default - - Description -
Language(Automatically Detect)Which language to use for the interface of mRemoteNG.
Show description tooltips in connection treeOffHolding mouse over a item in connection tree will show a popout from mouse with information.
Show full connections file path in window titleOffAdds the complete path to the title of mRemoteNG to where the connection file is located.
Always show notification area iconOffAdds mRemoteNG to the taskbar in the OS.
Minimize to notification areaOffWill place mRemoteNG in taskbar on minimize.
- - -

Tabs & Panels

-
-

Various settings for how tabs & panels should work in mRemoteNG.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Option - - Default - - Description -
Always show panel tabsOffWill always show the tabs & panels in mRemoteNG
Open new tab to the right of the currently selected tabOnWhen active then open next tab on the right of the active selection in mRemoteNG. Turn this off and next tab will open the next connection at the end of all tabs.
Show logon information on tab namesOffShow your login in the connection tab.
Show protocols on tab namesOffWhen active then in the tab show what protocol is used for the connection.
Identify quick connect tabs by adding the prefix "Quick:"OffWhen active shows Quick: before the connection name in the tab connection to easier identify what is a quick connection and what is a non quick connection.
Double click on tab closes itOnWhen double clicking a tab it will close the connection but does not log you out from the server. The connection in this case is active on the destination server.
Always show panel selection dialog when opening connectionsOffOption to allow you to always select what panel to place the connection on. If this is off it will create a General panel where the connection is placed or use the connections set panel from the connection options.
Create a empty panel when mRemoteNG startsOffOn startup if this is active mRemoteNG will create a panel mentioned under Panel Name:
- - -

Connections

-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Option - - Default - - Description -
Single click on connections opens itOffIn connection tree when this is active will try to connect on single click. By default this is turned off to use double click to open connection.
Single click on opened connection in Connection Tree switches to the opened Connection TabOffAllows you to single click on a active connection in the connection tree to go to that open connection in the tabs faster.
Set hostname like display name when creating or renaming connectionsOffWill make mRemoteNG try to use the remote host hostname to set the title of the tab in mRemoteNG.
Save connections after every exitOnWhen active mRemoteNG will save the connection tree to the active config after every exit. If inactive then you have to save usingFile > Save Connection File or keyboard shortcutCtrl+S -
Filter search matches in connection treeOffAllows you to filter out the connections to which does not match your filter search in the connection tree. If not active the search will only select the filter to which you do search.
RDP Reconnect count5Value in seconds
-
RDP Connection Timeout20Value in seconds
-
Auto save time in minutes (0 means disabled)0Value in minutes
-
When closing connectionsWarn me when closing connectionsVarious options of how mRemoteNG should act when you close connections. The different options are listed below:
    -
  • Warn me when closing connections
  • -
  • Warn me only when closing multiple connections
  • -
  • Warn me only when exiting mRemoteNG
  • -
  • Do not warn me when closing connections
  • -
By default a warning will come up on closing a connection. Change this value based on your prefered settings.
- - -

Credentials

-
-

Options for credentials in mRemoteNG. The main purpose here is that when you have empty username, password or domain field then use below information.

- - - - - - - - - - - - - - - - - - - - - -
- Option - - Default - - Description -
NoneOnUse no specific settings on login
My Current credentials (Windows logon information)OffThis option will use the logon information for the OS. This is useful if you are in a domain that uses specific credentials and want to login to servers with those credentials.
The following:OffUse one or two of the options below for the empty login or all of them. For example if you have a different domain that you login to the servers with.
- - - -

SQL Server

-
-
- NOTE! To understand more about SQL Server connection please - See here - -
- - - - - - - - - - - -
- Option - - Default - - Description -
Use SQL Server to load & save connectionsOffEnable to fetch connections from a database.
- - -

Updates

-
-

Options for how mRemoteNG should check for updates from the website.

- - - - - - - - - - - - - - - - - - - - - -
- Option - - Default - - Description -
Check for updates at startupOn (Every 14 days)Here you can choose how often mRemoteNG checks for updates. Standard is every 14 days
Release Channel:StableThe main channel to use for mRemoteNG. Note that the channels are described under the selection. Stable is suggested for normal usage but its always good to get feedback on upcoming releases.
Use a proxy server to connectOffProxy to connect through to check for updates. This is not a proxy connection for when you connect to a server but more to check for updates.
- - - -

Theme

-
-

UI themes. This is not enabled by default but can be used inside mRemoteNG. To enable themes you have to first enable it in the checkbox at the bottom of the options. Then restart mRemoteNG in order for it to work.

-

Default theme is: vs2015light

-
- NOTE! To know more about themes and how to create your own - See Here - -
- - - - -

Advanced

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Option - - Default - - Description -
Automatically get session informationOff -
Automatically try to reconnect when disconnected from server (RDP & ICA only)Off -
Use UTF8 encoding for RDP "Load Balance info" propertyOff -
Use custom PuTTY path:Off -
To configure PuTTY sessions click this button:Launch PuTTYWill launch the putty agent so you can edit the sessions.
Maximum PuTTY and integrated external tools wait time:2 seconds -
- - - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_port_scan.htm b/mRemoteV1/Resources/Help/ui_port_scan.htm deleted file mode 100644 index be58b3fc..00000000 --- a/mRemoteV1/Resources/Help/ui_port_scan.htm +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Port Scan - - - - -

Port Scan

-
-

- The Port Scan feature (under Tools > Port Scan) is similar to a nmap port scan. -
- It will scan a range of IP addresses and to determine if specific mRemoteNG supported protocols are active. Hosts can then be bulk imported into mRemoteNG. -

- - -

Use Case

-
-

- You've just inherited a new network with little to no documentation. Inputting a range of IP addresses and scanning your entire network should give you a good idea of what is currently online. -
- Importing those devices will then give you a quick (relatively, scanning a large subnet will take a while) way to get into those devices. -

- - -

How to use

-
-
    -
  1. Start the Port Scan feature by clicking Tools > Port Scan in the menu bar.
  2. -
  3. Input your Start IP and End IP of the range you'd like to scan.
  4. -
  5. Enter the Start Port and End Port that mRemoteNG should test for.
    - TIP! If you leave this at the default of 0 & 0, the test will be for the default protocol ports that mRemoteNG supports.
    -
  6. -
  7. Click Scan
  8. -
  9. Wait. Possibly a long time.
  10. -
  11. The table will populate, and eventually you'll get a notification that the scan has completed. Alternatively, you can press Stop to end the scan at any time.
  12. -
  13. Change the dropdown to the protocol you'd like to import and click Import.
  14. -
- - - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_quick_connect.htm b/mRemoteV1/Resources/Help/ui_quick_connect.htm deleted file mode 100644 index ecb370c3..00000000 --- a/mRemoteV1/Resources/Help/ui_quick_connect.htm +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Quick Connect - - - -

Quick Connect

-
-

The Quick Connect functionality of mRemoteNG allows you to quickly connect to a remote host using a variety of network protocols.

-

Prerequisites

-
-
    -
  • Knowledge of a DNS host name or IP address
  • -
  • Knowledge of an appropriate protocol to communicate with remote host
  • -
-

OR

-
    -
  • A predefined mRemoteNG connection
  • -
-

Using QuickConnect

-
-

To use Quick Connect, ensure the Quick Connect toolbar is enabled by selecting View and then Quick Connect Toolbar.
Next, input a DNS host name or IP address into the box labeled "Connect". This box will also save previous entries during your session.
- Quick Connect Toolbar -
-
- Quick Connect Toolbar -
-
Select the appropriate network protocol by clicking the arrow next to the Connect box.
- Quick Connect Toolbar -
-
If you wish to use an existing connection, select the globe icon next to the protocol button and select the appropriate connection.

- - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_screenshot_manager.htm b/mRemoteV1/Resources/Help/ui_screenshot_manager.htm deleted file mode 100644 index f909be92..00000000 --- a/mRemoteV1/Resources/Help/ui_screenshot_manager.htm +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Screenshot Manager - - - -

Screenshot Manager

-
-

The screenshot manager is a panel and tool that can be used to organize and take screenshots inside mRemoteNG.

- -

Take a screenshot

-
-

To take a screenshot of a instance its as easy as to right click on the connection tab and press Screenshot and it will open the screenshot manager.

- - -

On the left image you will see the right click menu for the connection tab. Clicking the screenshot there will allow mRemoteNG to create a screenshot.

-

The right image is where the screenshots are stored in mRemoteNG. Here you can store and then decide what to do with the images after you are done taking screenshots.

- - -

Editing

-
-

The manager is a simple tool for saving and deleting screenshots. If you need to do more with the screenshots then the suggestion is to open them in a third party app. Here is what the manager allows you to do:

    -
  • Save
  • -
  • Save All
  • -
  • Delete
  • -
  • Delete All
  • -
-

-

Once you press save, a window to save the files will come up where you want to save the screenshots.

-

Short summary of screenshot manager is that you can sit and create screenshots without having to open a different manager all the time and instead let mRemoteNG create the main screenshot which can be edited later on.

- - - \ No newline at end of file diff --git a/mRemoteV1/Resources/Help/ui_sql_configuration.htm b/mRemoteV1/Resources/Help/ui_sql_configuration.htm deleted file mode 100644 index 47040c33..00000000 --- a/mRemoteV1/Resources/Help/ui_sql_configuration.htm +++ /dev/null @@ -1,62 +0,0 @@ - - - - - SQL Configuration - - - -

SQL Configuration

-
-
The SQL feature is in an early beta stage and not intended for use in an productive environment! I recommend you to do a full backup of your connections and settings before switching to SQL Server.
-

Supported Databases

-
-

The list below are databases which have been tested on for support. Note that other databases may be supported in the future.

-
    -
  • Microsoft™ SQL Server
  • - -
-

Steps to configure your SQL Server

-
-
    -
  1. Create a new Database called "mRemoteNG" on your SQL Server.
  2. -
  3. Run the SQL Script for your DB type listed below in topic (SQL Table creation Scripts) on the newly created Database.
  4. -
  5. Give the users that you want to grant access to the mRemoteNG Connections Database Read/Write permissions on the Database.
  6. -
-

Steps to configure mRemoteNG for SQL

-
-
    -
  1. Start mRemoteNG if it's not already running.
  2. -
  3. Go to Tools - Options - SQL Server -
  4. -
  5. Check the box that says "Use SQL Server to load & save connections".
  6. -
  7. Fill in your SQL Server hostname or ip address.
  8. -
  9. If you do not use your Windows logon info to authenticate against the SQL Server fill in the correct Username and Password.
  10. -
  11. Click OK to apply the changes. The main window title should now change to "mRemoteNG | SQL Server".
  12. -
  13. Now click on File - Save to update the tables on your SQL Server with the data from the loaded connections xml file. (Do not click File - New, this doesn't work yet)
  14. -
  15. You should now be able to do everything you were able to do with the XML storage plus see the changes live on another mRemoteNG instance that is connected to the same Database.
  16. -
-

SQL Table creation Scripts

-
-
- - - - - - - - - - - - - -
Script (click on script below for your db type)Description
- Microsoft™ SQL script - Microsoft™ SQL Server
- MySQL™ script - MySQL™ Server
-
- - \ No newline at end of file diff --git a/mRemoteV1/UI/Window/HelpWindow.cs b/mRemoteV1/UI/Window/HelpWindow.cs index 2c976380..1ec8a80c 100644 --- a/mRemoteV1/UI/Window/HelpWindow.cs +++ b/mRemoteV1/UI/Window/HelpWindow.cs @@ -9,160 +9,34 @@ namespace mRemoteNG.UI.Window public class HelpWindow : BaseWindow { #region Form Init - - private TreeView tvIndex; - private ImageList imgListHelp; - private System.ComponentModel.Container components; - private SplitContainer pnlSplitter; - private Label lblDocPath; - private WebBrowser wbHelp; + private WebBrowser _wbHelp; private void InitializeComponent() { - components = new System.ComponentModel.Container(); - Load += Help_Load; - Shown += Help_Shown; - var TreeNode1 = new TreeNode("Prerequisites"); - var TreeNode2 = new TreeNode("Installation/Update"); - var TreeNode3 = new TreeNode("Running mRemoteNG"); - var TreeNode4 = new TreeNode("Command-Line Switches"); - var TreeNode5 = new TreeNode("Getting Started", new[] {TreeNode1, TreeNode2, TreeNode3, TreeNode4}); - var TreeNode6 = new TreeNode("Menus"); - var TreeNode7 = new TreeNode("Connections"); - var TreeNode8 = new TreeNode("Config"); - var TreeNode9 = new TreeNode("Options"); - var TreeNode10 = new TreeNode("Navigation"); - var TreeNode11 = new TreeNode("Notifications"); - var TreeNode12 = new TreeNode("SQL Configuration"); - var TreeNode13 = new TreeNode("Screenshot Manager"); - var TreeNode14 = new TreeNode("SSH File Transfer"); - var TreeNode15 = new TreeNode("Quick Connect"); - var TreeNode16 = new TreeNode("Port Scan"); - var TreeNode17 = new TreeNode("External Tools"); - var TreeNode18 = new TreeNode("Import/Export"); - var TreeNode19 = new TreeNode("Keyboard Shortcuts"); - var TreeNode20 = new TreeNode("User Interface", new[] - { - TreeNode6, TreeNode7, TreeNode8, TreeNode9, TreeNode10, TreeNode11, TreeNode12, TreeNode13, TreeNode14, - TreeNode15, TreeNode16, TreeNode17, TreeNode18, TreeNode19 - }); - var TreeNode21 = new TreeNode("Common Problems (RDP)"); - var TreeNode22 = new TreeNode("Special Topics", new[] - { - TreeNode21 - }); - var TreeNode99 = new TreeNode("Help", new[] {TreeNode5, TreeNode20, TreeNode22}); - wbHelp = new WebBrowser(); - tvIndex = new TreeView(); - tvIndex.NodeMouseClick += TvIndex_NodeMouseClick; - tvIndex.AfterSelect += TvIndex_AfterSelect; - imgListHelp = new ImageList(components); - pnlSplitter = new SplitContainer(); - lblDocPath = new Label(); - pnlSplitter.Panel1.SuspendLayout(); - pnlSplitter.Panel2.SuspendLayout(); - pnlSplitter.SuspendLayout(); - SuspendLayout(); - // - //wbHelp - // - wbHelp.Anchor = AnchorStyles.Top | AnchorStyles.Bottom - | AnchorStyles.Left - | AnchorStyles.Right; - wbHelp.Location = new System.Drawing.Point(1, 36); - wbHelp.MinimumSize = new System.Drawing.Size(20, 20); - wbHelp.Name = "wbHelp"; - wbHelp.ScriptErrorsSuppressed = true; - wbHelp.Size = new System.Drawing.Size(327, 286); - wbHelp.TabIndex = 1; - // - //tvIndex - // - tvIndex.Anchor = AnchorStyles.Top | AnchorStyles.Bottom - | AnchorStyles.Left - | AnchorStyles.Right; - tvIndex.BorderStyle = BorderStyle.None; - tvIndex.HideSelection = false; - tvIndex.Location = new System.Drawing.Point(1, 1); - tvIndex.Name = "tvIndex"; - TreeNode1.Tag = "gs_prerequisites"; - TreeNode2.Tag = "gs_installation"; - TreeNode3.Tag = "gs_running_mremoteng"; - TreeNode4.Tag = "gs_command_line_switches"; - TreeNode6.Tag = "ui_menus"; - TreeNode7.Tag = "ui_connections"; - TreeNode8.Tag = "ui_config"; - TreeNode9.Tag = "ui_options"; - TreeNode10.Tag = "ui_navigation"; - TreeNode11.Tag = "ui_notifications"; - TreeNode12.Tag = "ui_sql_configuration"; - TreeNode13.Tag = "ui_screenshot_manager"; - TreeNode14.Tag = "ui_file_transfer"; - TreeNode15.Tag = "ui_quick_connect"; - TreeNode16.Tag = "ui_port_scan"; - TreeNode17.Tag = "ui_external_tools"; - TreeNode18.Tag = "ui_import_and_export"; - TreeNode19.Tag = "ui_keyboardshortcuts"; - TreeNode21.Tag = "st_common_problems_rdp"; - TreeNode99.Tag = "Index"; - tvIndex.Nodes.AddRange(new[] {TreeNode99}); - tvIndex.ShowRootLines = false; - tvIndex.Size = new System.Drawing.Size(207, 321); - tvIndex.TabIndex = 0; - // - //imgListHelp - // - imgListHelp.ColorDepth = ColorDepth.Depth32Bit; - imgListHelp.ImageSize = new System.Drawing.Size(16, 16); - imgListHelp.TransparentColor = System.Drawing.Color.Transparent; - // - //pnlSplitter - // - pnlSplitter.Anchor = AnchorStyles.Top | AnchorStyles.Bottom - | AnchorStyles.Left - | AnchorStyles.Right; - pnlSplitter.FixedPanel = FixedPanel.Panel1; - pnlSplitter.Location = new System.Drawing.Point(0, 0); - pnlSplitter.Name = "pnlSplitter"; - // - //pnlSplitter.Panel1 - // - pnlSplitter.Panel1.Controls.Add(tvIndex); - // - //pnlSplitter.Panel2 - // - pnlSplitter.Panel2.Controls.Add(lblDocPath); - pnlSplitter.Panel2.Controls.Add(wbHelp); - pnlSplitter.Size = new System.Drawing.Size(542, 323); - pnlSplitter.SplitterDistance = 209; - pnlSplitter.TabIndex = 2; - // - //lblDocPath - // - lblDocPath.Anchor = AnchorStyles.Top | AnchorStyles.Left - | AnchorStyles.Right; - lblDocPath.BackColor = System.Drawing.Color.DimGray; - lblDocPath.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, - System.Drawing.GraphicsUnit.Point, Convert.ToByte(0)); - lblDocPath.ForeColor = System.Drawing.Color.White; - lblDocPath.Location = new System.Drawing.Point(1, 1); - lblDocPath.Name = "lblDocPath"; - lblDocPath.Size = new System.Drawing.Size(327, 35); - lblDocPath.TabIndex = 2; - lblDocPath.Text = @"Introduction"; - lblDocPath.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - //Help - // - ClientSize = new System.Drawing.Size(542, 323); - Controls.Add(pnlSplitter); - Icon = Resources.Help_Icon; - TabText = @"Help"; - Text = @"Help"; - pnlSplitter.Panel1.ResumeLayout(false); - pnlSplitter.Panel2.ResumeLayout(false); - pnlSplitter.ResumeLayout(false); - ResumeLayout(false); + this._wbHelp = new System.Windows.Forms.WebBrowser(); + this.SuspendLayout(); + // + // wbHelp + // + this._wbHelp.Dock = System.Windows.Forms.DockStyle.Fill; + this._wbHelp.Location = new System.Drawing.Point(0, 0); + this._wbHelp.MinimumSize = new System.Drawing.Size(20, 20); + this._wbHelp.Name = "_wbHelp"; + this._wbHelp.ScriptErrorsSuppressed = true; + this._wbHelp.Size = new System.Drawing.Size(542, 323); + this._wbHelp.TabIndex = 1; + // + // HelpWindow + // + this.ClientSize = new System.Drawing.Size(542, 323); + this.Controls.Add(this._wbHelp); + this.Icon = global::mRemoteNG.Resources.Help_Icon; + this.Name = "HelpWindow"; + this.TabText = "Help"; + this.Text = "Help"; + this.Load += new System.EventHandler(this.HelpWindow_Load); + this.ResumeLayout(false); + } #endregion @@ -174,73 +48,15 @@ namespace mRemoteNG.UI.Window WindowType = WindowType.Help; DockPnl = new DockContent(); InitializeComponent(); - - FillImageList(); - tvIndex.ImageList = imgListHelp; - SetImages(tvIndex.Nodes[0]); } #endregion #region Private Methods - private void Help_Load(object sender, EventArgs e) + private void HelpWindow_Load(object sender, EventArgs e) { - tvIndex.Nodes[0].ExpandAll(); - tvIndex.SelectedNode = tvIndex.Nodes[0]; - } - - private void Help_Shown(object sender, EventArgs e) - { - // This can only be set once the WebBrowser control is shown, it will throw a COM exception otherwise. - wbHelp.AllowWebBrowserDrop = false; - } - - private void TvIndex_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) - { - tvIndex.SelectedNode = e.Node; - } - - private void TvIndex_AfterSelect(object sender, TreeViewEventArgs e) - { - if (!string.IsNullOrEmpty((string)e.Node.Tag)) - wbHelp.Navigate(GeneralAppInfo.HomePath + "\\Help\\" + Convert.ToString(e.Node.Tag) + ".htm"); - ChangeDocumentPath(e); - } - - private void ChangeDocumentPath(TreeViewEventArgs e) - { - lblDocPath.Text = string.Empty; - try { lblDocPath.Text += !string.IsNullOrEmpty(e.Node.Parent.Parent.Text) ? e.Node.Parent.Parent.Text + " > " : ""; } catch { /*ignored*/ } - try { lblDocPath.Text += !string.IsNullOrEmpty(e.Node.Parent.Text) ? e.Node.Parent.Text + " > ": ""; } catch { /*ignored*/ } - lblDocPath.Text += !string.IsNullOrEmpty(e.Node.Text) ? e.Node.Text : ""; - } - - private void FillImageList() - { - imgListHelp.Images.Add("File", Resources.Page); - imgListHelp.Images.Add("Folder", Resources.Folder); - imgListHelp.Images.Add("Help", Resources.Help); - } - - private static void SetImages(TreeNode node) - { - node.ImageIndex = 2; - node.SelectedImageIndex = 2; - - foreach (TreeNode n in node.Nodes) - { - if (n.Nodes.Count > 0) - { - n.ImageIndex = 1; - n.SelectedImageIndex = 1; - } - else - { - n.ImageIndex = 0; - n.SelectedImageIndex = 0; - } - } + _wbHelp.Navigate(GeneralAppInfo.HomePath + @"\Help\index.html"); } #endregion diff --git a/mRemoteV1/UI/Window/HelpWindow.resx b/mRemoteV1/UI/Window/HelpWindow.resx index ca620d88..a12588ec 100644 --- a/mRemoteV1/UI/Window/HelpWindow.resx +++ b/mRemoteV1/UI/Window/HelpWindow.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + 48 diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 7d14df2f..e5b4be9a 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -267,6 +267,7 @@ + True True @@ -1114,12 +1115,28 @@ PreserveNewest + + + + + + + + + + + + + + + + + + + - - - @@ -1148,6 +1165,8 @@ Designer PreserveNewest + + @@ -1167,102 +1186,25 @@ - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - + + + + + + + + + + + + + + + + + + + PreserveNewest @@ -1324,96 +1266,9 @@

- mRemoteNG is a multi-protocol, multi-remote connections manager that aims at providing you with a clutter-free, unstressful platform to manage all your remote connections in one place. -
- The application is released under the
GPLv2 and is being managed on Github. -
-
- As of now mRemoteNG supports the following protocols: -

- - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - + + + @@ -1522,9 +1377,45 @@ - - PreserveNewest - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest @@ -1805,6 +1696,9 @@ powershell.exe -ExecutionPolicy Bypass -File "$(SolutionDir)Tools\postbuild_mrem LocalIntranet + + OnBuildSuccess + - -## Description - - -## Motivation and Context - - - -## How Has This Been Tested? - - - - -## Screenshots (if appropriate): - -## Types of changes - -- [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Breaking change (fix or feature that would cause existing functionality to change) - -## Checklist: - - -- [ ] I have read the **CONTRIBUTING** document. -- [ ] My code follows the code style of this project. -- [ ] I have updated the changelog file accordingly. -- [ ] My change requires a change to the documentation. -- [ ] I have updated the documentation accordingly. From f21b62241a6ae8b2f978fae5a5c7af2a3a76dd9e Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 30 Apr 2019 23:03:48 +0200 Subject: [PATCH 34/38] updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70b549a7..cd5ec5e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - #416: Added ability to Enable/Disable Clipboard Sharing for RDP connections - #321: Added support for displaying on HiDPI screens ### Changed +- #1430: Revised options dialog to prevent components from overlapping in some translations (e.g. russian) - #1389: Connection config window refactoring. Default connection info buttons now always available. - #1223: Open External Links in Default Web Browser - #1129: Spanish translation improvements From 12589ffbe0c79fbc1d83afc0dbc994ec4c32d0d4 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 30 Apr 2019 23:57:18 +0200 Subject: [PATCH 35/38] more little improvements --- .../OptionsPages/AdvancedPage.Designer.cs | 77 ++--- .../OptionsPages/ConnectionsPage.Designer.cs | 4 +- .../OptionsPages/CredentialsPage.Designer.cs | 207 ++++++------ .../NotificationsPage.Designer.cs | 163 ++++----- .../OptionsPages/SecurityPage.Designer.cs | 72 ++-- .../OptionsPages/SqlServerPage.Designer.cs | 167 +++++----- .../OptionsPages/TabsPanelsPage.Designer.cs | 22 +- .../Forms/OptionsPages/ThemePage.Designer.cs | 1 + .../OptionsPages/UpdatesPage.Designer.cs | 308 +++++++++--------- .../UI/Forms/OptionsPages/UpdatesPage.cs | 12 +- 10 files changed, 524 insertions(+), 509 deletions(-) diff --git a/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.Designer.cs index 4f95343b..ab104898 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.Designer.cs @@ -52,33 +52,30 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkAutomaticallyGetSessionInfo._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkAutomaticallyGetSessionInfo.AutoSize = true; this.chkAutomaticallyGetSessionInfo.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkAutomaticallyGetSessionInfo.Location = new System.Drawing.Point(4, 4); - this.chkAutomaticallyGetSessionInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkAutomaticallyGetSessionInfo.Location = new System.Drawing.Point(3, 3); this.chkAutomaticallyGetSessionInfo.Name = "chkAutomaticallyGetSessionInfo"; - this.chkAutomaticallyGetSessionInfo.Size = new System.Drawing.Size(323, 27); + this.chkAutomaticallyGetSessionInfo.Size = new System.Drawing.Size(220, 17); this.chkAutomaticallyGetSessionInfo.TabIndex = 0; this.chkAutomaticallyGetSessionInfo.Text = "Automatically get session information"; this.chkAutomaticallyGetSessionInfo.UseVisualStyleBackColor = true; // // lblMaximumPuttyWaitTime // - this.lblMaximumPuttyWaitTime.Location = new System.Drawing.Point(4, 260); - this.lblMaximumPuttyWaitTime.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblMaximumPuttyWaitTime.Location = new System.Drawing.Point(3, 168); this.lblMaximumPuttyWaitTime.Name = "lblMaximumPuttyWaitTime"; - this.lblMaximumPuttyWaitTime.Size = new System.Drawing.Size(546, 29); + this.lblMaximumPuttyWaitTime.Size = new System.Drawing.Size(364, 20); this.lblMaximumPuttyWaitTime.TabIndex = 7; this.lblMaximumPuttyWaitTime.Text = "Maximum PuTTY wait time:"; - this.lblMaximumPuttyWaitTime.TextAlign = System.Drawing.ContentAlignment.TopRight; + this.lblMaximumPuttyWaitTime.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // chkAutomaticReconnect // this.chkAutomaticReconnect._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkAutomaticReconnect.AutoSize = true; this.chkAutomaticReconnect.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkAutomaticReconnect.Location = new System.Drawing.Point(4, 39); - this.chkAutomaticReconnect.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkAutomaticReconnect.Location = new System.Drawing.Point(3, 26); this.chkAutomaticReconnect.Name = "chkAutomaticReconnect"; - this.chkAutomaticReconnect.Size = new System.Drawing.Size(645, 27); + this.chkAutomaticReconnect.Size = new System.Drawing.Size(430, 17); this.chkAutomaticReconnect.TabIndex = 1; this.chkAutomaticReconnect.Text = "Automatically try to reconnect when disconnected from server (RDP && ICA only)"; this.chkAutomaticReconnect.UseVisualStyleBackColor = true; @@ -86,15 +83,14 @@ namespace mRemoteNG.UI.Forms.OptionsPages // numPuttyWaitTime // this.numPuttyWaitTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.numPuttyWaitTime.Location = new System.Drawing.Point(560, 260); - this.numPuttyWaitTime.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.numPuttyWaitTime.Location = new System.Drawing.Point(373, 166); this.numPuttyWaitTime.Maximum = new decimal(new int[] { 999, 0, 0, 0}); this.numPuttyWaitTime.Name = "numPuttyWaitTime"; - this.numPuttyWaitTime.Size = new System.Drawing.Size(74, 29); + this.numPuttyWaitTime.Size = new System.Drawing.Size(60, 22); this.numPuttyWaitTime.TabIndex = 7; this.numPuttyWaitTime.Value = new decimal(new int[] { 5, @@ -107,10 +103,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkUseCustomPuttyPath._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkUseCustomPuttyPath.AutoSize = true; this.chkUseCustomPuttyPath.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkUseCustomPuttyPath.Location = new System.Drawing.Point(4, 108); - this.chkUseCustomPuttyPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkUseCustomPuttyPath.Location = new System.Drawing.Point(3, 72); this.chkUseCustomPuttyPath.Name = "chkUseCustomPuttyPath"; - this.chkUseCustomPuttyPath.Size = new System.Drawing.Size(221, 27); + this.chkUseCustomPuttyPath.Size = new System.Drawing.Size(148, 17); this.chkUseCustomPuttyPath.TabIndex = 3; this.chkUseCustomPuttyPath.Text = "Use custom PuTTY path:"; this.chkUseCustomPuttyPath.UseVisualStyleBackColor = true; @@ -118,26 +113,24 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // lblConfigurePuttySessions // - this.lblConfigurePuttySessions.Location = new System.Drawing.Point(4, 207); - this.lblConfigurePuttySessions.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblConfigurePuttySessions.Location = new System.Drawing.Point(3, 132); this.lblConfigurePuttySessions.Name = "lblConfigurePuttySessions"; - this.lblConfigurePuttySessions.Size = new System.Drawing.Size(546, 38); + this.lblConfigurePuttySessions.Size = new System.Drawing.Size(364, 25); this.lblConfigurePuttySessions.TabIndex = 5; this.lblConfigurePuttySessions.Text = "To configure PuTTY sessions click this button:"; - this.lblConfigurePuttySessions.TextAlign = System.Drawing.ContentAlignment.TopRight; + this.lblConfigurePuttySessions.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // numUVNCSCPort // this.numUVNCSCPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.numUVNCSCPort.Location = new System.Drawing.Point(560, 327); - this.numUVNCSCPort.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.numUVNCSCPort.Location = new System.Drawing.Point(373, 194); this.numUVNCSCPort.Maximum = new decimal(new int[] { 65535, 0, 0, 0}); this.numUVNCSCPort.Name = "numUVNCSCPort"; - this.numUVNCSCPort.Size = new System.Drawing.Size(108, 29); + this.numUVNCSCPort.Size = new System.Drawing.Size(60, 22); this.numUVNCSCPort.TabIndex = 8; this.numUVNCSCPort.Value = new decimal(new int[] { 5500, @@ -151,10 +144,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.txtCustomPuttyPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtCustomPuttyPath.Enabled = false; this.txtCustomPuttyPath.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtCustomPuttyPath.Location = new System.Drawing.Point(32, 142); - this.txtCustomPuttyPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.txtCustomPuttyPath.Location = new System.Drawing.Point(21, 95); this.txtCustomPuttyPath.Name = "txtCustomPuttyPath"; - this.txtCustomPuttyPath.Size = new System.Drawing.Size(518, 29); + this.txtCustomPuttyPath.Size = new System.Drawing.Size(346, 22); this.txtCustomPuttyPath.TabIndex = 4; this.txtCustomPuttyPath.TextChanged += new System.EventHandler(this.txtCustomPuttyPath_TextChanged); // @@ -163,10 +155,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.btnLaunchPutty._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; this.btnLaunchPutty.Image = global::mRemoteNG.Resources.PuttyConfig; this.btnLaunchPutty.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.btnLaunchPutty.Location = new System.Drawing.Point(560, 207); - this.btnLaunchPutty.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.btnLaunchPutty.Location = new System.Drawing.Point(373, 132); this.btnLaunchPutty.Name = "btnLaunchPutty"; - this.btnLaunchPutty.Size = new System.Drawing.Size(165, 38); + this.btnLaunchPutty.Size = new System.Drawing.Size(122, 25); this.btnLaunchPutty.TabIndex = 6; this.btnLaunchPutty.Text = "Launch PuTTY"; this.btnLaunchPutty.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -175,22 +166,20 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // lblUVNCSCPort // - this.lblUVNCSCPort.Location = new System.Drawing.Point(4, 327); - this.lblUVNCSCPort.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblUVNCSCPort.Location = new System.Drawing.Point(3, 197); this.lblUVNCSCPort.Name = "lblUVNCSCPort"; - this.lblUVNCSCPort.Size = new System.Drawing.Size(546, 29); + this.lblUVNCSCPort.Size = new System.Drawing.Size(364, 19); this.lblUVNCSCPort.TabIndex = 10; this.lblUVNCSCPort.Text = "UltraVNC SingleClick Listening Port:"; - this.lblUVNCSCPort.TextAlign = System.Drawing.ContentAlignment.TopRight; + this.lblUVNCSCPort.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.lblUVNCSCPort.Visible = false; // // lblSeconds // this.lblSeconds.AutoSize = true; - this.lblSeconds.Location = new System.Drawing.Point(642, 262); - this.lblSeconds.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSeconds.Location = new System.Drawing.Point(439, 172); this.lblSeconds.Name = "lblSeconds"; - this.lblSeconds.Size = new System.Drawing.Size(71, 23); + this.lblSeconds.Size = new System.Drawing.Size(49, 13); this.lblSeconds.TabIndex = 9; this.lblSeconds.Text = "seconds"; // @@ -198,10 +187,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.btnBrowseCustomPuttyPath._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; this.btnBrowseCustomPuttyPath.Enabled = false; - this.btnBrowseCustomPuttyPath.Location = new System.Drawing.Point(560, 140); - this.btnBrowseCustomPuttyPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.btnBrowseCustomPuttyPath.Location = new System.Drawing.Point(373, 94); this.btnBrowseCustomPuttyPath.Name = "btnBrowseCustomPuttyPath"; - this.btnBrowseCustomPuttyPath.Size = new System.Drawing.Size(112, 34); + this.btnBrowseCustomPuttyPath.Size = new System.Drawing.Size(122, 25); this.btnBrowseCustomPuttyPath.TabIndex = 5; this.btnBrowseCustomPuttyPath.Text = "Browse..."; this.btnBrowseCustomPuttyPath.UseVisualStyleBackColor = true; @@ -212,17 +200,16 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkLoadBalanceInfoUseUtf8._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLoadBalanceInfoUseUtf8.AutoSize = true; this.chkLoadBalanceInfoUseUtf8.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLoadBalanceInfoUseUtf8.Location = new System.Drawing.Point(4, 74); - this.chkLoadBalanceInfoUseUtf8.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkLoadBalanceInfoUseUtf8.Location = new System.Drawing.Point(3, 49); this.chkLoadBalanceInfoUseUtf8.Name = "chkLoadBalanceInfoUseUtf8"; - this.chkLoadBalanceInfoUseUtf8.Size = new System.Drawing.Size(471, 27); + this.chkLoadBalanceInfoUseUtf8.Size = new System.Drawing.Size(317, 17); this.chkLoadBalanceInfoUseUtf8.TabIndex = 2; this.chkLoadBalanceInfoUseUtf8.Text = "Use UTF8 encoding for RDP \"Load Balance Info\" property"; this.chkLoadBalanceInfoUseUtf8.UseVisualStyleBackColor = true; // // AdvancedPage // - this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F); + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.chkLoadBalanceInfoUseUtf8); this.Controls.Add(this.chkAutomaticallyGetSessionInfo); @@ -237,9 +224,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.Controls.Add(this.lblUVNCSCPort); this.Controls.Add(this.lblSeconds); this.Controls.Add(this.btnBrowseCustomPuttyPath); - this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); + this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.Name = "AdvancedPage"; - this.Size = new System.Drawing.Size(915, 735); + this.Size = new System.Drawing.Size(610, 490); ((System.ComponentModel.ISupportInitialize)(this.numPuttyWaitTime)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numUVNCSCPort)).EndInit(); this.ResumeLayout(false); diff --git a/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.Designer.cs index 20aeadfd..7b6c309c 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.Designer.cs @@ -150,7 +150,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkSingleClickOnOpenedConnectionSwitchesToIt.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkSingleClickOnOpenedConnectionSwitchesToIt.Location = new System.Drawing.Point(3, 26); this.chkSingleClickOnOpenedConnectionSwitchesToIt.Name = "chkSingleClickOnOpenedConnectionSwitchesToIt"; - this.chkSingleClickOnOpenedConnectionSwitchesToIt.Size = new System.Drawing.Size(490, 17); + this.chkSingleClickOnOpenedConnectionSwitchesToIt.Size = new System.Drawing.Size(492, 17); this.chkSingleClickOnOpenedConnectionSwitchesToIt.TabIndex = 1; this.chkSingleClickOnOpenedConnectionSwitchesToIt.Text = global::mRemoteNG.Language.strSingleClickOnOpenConnectionSwitchesToIt; this.chkSingleClickOnOpenedConnectionSwitchesToIt.UseVisualStyleBackColor = true; @@ -310,7 +310,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkConnectionTreeTrackActiveConnection.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkConnectionTreeTrackActiveConnection.Location = new System.Drawing.Point(3, 49); this.chkConnectionTreeTrackActiveConnection.Name = "chkConnectionTreeTrackActiveConnection"; - this.chkConnectionTreeTrackActiveConnection.Size = new System.Drawing.Size(261, 17); + this.chkConnectionTreeTrackActiveConnection.Size = new System.Drawing.Size(262, 17); this.chkConnectionTreeTrackActiveConnection.TabIndex = 10; this.chkConnectionTreeTrackActiveConnection.Text = "Track active connection in the connection tree"; this.chkConnectionTreeTrackActiveConnection.UseVisualStyleBackColor = true; diff --git a/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs index c5ee713c..6098637a 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs @@ -29,45 +29,127 @@ private void InitializeComponent() { this.pnlDefaultCredentials = new System.Windows.Forms.Panel(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.txtCredentialsUsername = new mRemoteNG.UI.Controls.Base.NGTextBox(); + this.txtCredentialsPassword = new mRemoteNG.UI.Controls.Base.NGTextBox(); + this.txtCredentialsDomain = new mRemoteNG.UI.Controls.Base.NGTextBox(); + this.lblCredentialsDomain = new mRemoteNG.UI.Controls.Base.NGLabel(); + this.lblCredentialsUsername = new mRemoteNG.UI.Controls.Base.NGLabel(); + this.lblCredentialsPassword = new mRemoteNG.UI.Controls.Base.NGLabel(); this.radCredentialsCustom = new mRemoteNG.UI.Controls.Base.NGRadioButton(); this.lblDefaultCredentials = new mRemoteNG.UI.Controls.Base.NGLabel(); this.radCredentialsNoInfo = new mRemoteNG.UI.Controls.Base.NGRadioButton(); this.radCredentialsWindows = new mRemoteNG.UI.Controls.Base.NGRadioButton(); - this.txtCredentialsDomain = new mRemoteNG.UI.Controls.Base.NGTextBox(); - this.lblCredentialsUsername = new mRemoteNG.UI.Controls.Base.NGLabel(); - this.txtCredentialsPassword = new mRemoteNG.UI.Controls.Base.NGTextBox(); - this.lblCredentialsPassword = new mRemoteNG.UI.Controls.Base.NGLabel(); - this.txtCredentialsUsername = new mRemoteNG.UI.Controls.Base.NGTextBox(); - this.lblCredentialsDomain = new mRemoteNG.UI.Controls.Base.NGLabel(); this.pnlDefaultCredentials.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // // pnlDefaultCredentials // + this.pnlDefaultCredentials.Controls.Add(this.tableLayoutPanel1); this.pnlDefaultCredentials.Controls.Add(this.radCredentialsCustom); this.pnlDefaultCredentials.Controls.Add(this.lblDefaultCredentials); this.pnlDefaultCredentials.Controls.Add(this.radCredentialsNoInfo); this.pnlDefaultCredentials.Controls.Add(this.radCredentialsWindows); - this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsDomain); - this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsUsername); - this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsPassword); - this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsPassword); - this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsUsername); - this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsDomain); - this.pnlDefaultCredentials.Location = new System.Drawing.Point(4, 4); - this.pnlDefaultCredentials.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.pnlDefaultCredentials.Location = new System.Drawing.Point(3, 3); this.pnlDefaultCredentials.Name = "pnlDefaultCredentials"; - this.pnlDefaultCredentials.Size = new System.Drawing.Size(906, 262); + this.pnlDefaultCredentials.Size = new System.Drawing.Size(604, 167); this.pnlDefaultCredentials.TabIndex = 0; // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 160F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.txtCredentialsUsername, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.txtCredentialsPassword, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.txtCredentialsDomain, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.lblCredentialsDomain, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.lblCredentialsUsername, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.lblCredentialsPassword, 0, 1); + this.tableLayoutPanel1.Location = new System.Drawing.Point(23, 85); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 3; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(332, 82); + this.tableLayoutPanel1.TabIndex = 1; + // + // txtCredentialsUsername + // + this.txtCredentialsUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtCredentialsUsername.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtCredentialsUsername.Enabled = false; + this.txtCredentialsUsername.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtCredentialsUsername.Location = new System.Drawing.Point(163, 3); + this.txtCredentialsUsername.Name = "txtCredentialsUsername"; + this.txtCredentialsUsername.Size = new System.Drawing.Size(166, 22); + this.txtCredentialsUsername.TabIndex = 5; + // + // txtCredentialsPassword + // + this.txtCredentialsPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtCredentialsPassword.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtCredentialsPassword.Enabled = false; + this.txtCredentialsPassword.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtCredentialsPassword.Location = new System.Drawing.Point(163, 29); + this.txtCredentialsPassword.Name = "txtCredentialsPassword"; + this.txtCredentialsPassword.Size = new System.Drawing.Size(166, 22); + this.txtCredentialsPassword.TabIndex = 7; + this.txtCredentialsPassword.UseSystemPasswordChar = true; + // + // txtCredentialsDomain + // + this.txtCredentialsDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtCredentialsDomain.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtCredentialsDomain.Enabled = false; + this.txtCredentialsDomain.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtCredentialsDomain.Location = new System.Drawing.Point(163, 55); + this.txtCredentialsDomain.Name = "txtCredentialsDomain"; + this.txtCredentialsDomain.Size = new System.Drawing.Size(166, 22); + this.txtCredentialsDomain.TabIndex = 9; + // + // lblCredentialsDomain + // + this.lblCredentialsDomain.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.lblCredentialsDomain.Enabled = false; + this.lblCredentialsDomain.Location = new System.Drawing.Point(3, 57); + this.lblCredentialsDomain.Name = "lblCredentialsDomain"; + this.lblCredentialsDomain.Size = new System.Drawing.Size(154, 19); + this.lblCredentialsDomain.TabIndex = 8; + this.lblCredentialsDomain.Text = "Domain:"; + this.lblCredentialsDomain.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // lblCredentialsUsername + // + this.lblCredentialsUsername.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.lblCredentialsUsername.Enabled = false; + this.lblCredentialsUsername.Location = new System.Drawing.Point(3, 3); + this.lblCredentialsUsername.Name = "lblCredentialsUsername"; + this.lblCredentialsUsername.Size = new System.Drawing.Size(154, 19); + this.lblCredentialsUsername.TabIndex = 4; + this.lblCredentialsUsername.Text = "Username:"; + this.lblCredentialsUsername.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // lblCredentialsPassword + // + this.lblCredentialsPassword.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.lblCredentialsPassword.Enabled = false; + this.lblCredentialsPassword.Location = new System.Drawing.Point(3, 29); + this.lblCredentialsPassword.Name = "lblCredentialsPassword"; + this.lblCredentialsPassword.Size = new System.Drawing.Size(154, 19); + this.lblCredentialsPassword.TabIndex = 6; + this.lblCredentialsPassword.Text = "Password:"; + this.lblCredentialsPassword.TextAlign = System.Drawing.ContentAlignment.TopRight; + // // radCredentialsCustom // this.radCredentialsCustom.AutoSize = true; this.radCredentialsCustom.BackColor = System.Drawing.Color.Transparent; - this.radCredentialsCustom.Location = new System.Drawing.Point(4, 93); - this.radCredentialsCustom.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.radCredentialsCustom.Location = new System.Drawing.Point(3, 62); this.radCredentialsCustom.Name = "radCredentialsCustom"; - this.radCredentialsCustom.Size = new System.Drawing.Size(138, 27); + this.radCredentialsCustom.Size = new System.Drawing.Size(98, 17); this.radCredentialsCustom.TabIndex = 3; this.radCredentialsCustom.Text = "the following:"; this.radCredentialsCustom.UseVisualStyleBackColor = false; @@ -77,9 +159,8 @@ // this.lblDefaultCredentials.AutoSize = true; this.lblDefaultCredentials.Location = new System.Drawing.Point(0, 0); - this.lblDefaultCredentials.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblDefaultCredentials.Name = "lblDefaultCredentials"; - this.lblDefaultCredentials.Size = new System.Drawing.Size(413, 23); + this.lblDefaultCredentials.Size = new System.Drawing.Size(279, 13); this.lblDefaultCredentials.TabIndex = 0; this.lblDefaultCredentials.Text = "For empty Username, Password or Domain fields use:"; // @@ -88,10 +169,9 @@ this.radCredentialsNoInfo.AutoSize = true; this.radCredentialsNoInfo.BackColor = System.Drawing.Color.Transparent; this.radCredentialsNoInfo.Checked = true; - this.radCredentialsNoInfo.Location = new System.Drawing.Point(4, 24); - this.radCredentialsNoInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.radCredentialsNoInfo.Location = new System.Drawing.Point(3, 16); this.radCredentialsNoInfo.Name = "radCredentialsNoInfo"; - this.radCredentialsNoInfo.Size = new System.Drawing.Size(149, 27); + this.radCredentialsNoInfo.Size = new System.Drawing.Size(103, 17); this.radCredentialsNoInfo.TabIndex = 1; this.radCredentialsNoInfo.TabStop = true; this.radCredentialsNoInfo.Text = "no information"; @@ -101,91 +181,25 @@ // this.radCredentialsWindows.AutoSize = true; this.radCredentialsWindows.BackColor = System.Drawing.Color.Transparent; - this.radCredentialsWindows.Location = new System.Drawing.Point(4, 58); - this.radCredentialsWindows.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.radCredentialsWindows.Location = new System.Drawing.Point(3, 39); this.radCredentialsWindows.Name = "radCredentialsWindows"; - this.radCredentialsWindows.Size = new System.Drawing.Size(368, 27); + this.radCredentialsWindows.Size = new System.Drawing.Size(252, 17); this.radCredentialsWindows.TabIndex = 2; this.radCredentialsWindows.Text = "my current credentials (windows logon info)"; this.radCredentialsWindows.UseVisualStyleBackColor = false; // - // txtCredentialsDomain - // - this.txtCredentialsDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtCredentialsDomain.Enabled = false; - this.txtCredentialsDomain.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtCredentialsDomain.Location = new System.Drawing.Point(189, 207); - this.txtCredentialsDomain.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.txtCredentialsDomain.Name = "txtCredentialsDomain"; - this.txtCredentialsDomain.Size = new System.Drawing.Size(224, 29); - this.txtCredentialsDomain.TabIndex = 9; - // - // lblCredentialsUsername - // - this.lblCredentialsUsername.Enabled = false; - this.lblCredentialsUsername.Location = new System.Drawing.Point(30, 129); - this.lblCredentialsUsername.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCredentialsUsername.Name = "lblCredentialsUsername"; - this.lblCredentialsUsername.Size = new System.Drawing.Size(150, 29); - this.lblCredentialsUsername.TabIndex = 4; - this.lblCredentialsUsername.Text = "Username:"; - this.lblCredentialsUsername.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // txtCredentialsPassword - // - this.txtCredentialsPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtCredentialsPassword.Enabled = false; - this.txtCredentialsPassword.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtCredentialsPassword.Location = new System.Drawing.Point(189, 168); - this.txtCredentialsPassword.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.txtCredentialsPassword.Name = "txtCredentialsPassword"; - this.txtCredentialsPassword.Size = new System.Drawing.Size(224, 29); - this.txtCredentialsPassword.TabIndex = 7; - this.txtCredentialsPassword.UseSystemPasswordChar = true; - // - // lblCredentialsPassword - // - this.lblCredentialsPassword.Enabled = false; - this.lblCredentialsPassword.Location = new System.Drawing.Point(31, 168); - this.lblCredentialsPassword.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCredentialsPassword.Name = "lblCredentialsPassword"; - this.lblCredentialsPassword.Size = new System.Drawing.Size(150, 29); - this.lblCredentialsPassword.TabIndex = 6; - this.lblCredentialsPassword.Text = "Password:"; - this.lblCredentialsPassword.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // txtCredentialsUsername - // - this.txtCredentialsUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtCredentialsUsername.Enabled = false; - this.txtCredentialsUsername.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtCredentialsUsername.Location = new System.Drawing.Point(189, 129); - this.txtCredentialsUsername.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.txtCredentialsUsername.Name = "txtCredentialsUsername"; - this.txtCredentialsUsername.Size = new System.Drawing.Size(224, 29); - this.txtCredentialsUsername.TabIndex = 5; - // - // lblCredentialsDomain - // - this.lblCredentialsDomain.Enabled = false; - this.lblCredentialsDomain.Location = new System.Drawing.Point(31, 207); - this.lblCredentialsDomain.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCredentialsDomain.Name = "lblCredentialsDomain"; - this.lblCredentialsDomain.Size = new System.Drawing.Size(150, 29); - this.lblCredentialsDomain.TabIndex = 8; - this.lblCredentialsDomain.Text = "Domain:"; - this.lblCredentialsDomain.TextAlign = System.Drawing.ContentAlignment.TopRight; - // // CredentialsPage // - this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F); + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.pnlDefaultCredentials); - this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); + this.Margin = new System.Windows.Forms.Padding(4); this.Name = "CredentialsPage"; - this.Size = new System.Drawing.Size(915, 735); + this.Size = new System.Drawing.Size(610, 490); this.pnlDefaultCredentials.ResumeLayout(false); this.pnlDefaultCredentials.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); this.ResumeLayout(false); } @@ -202,5 +216,6 @@ internal Controls.Base.NGLabel lblCredentialsPassword; internal Controls.Base.NGTextBox txtCredentialsUsername; internal Controls.Base.NGLabel lblCredentialsDomain; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; } } diff --git a/mRemoteV1/UI/Forms/OptionsPages/NotificationsPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/NotificationsPage.Designer.cs index d849bfde..295b3fd0 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/NotificationsPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/NotificationsPage.Designer.cs @@ -71,10 +71,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages // labelSwitchToErrorsAndInfos // this.labelSwitchToErrorsAndInfos.AutoSize = true; - this.labelSwitchToErrorsAndInfos.Location = new System.Drawing.Point(266, 38); - this.labelSwitchToErrorsAndInfos.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.labelSwitchToErrorsAndInfos.Location = new System.Drawing.Point(177, 25); this.labelSwitchToErrorsAndInfos.Name = "labelSwitchToErrorsAndInfos"; - this.labelSwitchToErrorsAndInfos.Size = new System.Drawing.Size(257, 23); + this.labelSwitchToErrorsAndInfos.Size = new System.Drawing.Size(176, 13); this.labelSwitchToErrorsAndInfos.TabIndex = 5; this.labelSwitchToErrorsAndInfos.Text = "Switch to Notifications panel on:"; // @@ -83,10 +82,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkSwitchToMCInformation._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkSwitchToMCInformation.AutoSize = true; this.chkSwitchToMCInformation.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkSwitchToMCInformation.Location = new System.Drawing.Point(292, 100); - this.chkSwitchToMCInformation.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkSwitchToMCInformation.Location = new System.Drawing.Point(195, 64); this.chkSwitchToMCInformation.Name = "chkSwitchToMCInformation"; - this.chkSwitchToMCInformation.Size = new System.Drawing.Size(126, 27); + this.chkSwitchToMCInformation.Size = new System.Drawing.Size(87, 17); this.chkSwitchToMCInformation.TabIndex = 6; this.chkSwitchToMCInformation.Text = "Information"; this.chkSwitchToMCInformation.UseVisualStyleBackColor = true; @@ -96,10 +94,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkSwitchToMCErrors._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkSwitchToMCErrors.AutoSize = true; this.chkSwitchToMCErrors.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkSwitchToMCErrors.Location = new System.Drawing.Point(292, 170); - this.chkSwitchToMCErrors.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkSwitchToMCErrors.Location = new System.Drawing.Point(195, 110); this.chkSwitchToMCErrors.Name = "chkSwitchToMCErrors"; - this.chkSwitchToMCErrors.Size = new System.Drawing.Size(73, 27); + this.chkSwitchToMCErrors.Size = new System.Drawing.Size(51, 17); this.chkSwitchToMCErrors.TabIndex = 8; this.chkSwitchToMCErrors.Text = "Error"; this.chkSwitchToMCErrors.UseVisualStyleBackColor = true; @@ -109,10 +106,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkSwitchToMCWarnings._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkSwitchToMCWarnings.AutoSize = true; this.chkSwitchToMCWarnings.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkSwitchToMCWarnings.Location = new System.Drawing.Point(292, 135); - this.chkSwitchToMCWarnings.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkSwitchToMCWarnings.Location = new System.Drawing.Point(195, 87); this.chkSwitchToMCWarnings.Name = "chkSwitchToMCWarnings"; - this.chkSwitchToMCWarnings.Size = new System.Drawing.Size(100, 27); + this.chkSwitchToMCWarnings.Size = new System.Drawing.Size(71, 17); this.chkSwitchToMCWarnings.TabIndex = 7; this.chkSwitchToMCWarnings.Text = "Warning"; this.chkSwitchToMCWarnings.UseVisualStyleBackColor = true; @@ -128,11 +124,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.groupBoxNotifications.Controls.Add(this.chkSwitchToMCWarnings); this.groupBoxNotifications.Controls.Add(this.chkShowInfoInMC); this.groupBoxNotifications.Controls.Add(this.chkShowDebugInMC); - this.groupBoxNotifications.Location = new System.Drawing.Point(9, 3); - this.groupBoxNotifications.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxNotifications.Location = new System.Drawing.Point(6, 2); this.groupBoxNotifications.Name = "groupBoxNotifications"; - this.groupBoxNotifications.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.groupBoxNotifications.Size = new System.Drawing.Size(902, 212); + this.groupBoxNotifications.Size = new System.Drawing.Size(601, 132); this.groupBoxNotifications.TabIndex = 0; this.groupBoxNotifications.TabStop = false; this.groupBoxNotifications.Text = "Notifications Panel"; @@ -140,10 +134,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages // labelNotificationsShowTypes // this.labelNotificationsShowTypes.AutoSize = true; - this.labelNotificationsShowTypes.Location = new System.Drawing.Point(9, 38); - this.labelNotificationsShowTypes.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.labelNotificationsShowTypes.Location = new System.Drawing.Point(6, 25); this.labelNotificationsShowTypes.Name = "labelNotificationsShowTypes"; - this.labelNotificationsShowTypes.Size = new System.Drawing.Size(217, 23); + this.labelNotificationsShowTypes.Size = new System.Drawing.Size(147, 13); this.labelNotificationsShowTypes.TabIndex = 0; this.labelNotificationsShowTypes.Text = "Show these message types:"; // @@ -152,10 +145,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkShowErrorInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkShowErrorInMC.AutoSize = true; this.chkShowErrorInMC.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkShowErrorInMC.Location = new System.Drawing.Point(30, 170); - this.chkShowErrorInMC.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkShowErrorInMC.Location = new System.Drawing.Point(20, 110); this.chkShowErrorInMC.Name = "chkShowErrorInMC"; - this.chkShowErrorInMC.Size = new System.Drawing.Size(73, 27); + this.chkShowErrorInMC.Size = new System.Drawing.Size(51, 17); this.chkShowErrorInMC.TabIndex = 4; this.chkShowErrorInMC.Text = "Error"; this.chkShowErrorInMC.UseVisualStyleBackColor = true; @@ -165,10 +157,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkShowWarningInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkShowWarningInMC.AutoSize = true; this.chkShowWarningInMC.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkShowWarningInMC.Location = new System.Drawing.Point(30, 135); - this.chkShowWarningInMC.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkShowWarningInMC.Location = new System.Drawing.Point(20, 87); this.chkShowWarningInMC.Name = "chkShowWarningInMC"; - this.chkShowWarningInMC.Size = new System.Drawing.Size(100, 27); + this.chkShowWarningInMC.Size = new System.Drawing.Size(71, 17); this.chkShowWarningInMC.TabIndex = 3; this.chkShowWarningInMC.Text = "Warning"; this.chkShowWarningInMC.UseVisualStyleBackColor = true; @@ -178,10 +169,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkShowInfoInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkShowInfoInMC.AutoSize = true; this.chkShowInfoInMC.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkShowInfoInMC.Location = new System.Drawing.Point(30, 100); - this.chkShowInfoInMC.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkShowInfoInMC.Location = new System.Drawing.Point(20, 64); this.chkShowInfoInMC.Name = "chkShowInfoInMC"; - this.chkShowInfoInMC.Size = new System.Drawing.Size(126, 27); + this.chkShowInfoInMC.Size = new System.Drawing.Size(87, 17); this.chkShowInfoInMC.TabIndex = 2; this.chkShowInfoInMC.Text = "Information"; this.chkShowInfoInMC.UseVisualStyleBackColor = true; @@ -191,10 +181,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkShowDebugInMC._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkShowDebugInMC.AutoSize = true; this.chkShowDebugInMC.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkShowDebugInMC.Location = new System.Drawing.Point(30, 66); - this.chkShowDebugInMC.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkShowDebugInMC.Location = new System.Drawing.Point(20, 41); this.chkShowDebugInMC.Name = "chkShowDebugInMC"; - this.chkShowDebugInMC.Size = new System.Drawing.Size(87, 27); + this.chkShowDebugInMC.Size = new System.Drawing.Size(61, 17); this.chkShowDebugInMC.TabIndex = 1; this.chkShowDebugInMC.Text = "Debug"; this.chkShowDebugInMC.UseVisualStyleBackColor = true; @@ -209,11 +198,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.groupBoxLogging.Controls.Add(this.labelLogTheseMsgTypes); this.groupBoxLogging.Controls.Add(this.labelLogFilePath); this.groupBoxLogging.Controls.Add(this.textBoxLogPath); - this.groupBoxLogging.Location = new System.Drawing.Point(9, 224); - this.groupBoxLogging.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxLogging.Location = new System.Drawing.Point(6, 140); this.groupBoxLogging.Name = "groupBoxLogging"; - this.groupBoxLogging.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.groupBoxLogging.Size = new System.Drawing.Size(902, 237); + this.groupBoxLogging.Size = new System.Drawing.Size(601, 173); this.groupBoxLogging.TabIndex = 1; this.groupBoxLogging.TabStop = false; this.groupBoxLogging.Text = "Logging"; @@ -229,13 +216,12 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.tblLogging.Controls.Add(this.chkLogInfoMsgs, 1, 0); this.tblLogging.Controls.Add(this.chkLogWarningMsgs, 2, 0); this.tblLogging.Controls.Add(this.chkLogErrorMsgs, 3, 0); - this.tblLogging.Location = new System.Drawing.Point(14, 186); - this.tblLogging.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.tblLogging.Location = new System.Drawing.Point(9, 138); this.tblLogging.Name = "tblLogging"; this.tblLogging.RowCount = 1; this.tblLogging.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tblLogging.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 38F)); - this.tblLogging.Size = new System.Drawing.Size(876, 38); + this.tblLogging.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F)); + this.tblLogging.Size = new System.Drawing.Size(585, 25); this.tblLogging.TabIndex = 7; // // chkLogDebugMsgs @@ -243,10 +229,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkLogDebugMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLogDebugMsgs.AutoSize = true; this.chkLogDebugMsgs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLogDebugMsgs.Location = new System.Drawing.Point(4, 4); - this.chkLogDebugMsgs.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkLogDebugMsgs.Location = new System.Drawing.Point(3, 3); this.chkLogDebugMsgs.Name = "chkLogDebugMsgs"; - this.chkLogDebugMsgs.Size = new System.Drawing.Size(87, 27); + this.chkLogDebugMsgs.Size = new System.Drawing.Size(61, 17); this.chkLogDebugMsgs.TabIndex = 0; this.chkLogDebugMsgs.Text = "Debug"; this.chkLogDebugMsgs.UseVisualStyleBackColor = true; @@ -256,10 +241,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkLogInfoMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLogInfoMsgs.AutoSize = true; this.chkLogInfoMsgs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLogInfoMsgs.Location = new System.Drawing.Point(223, 4); - this.chkLogInfoMsgs.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkLogInfoMsgs.Location = new System.Drawing.Point(149, 3); this.chkLogInfoMsgs.Name = "chkLogInfoMsgs"; - this.chkLogInfoMsgs.Size = new System.Drawing.Size(126, 27); + this.chkLogInfoMsgs.Size = new System.Drawing.Size(87, 17); this.chkLogInfoMsgs.TabIndex = 1; this.chkLogInfoMsgs.Text = "Information"; this.chkLogInfoMsgs.UseVisualStyleBackColor = true; @@ -269,10 +253,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkLogWarningMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLogWarningMsgs.AutoSize = true; this.chkLogWarningMsgs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLogWarningMsgs.Location = new System.Drawing.Point(442, 4); - this.chkLogWarningMsgs.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkLogWarningMsgs.Location = new System.Drawing.Point(295, 3); this.chkLogWarningMsgs.Name = "chkLogWarningMsgs"; - this.chkLogWarningMsgs.Size = new System.Drawing.Size(100, 27); + this.chkLogWarningMsgs.Size = new System.Drawing.Size(71, 17); this.chkLogWarningMsgs.TabIndex = 2; this.chkLogWarningMsgs.Text = "Warning"; this.chkLogWarningMsgs.UseVisualStyleBackColor = true; @@ -282,10 +265,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkLogErrorMsgs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLogErrorMsgs.AutoSize = true; this.chkLogErrorMsgs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLogErrorMsgs.Location = new System.Drawing.Point(661, 4); - this.chkLogErrorMsgs.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkLogErrorMsgs.Location = new System.Drawing.Point(441, 3); this.chkLogErrorMsgs.Name = "chkLogErrorMsgs"; - this.chkLogErrorMsgs.Size = new System.Drawing.Size(73, 27); + this.chkLogErrorMsgs.Size = new System.Drawing.Size(51, 17); this.chkLogErrorMsgs.TabIndex = 3; this.chkLogErrorMsgs.Text = "Error"; this.chkLogErrorMsgs.UseVisualStyleBackColor = true; @@ -295,10 +277,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkLogToCurrentDir._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkLogToCurrentDir.AutoSize = true; this.chkLogToCurrentDir.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkLogToCurrentDir.Location = new System.Drawing.Point(14, 27); - this.chkLogToCurrentDir.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkLogToCurrentDir.Location = new System.Drawing.Point(9, 18); this.chkLogToCurrentDir.Name = "chkLogToCurrentDir"; - this.chkLogToCurrentDir.Size = new System.Drawing.Size(246, 27); + this.chkLogToCurrentDir.Size = new System.Drawing.Size(168, 17); this.chkLogToCurrentDir.TabIndex = 0; this.chkLogToCurrentDir.Text = "Log to application directory"; this.chkLogToCurrentDir.UseVisualStyleBackColor = true; @@ -307,10 +288,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages // buttonRestoreDefaultLogPath // this.buttonRestoreDefaultLogPath._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; - this.buttonRestoreDefaultLogPath.Location = new System.Drawing.Point(650, 124); - this.buttonRestoreDefaultLogPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.buttonRestoreDefaultLogPath.Location = new System.Drawing.Point(9, 85); this.buttonRestoreDefaultLogPath.Name = "buttonRestoreDefaultLogPath"; - this.buttonRestoreDefaultLogPath.Size = new System.Drawing.Size(240, 34); + this.buttonRestoreDefaultLogPath.Size = new System.Drawing.Size(179, 25); this.buttonRestoreDefaultLogPath.TabIndex = 5; this.buttonRestoreDefaultLogPath.Text = "Use Default"; this.buttonRestoreDefaultLogPath.UseVisualStyleBackColor = true; @@ -319,10 +299,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages // buttonOpenLogFile // this.buttonOpenLogFile._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; - this.buttonOpenLogFile.Location = new System.Drawing.Point(14, 124); - this.buttonOpenLogFile.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.buttonOpenLogFile.Location = new System.Drawing.Point(378, 85); this.buttonOpenLogFile.Name = "buttonOpenLogFile"; - this.buttonOpenLogFile.Size = new System.Drawing.Size(158, 34); + this.buttonOpenLogFile.Size = new System.Drawing.Size(105, 25); this.buttonOpenLogFile.TabIndex = 3; this.buttonOpenLogFile.Text = "Open File"; this.buttonOpenLogFile.UseVisualStyleBackColor = true; @@ -331,10 +310,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages // buttonSelectLogPath // this.buttonSelectLogPath._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; - this.buttonSelectLogPath.Location = new System.Drawing.Point(180, 124); - this.buttonSelectLogPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.buttonSelectLogPath.Location = new System.Drawing.Point(489, 85); this.buttonSelectLogPath.Name = "buttonSelectLogPath"; - this.buttonSelectLogPath.Size = new System.Drawing.Size(158, 34); + this.buttonSelectLogPath.Size = new System.Drawing.Size(105, 25); this.buttonSelectLogPath.TabIndex = 4; this.buttonSelectLogPath.Text = "Choose Path"; this.buttonSelectLogPath.UseVisualStyleBackColor = true; @@ -343,20 +321,18 @@ namespace mRemoteNG.UI.Forms.OptionsPages // labelLogTheseMsgTypes // this.labelLogTheseMsgTypes.AutoSize = true; - this.labelLogTheseMsgTypes.Location = new System.Drawing.Point(9, 162); - this.labelLogTheseMsgTypes.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.labelLogTheseMsgTypes.Location = new System.Drawing.Point(6, 122); this.labelLogTheseMsgTypes.Name = "labelLogTheseMsgTypes"; - this.labelLogTheseMsgTypes.Size = new System.Drawing.Size(204, 23); + this.labelLogTheseMsgTypes.Size = new System.Drawing.Size(137, 13); this.labelLogTheseMsgTypes.TabIndex = 6; this.labelLogTheseMsgTypes.Text = "Log these message types:"; // // labelLogFilePath // this.labelLogFilePath.AutoSize = true; - this.labelLogFilePath.Location = new System.Drawing.Point(9, 57); - this.labelLogFilePath.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.labelLogFilePath.Location = new System.Drawing.Point(6, 38); this.labelLogFilePath.Name = "labelLogFilePath"; - this.labelLogFilePath.Size = new System.Drawing.Size(109, 23); + this.labelLogFilePath.Size = new System.Drawing.Size(75, 13); this.labelLogFilePath.TabIndex = 1; this.labelLogFilePath.Text = "Log file path:"; // @@ -364,22 +340,19 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.textBoxLogPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.textBoxLogPath.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.textBoxLogPath.Location = new System.Drawing.Point(14, 86); - this.textBoxLogPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.textBoxLogPath.Location = new System.Drawing.Point(9, 57); this.textBoxLogPath.Name = "textBoxLogPath"; this.textBoxLogPath.ReadOnly = true; - this.textBoxLogPath.Size = new System.Drawing.Size(876, 29); + this.textBoxLogPath.Size = new System.Drawing.Size(585, 22); this.textBoxLogPath.TabIndex = 2; // // groupBoxPopups // this.groupBoxPopups.Controls.Add(this.tblPopups); this.groupBoxPopups.Controls.Add(this.labelPopupShowTypes); - this.groupBoxPopups.Location = new System.Drawing.Point(9, 470); - this.groupBoxPopups.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxPopups.Location = new System.Drawing.Point(6, 319); this.groupBoxPopups.Name = "groupBoxPopups"; - this.groupBoxPopups.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.groupBoxPopups.Size = new System.Drawing.Size(902, 111); + this.groupBoxPopups.Size = new System.Drawing.Size(601, 74); this.groupBoxPopups.TabIndex = 2; this.groupBoxPopups.TabStop = false; this.groupBoxPopups.Text = "Pop-ups"; @@ -395,13 +368,12 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.tblPopups.Controls.Add(this.chkPopupError, 3, 0); this.tblPopups.Controls.Add(this.chkPopupInfo, 1, 0); this.tblPopups.Controls.Add(this.chkPopupWarning, 2, 0); - this.tblPopups.Location = new System.Drawing.Point(16, 60); - this.tblPopups.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.tblPopups.Location = new System.Drawing.Point(11, 40); this.tblPopups.Name = "tblPopups"; this.tblPopups.RowCount = 1; this.tblPopups.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tblPopups.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 38F)); - this.tblPopups.Size = new System.Drawing.Size(876, 38); + this.tblPopups.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F)); + this.tblPopups.Size = new System.Drawing.Size(584, 25); this.tblPopups.TabIndex = 1; // // chkPopupDebug @@ -409,10 +381,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkPopupDebug._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkPopupDebug.AutoSize = true; this.chkPopupDebug.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkPopupDebug.Location = new System.Drawing.Point(4, 4); - this.chkPopupDebug.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkPopupDebug.Location = new System.Drawing.Point(3, 3); this.chkPopupDebug.Name = "chkPopupDebug"; - this.chkPopupDebug.Size = new System.Drawing.Size(87, 27); + this.chkPopupDebug.Size = new System.Drawing.Size(61, 17); this.chkPopupDebug.TabIndex = 0; this.chkPopupDebug.Text = "Debug"; this.chkPopupDebug.UseVisualStyleBackColor = true; @@ -422,10 +393,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkPopupError._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkPopupError.AutoSize = true; this.chkPopupError.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkPopupError.Location = new System.Drawing.Point(661, 4); - this.chkPopupError.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkPopupError.Location = new System.Drawing.Point(441, 3); this.chkPopupError.Name = "chkPopupError"; - this.chkPopupError.Size = new System.Drawing.Size(73, 27); + this.chkPopupError.Size = new System.Drawing.Size(51, 17); this.chkPopupError.TabIndex = 3; this.chkPopupError.Text = "Error"; this.chkPopupError.UseVisualStyleBackColor = true; @@ -435,10 +405,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkPopupInfo._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkPopupInfo.AutoSize = true; this.chkPopupInfo.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkPopupInfo.Location = new System.Drawing.Point(223, 4); - this.chkPopupInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkPopupInfo.Location = new System.Drawing.Point(149, 3); this.chkPopupInfo.Name = "chkPopupInfo"; - this.chkPopupInfo.Size = new System.Drawing.Size(126, 27); + this.chkPopupInfo.Size = new System.Drawing.Size(87, 17); this.chkPopupInfo.TabIndex = 1; this.chkPopupInfo.Text = "Information"; this.chkPopupInfo.UseVisualStyleBackColor = true; @@ -448,10 +417,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkPopupWarning._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkPopupWarning.AutoSize = true; this.chkPopupWarning.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkPopupWarning.Location = new System.Drawing.Point(442, 4); - this.chkPopupWarning.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkPopupWarning.Location = new System.Drawing.Point(295, 3); this.chkPopupWarning.Name = "chkPopupWarning"; - this.chkPopupWarning.Size = new System.Drawing.Size(100, 27); + this.chkPopupWarning.Size = new System.Drawing.Size(71, 17); this.chkPopupWarning.TabIndex = 2; this.chkPopupWarning.Text = "Warning"; this.chkPopupWarning.UseVisualStyleBackColor = true; @@ -459,23 +427,22 @@ namespace mRemoteNG.UI.Forms.OptionsPages // labelPopupShowTypes // this.labelPopupShowTypes.AutoSize = true; - this.labelPopupShowTypes.Location = new System.Drawing.Point(12, 36); - this.labelPopupShowTypes.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.labelPopupShowTypes.Location = new System.Drawing.Point(8, 24); this.labelPopupShowTypes.Name = "labelPopupShowTypes"; - this.labelPopupShowTypes.Size = new System.Drawing.Size(217, 23); + this.labelPopupShowTypes.Size = new System.Drawing.Size(147, 13); this.labelPopupShowTypes.TabIndex = 0; this.labelPopupShowTypes.Text = "Show these message types:"; // // NotificationsPage // - this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F); + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.groupBoxPopups); this.Controls.Add(this.groupBoxLogging); this.Controls.Add(this.groupBoxNotifications); - this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); + this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.Name = "NotificationsPage"; - this.Size = new System.Drawing.Size(915, 735); + this.Size = new System.Drawing.Size(610, 490); this.groupBoxNotifications.ResumeLayout(false); this.groupBoxNotifications.PerformLayout(); this.groupBoxLogging.ResumeLayout(false); diff --git a/mRemoteV1/UI/Forms/OptionsPages/SecurityPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/SecurityPage.Designer.cs index 86318aa4..ef4c347b 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/SecurityPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/SecurityPage.Designer.cs @@ -36,13 +36,15 @@ this.groupAdvancedSecurityOptions = new mRemoteNG.UI.Controls.Base.NGGroupBox(); this.numberBoxKdfIterations = new mRemoteNG.UI.Controls.Base.NGNumericUpDown(); this.labelKdfIterations = new mRemoteNG.UI.Controls.Base.NGLabel(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.groupAdvancedSecurityOptions.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numberBoxKdfIterations)).BeginInit(); + this.tableLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // // chkEncryptCompleteFile // - this.chkEncryptCompleteFile._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkEncryptCompleteFile._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkEncryptCompleteFile.AutoSize = true; this.chkEncryptCompleteFile.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkEncryptCompleteFile.Location = new System.Drawing.Point(3, 3); @@ -55,65 +57,67 @@ // comboBoxEncryptionEngine // this.comboBoxEncryptionEngine._mice = mRemoteNG.UI.Controls.Base.NGComboBox.MouseState.HOVER; + this.comboBoxEncryptionEngine.Dock = System.Windows.Forms.DockStyle.Fill; this.comboBoxEncryptionEngine.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBoxEncryptionEngine.FormattingEnabled = true; - this.comboBoxEncryptionEngine.Location = new System.Drawing.Point(191, 25); + this.comboBoxEncryptionEngine.Location = new System.Drawing.Point(223, 3); this.comboBoxEncryptionEngine.Name = "comboBoxEncryptionEngine"; - this.comboBoxEncryptionEngine.Size = new System.Drawing.Size(123, 21); + this.comboBoxEncryptionEngine.Size = new System.Drawing.Size(131, 21); this.comboBoxEncryptionEngine.Sorted = true; this.comboBoxEncryptionEngine.TabIndex = 1; // // labelEncryptionEngine // this.labelEncryptionEngine.AutoSize = true; - this.labelEncryptionEngine.Location = new System.Drawing.Point(9, 28); + this.labelEncryptionEngine.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelEncryptionEngine.Location = new System.Drawing.Point(3, 0); this.labelEncryptionEngine.Name = "labelEncryptionEngine"; - this.labelEncryptionEngine.Size = new System.Drawing.Size(101, 13); + this.labelEncryptionEngine.Size = new System.Drawing.Size(214, 26); this.labelEncryptionEngine.TabIndex = 0; this.labelEncryptionEngine.Text = "Encryption Engine"; + this.labelEncryptionEngine.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // labelBlockCipher // this.labelBlockCipher.AutoSize = true; - this.labelBlockCipher.Location = new System.Drawing.Point(9, 60); + this.labelBlockCipher.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelBlockCipher.Location = new System.Drawing.Point(3, 26); this.labelBlockCipher.Name = "labelBlockCipher"; - this.labelBlockCipher.Size = new System.Drawing.Size(105, 13); + this.labelBlockCipher.Size = new System.Drawing.Size(214, 26); this.labelBlockCipher.TabIndex = 2; this.labelBlockCipher.Text = "Block Cipher Mode"; + this.labelBlockCipher.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // comboBoxBlockCipher // this.comboBoxBlockCipher._mice = mRemoteNG.UI.Controls.Base.NGComboBox.MouseState.HOVER; + this.comboBoxBlockCipher.Dock = System.Windows.Forms.DockStyle.Fill; this.comboBoxBlockCipher.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBoxBlockCipher.FormattingEnabled = true; - this.comboBoxBlockCipher.Location = new System.Drawing.Point(191, 57); + this.comboBoxBlockCipher.Location = new System.Drawing.Point(223, 29); this.comboBoxBlockCipher.Name = "comboBoxBlockCipher"; - this.comboBoxBlockCipher.Size = new System.Drawing.Size(123, 21); + this.comboBoxBlockCipher.Size = new System.Drawing.Size(131, 21); this.comboBoxBlockCipher.TabIndex = 3; // // groupAdvancedSecurityOptions // - this.groupAdvancedSecurityOptions.Controls.Add(this.numberBoxKdfIterations); - this.groupAdvancedSecurityOptions.Controls.Add(this.labelKdfIterations); - this.groupAdvancedSecurityOptions.Controls.Add(this.comboBoxEncryptionEngine); - this.groupAdvancedSecurityOptions.Controls.Add(this.comboBoxBlockCipher); - this.groupAdvancedSecurityOptions.Controls.Add(this.labelBlockCipher); - this.groupAdvancedSecurityOptions.Controls.Add(this.labelEncryptionEngine); + this.groupAdvancedSecurityOptions.Controls.Add(this.tableLayoutPanel1); this.groupAdvancedSecurityOptions.Location = new System.Drawing.Point(3, 30); this.groupAdvancedSecurityOptions.Name = "groupAdvancedSecurityOptions"; - this.groupAdvancedSecurityOptions.Size = new System.Drawing.Size(604, 128); + this.groupAdvancedSecurityOptions.Size = new System.Drawing.Size(604, 112); this.groupAdvancedSecurityOptions.TabIndex = 1; this.groupAdvancedSecurityOptions.TabStop = false; this.groupAdvancedSecurityOptions.Text = "Advanced Security Options"; // // numberBoxKdfIterations // + this.numberBoxKdfIterations.Dock = System.Windows.Forms.DockStyle.Fill; this.numberBoxKdfIterations.Increment = new decimal(new int[] { 1000, 0, 0, 0}); - this.numberBoxKdfIterations.Location = new System.Drawing.Point(191, 88); + this.numberBoxKdfIterations.Location = new System.Drawing.Point(223, 55); this.numberBoxKdfIterations.Maximum = new decimal(new int[] { 50000, 0, @@ -125,7 +129,7 @@ 0, 0}); this.numberBoxKdfIterations.Name = "numberBoxKdfIterations"; - this.numberBoxKdfIterations.Size = new System.Drawing.Size(90, 22); + this.numberBoxKdfIterations.Size = new System.Drawing.Size(131, 22); this.numberBoxKdfIterations.TabIndex = 5; this.numberBoxKdfIterations.ThousandsSeparator = true; this.numberBoxKdfIterations.Value = new decimal(new int[] { @@ -137,11 +141,34 @@ // labelKdfIterations // this.labelKdfIterations.AutoSize = true; - this.labelKdfIterations.Location = new System.Drawing.Point(9, 90); + this.labelKdfIterations.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelKdfIterations.Location = new System.Drawing.Point(3, 52); this.labelKdfIterations.Name = "labelKdfIterations"; - this.labelKdfIterations.Size = new System.Drawing.Size(181, 13); + this.labelKdfIterations.Size = new System.Drawing.Size(214, 26); this.labelKdfIterations.TabIndex = 4; this.labelKdfIterations.Text = "Key Derivation Function Iterations"; + this.labelKdfIterations.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 220F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.Controls.Add(this.labelKdfIterations, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.numberBoxKdfIterations, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.labelBlockCipher, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.comboBoxEncryptionEngine, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.labelEncryptionEngine, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.comboBoxBlockCipher, 1, 1); + this.tableLayoutPanel1.Location = new System.Drawing.Point(6, 21); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 4; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel1.Size = new System.Drawing.Size(357, 81); + this.tableLayoutPanel1.TabIndex = 2; // // SecurityPage // @@ -149,12 +176,12 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.chkEncryptCompleteFile); this.Controls.Add(this.groupAdvancedSecurityOptions); - this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "SecurityPage"; this.Size = new System.Drawing.Size(610, 490); this.groupAdvancedSecurityOptions.ResumeLayout(false); - this.groupAdvancedSecurityOptions.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numberBoxKdfIterations)).EndInit(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -170,5 +197,6 @@ private Controls.Base.NGGroupBox groupAdvancedSecurityOptions; private Controls.Base.NGNumericUpDown numberBoxKdfIterations; private Controls.Base.NGLabel labelKdfIterations; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; } } diff --git a/mRemoteV1/UI/Forms/OptionsPages/SqlServerPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/SqlServerPage.Designer.cs index 17af37f0..43d13015 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/SqlServerPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/SqlServerPage.Designer.cs @@ -36,29 +36,31 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.lblSQLReadOnly = new mRemoteNG.UI.Controls.Base.NGLabel(); this.lblSQLType = new mRemoteNG.UI.Controls.Base.NGLabel(); this.txtSQLType = new mRemoteNG.UI.Controls.Base.NGComboBox(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); ((System.ComponentModel.ISupportInitialize)(this.imgConnectionStatus)).BeginInit(); + this.tableLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // // lblSQLDatabaseName // + this.lblSQLDatabaseName.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSQLDatabaseName.Enabled = false; - this.lblSQLDatabaseName.Location = new System.Drawing.Point(34, 231); - this.lblSQLDatabaseName.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSQLDatabaseName.Location = new System.Drawing.Point(3, 52); this.lblSQLDatabaseName.Name = "lblSQLDatabaseName"; - this.lblSQLDatabaseName.Size = new System.Drawing.Size(166, 29); + this.lblSQLDatabaseName.Size = new System.Drawing.Size(154, 26); this.lblSQLDatabaseName.TabIndex = 5; this.lblSQLDatabaseName.Text = "Database:"; - this.lblSQLDatabaseName.TextAlign = System.Drawing.ContentAlignment.TopRight; + this.lblSQLDatabaseName.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // txtSQLDatabaseName // this.txtSQLDatabaseName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtSQLDatabaseName.Dock = System.Windows.Forms.DockStyle.Fill; this.txtSQLDatabaseName.Enabled = false; this.txtSQLDatabaseName.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtSQLDatabaseName.Location = new System.Drawing.Point(210, 231); - this.txtSQLDatabaseName.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.txtSQLDatabaseName.Location = new System.Drawing.Point(163, 55); this.txtSQLDatabaseName.Name = "txtSQLDatabaseName"; - this.txtSQLDatabaseName.Size = new System.Drawing.Size(228, 29); + this.txtSQLDatabaseName.Size = new System.Drawing.Size(235, 22); this.txtSQLDatabaseName.TabIndex = 6; // // lblExperimental @@ -68,10 +70,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages | System.Windows.Forms.AnchorStyles.Right))); this.lblExperimental.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.lblExperimental.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - this.lblExperimental.Location = new System.Drawing.Point(4, 0); - this.lblExperimental.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblExperimental.Location = new System.Drawing.Point(3, 0); this.lblExperimental.Name = "lblExperimental"; - this.lblExperimental.Size = new System.Drawing.Size(894, 39); + this.lblExperimental.Size = new System.Drawing.Size(596, 26); this.lblExperimental.TabIndex = 0; this.lblExperimental.Text = "EXPERIMENTAL"; this.lblExperimental.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -81,10 +82,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkUseSQLServer._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkUseSQLServer.AutoSize = true; this.chkUseSQLServer.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkUseSQLServer.Location = new System.Drawing.Point(4, 114); - this.chkUseSQLServer.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkUseSQLServer.Location = new System.Drawing.Point(3, 76); this.chkUseSQLServer.Name = "chkUseSQLServer"; - this.chkUseSQLServer.Size = new System.Drawing.Size(364, 27); + this.chkUseSQLServer.Size = new System.Drawing.Size(244, 17); this.chkUseSQLServer.TabIndex = 2; this.chkUseSQLServer.Text = "Use SQL Server to load && save connections"; this.chkUseSQLServer.UseVisualStyleBackColor = true; @@ -92,24 +92,24 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // lblSQLUsername // + this.lblSQLUsername.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSQLUsername.Enabled = false; - this.lblSQLUsername.Location = new System.Drawing.Point(34, 270); - this.lblSQLUsername.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSQLUsername.Location = new System.Drawing.Point(3, 78); this.lblSQLUsername.Name = "lblSQLUsername"; - this.lblSQLUsername.Size = new System.Drawing.Size(166, 29); + this.lblSQLUsername.Size = new System.Drawing.Size(154, 26); this.lblSQLUsername.TabIndex = 7; this.lblSQLUsername.Text = "Username:"; - this.lblSQLUsername.TextAlign = System.Drawing.ContentAlignment.TopRight; + this.lblSQLUsername.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // txtSQLPassword // this.txtSQLPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtSQLPassword.Dock = System.Windows.Forms.DockStyle.Fill; this.txtSQLPassword.Enabled = false; this.txtSQLPassword.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtSQLPassword.Location = new System.Drawing.Point(210, 309); - this.txtSQLPassword.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.txtSQLPassword.Location = new System.Drawing.Point(163, 107); this.txtSQLPassword.Name = "txtSQLPassword"; - this.txtSQLPassword.Size = new System.Drawing.Size(228, 29); + this.txtSQLPassword.Size = new System.Drawing.Size(235, 22); this.txtSQLPassword.TabIndex = 10; this.txtSQLPassword.UseSystemPasswordChar = true; // @@ -120,66 +120,64 @@ namespace mRemoteNG.UI.Forms.OptionsPages | System.Windows.Forms.AnchorStyles.Right))); this.lblSQLInfo.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.World); this.lblSQLInfo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - this.lblSQLInfo.Location = new System.Drawing.Point(4, 38); - this.lblSQLInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSQLInfo.Location = new System.Drawing.Point(3, 25); this.lblSQLInfo.Name = "lblSQLInfo"; - this.lblSQLInfo.Size = new System.Drawing.Size(894, 39); + this.lblSQLInfo.Size = new System.Drawing.Size(596, 26); this.lblSQLInfo.TabIndex = 1; this.lblSQLInfo.Text = "Please see Help - Getting started - SQL Configuration for more Info!"; this.lblSQLInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // lblSQLServer // + this.lblSQLServer.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSQLServer.Enabled = false; - this.lblSQLServer.Location = new System.Drawing.Point(34, 192); - this.lblSQLServer.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSQLServer.Location = new System.Drawing.Point(3, 26); this.lblSQLServer.Name = "lblSQLServer"; - this.lblSQLServer.Size = new System.Drawing.Size(166, 29); + this.lblSQLServer.Size = new System.Drawing.Size(154, 26); this.lblSQLServer.TabIndex = 3; this.lblSQLServer.Text = "SQL Server:"; - this.lblSQLServer.TextAlign = System.Drawing.ContentAlignment.TopRight; + this.lblSQLServer.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // txtSQLUsername // this.txtSQLUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtSQLUsername.Dock = System.Windows.Forms.DockStyle.Fill; this.txtSQLUsername.Enabled = false; this.txtSQLUsername.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtSQLUsername.Location = new System.Drawing.Point(210, 270); - this.txtSQLUsername.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.txtSQLUsername.Location = new System.Drawing.Point(163, 81); this.txtSQLUsername.Name = "txtSQLUsername"; - this.txtSQLUsername.Size = new System.Drawing.Size(228, 29); + this.txtSQLUsername.Size = new System.Drawing.Size(235, 22); this.txtSQLUsername.TabIndex = 8; // // txtSQLServer // this.txtSQLServer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtSQLServer.Dock = System.Windows.Forms.DockStyle.Fill; this.txtSQLServer.Enabled = false; this.txtSQLServer.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtSQLServer.Location = new System.Drawing.Point(210, 192); - this.txtSQLServer.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.txtSQLServer.Location = new System.Drawing.Point(163, 29); this.txtSQLServer.Name = "txtSQLServer"; - this.txtSQLServer.Size = new System.Drawing.Size(228, 29); + this.txtSQLServer.Size = new System.Drawing.Size(235, 22); this.txtSQLServer.TabIndex = 4; // // lblSQLPassword // + this.lblSQLPassword.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSQLPassword.Enabled = false; - this.lblSQLPassword.Location = new System.Drawing.Point(34, 309); - this.lblSQLPassword.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSQLPassword.Location = new System.Drawing.Point(3, 104); this.lblSQLPassword.Name = "lblSQLPassword"; - this.lblSQLPassword.Size = new System.Drawing.Size(166, 29); + this.lblSQLPassword.Size = new System.Drawing.Size(154, 26); this.lblSQLPassword.TabIndex = 9; this.lblSQLPassword.Text = "Password:"; - this.lblSQLPassword.TextAlign = System.Drawing.ContentAlignment.TopRight; + this.lblSQLPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // btnTestConnection // this.btnTestConnection._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; this.btnTestConnection.Enabled = false; - this.btnTestConnection.Location = new System.Drawing.Point(210, 378); - this.btnTestConnection.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.btnTestConnection.Location = new System.Drawing.Point(3, 267); this.btnTestConnection.Name = "btnTestConnection"; - this.btnTestConnection.Size = new System.Drawing.Size(230, 34); + this.btnTestConnection.Size = new System.Drawing.Size(153, 25); this.btnTestConnection.TabIndex = 11; this.btnTestConnection.Text = "Test Connection"; this.btnTestConnection.UseVisualStyleBackColor = true; @@ -188,8 +186,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // imgConnectionStatus // this.imgConnectionStatus.Image = global::mRemoteNG.Resources.Help; - this.imgConnectionStatus.Location = new System.Drawing.Point(446, 382); - this.imgConnectionStatus.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.imgConnectionStatus.Location = new System.Drawing.Point(162, 272); this.imgConnectionStatus.Name = "imgConnectionStatus"; this.imgConnectionStatus.Size = new System.Drawing.Size(16, 16); this.imgConnectionStatus.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; @@ -199,87 +196,108 @@ namespace mRemoteNG.UI.Forms.OptionsPages // lblTestConnectionResults // this.lblTestConnectionResults.AutoSize = true; - this.lblTestConnectionResults.Location = new System.Drawing.Point(206, 417); - this.lblTestConnectionResults.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblTestConnectionResults.Location = new System.Drawing.Point(3, 295); this.lblTestConnectionResults.Name = "lblTestConnectionResults"; - this.lblTestConnectionResults.Size = new System.Drawing.Size(183, 23); + this.lblTestConnectionResults.Size = new System.Drawing.Size(125, 13); this.lblTestConnectionResults.TabIndex = 13; this.lblTestConnectionResults.Text = "Test connection details"; // // chkSQLReadOnly // this.chkSQLReadOnly._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; + this.chkSQLReadOnly.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); this.chkSQLReadOnly.AutoSize = true; this.chkSQLReadOnly.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkSQLReadOnly.Location = new System.Drawing.Point(210, 348); - this.chkSQLReadOnly.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkSQLReadOnly.Location = new System.Drawing.Point(163, 133); this.chkSQLReadOnly.Name = "chkSQLReadOnly"; - this.chkSQLReadOnly.Size = new System.Drawing.Size(22, 21); + this.chkSQLReadOnly.Size = new System.Drawing.Size(15, 20); this.chkSQLReadOnly.TabIndex = 14; this.chkSQLReadOnly.UseVisualStyleBackColor = true; // // lblSQLReadOnly // + this.lblSQLReadOnly.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSQLReadOnly.Enabled = false; - this.lblSQLReadOnly.Location = new System.Drawing.Point(34, 348); - this.lblSQLReadOnly.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSQLReadOnly.Location = new System.Drawing.Point(3, 130); this.lblSQLReadOnly.Name = "lblSQLReadOnly"; - this.lblSQLReadOnly.Size = new System.Drawing.Size(166, 21); + this.lblSQLReadOnly.Size = new System.Drawing.Size(154, 26); this.lblSQLReadOnly.TabIndex = 15; this.lblSQLReadOnly.Text = "Read Only:"; - this.lblSQLReadOnly.TextAlign = System.Drawing.ContentAlignment.TopRight; + this.lblSQLReadOnly.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // lblSQLType // + this.lblSQLType.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSQLType.Enabled = false; - this.lblSQLType.Location = new System.Drawing.Point(34, 153); - this.lblSQLType.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSQLType.Location = new System.Drawing.Point(3, 0); this.lblSQLType.Name = "lblSQLType"; - this.lblSQLType.Size = new System.Drawing.Size(166, 31); + this.lblSQLType.Size = new System.Drawing.Size(154, 26); this.lblSQLType.TabIndex = 20; this.lblSQLType.Text = "SQL Server Type:"; - this.lblSQLType.TextAlign = System.Drawing.ContentAlignment.TopRight; + this.lblSQLType.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // txtSQLType // this.txtSQLType._mice = mRemoteNG.UI.Controls.Base.NGComboBox.MouseState.HOVER; + this.txtSQLType.Dock = System.Windows.Forms.DockStyle.Fill; this.txtSQLType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.txtSQLType.FormattingEnabled = true; this.txtSQLType.Items.AddRange(new object[] { "mssql", "mysql"}); - this.txtSQLType.Location = new System.Drawing.Point(210, 153); - this.txtSQLType.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.txtSQLType.Location = new System.Drawing.Point(163, 3); this.txtSQLType.Name = "txtSQLType"; - this.txtSQLType.Size = new System.Drawing.Size(228, 31); + this.txtSQLType.Size = new System.Drawing.Size(235, 21); this.txtSQLType.TabIndex = 21; // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 160F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.lblSQLType, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.txtSQLType, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.lblSQLServer, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.chkSQLReadOnly, 1, 5); + this.tableLayoutPanel1.Controls.Add(this.lblSQLReadOnly, 0, 5); + this.tableLayoutPanel1.Controls.Add(this.lblSQLDatabaseName, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.txtSQLDatabaseName, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.lblSQLUsername, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.lblSQLPassword, 0, 4); + this.tableLayoutPanel1.Controls.Add(this.txtSQLServer, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.txtSQLPassword, 1, 4); + this.tableLayoutPanel1.Controls.Add(this.txtSQLUsername, 1, 3); + this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 99); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 7; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel1.Size = new System.Drawing.Size(401, 162); + this.tableLayoutPanel1.TabIndex = 22; + // // SqlServerPage // - this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F); + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.Controls.Add(this.txtSQLType); - this.Controls.Add(this.lblSQLType); - this.Controls.Add(this.lblSQLReadOnly); - this.Controls.Add(this.chkSQLReadOnly); + this.Controls.Add(this.tableLayoutPanel1); this.Controls.Add(this.lblTestConnectionResults); this.Controls.Add(this.imgConnectionStatus); this.Controls.Add(this.btnTestConnection); - this.Controls.Add(this.lblSQLDatabaseName); - this.Controls.Add(this.txtSQLDatabaseName); this.Controls.Add(this.lblExperimental); this.Controls.Add(this.chkUseSQLServer); - this.Controls.Add(this.lblSQLUsername); - this.Controls.Add(this.txtSQLPassword); this.Controls.Add(this.lblSQLInfo); - this.Controls.Add(this.lblSQLServer); - this.Controls.Add(this.txtSQLUsername); - this.Controls.Add(this.txtSQLServer); - this.Controls.Add(this.lblSQLPassword); - this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); + this.Margin = new System.Windows.Forms.Padding(4); this.Name = "SqlServerPage"; - this.Size = new System.Drawing.Size(915, 735); + this.Size = new System.Drawing.Size(610, 490); ((System.ComponentModel.ISupportInitialize)(this.imgConnectionStatus)).EndInit(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -302,5 +320,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages internal Controls.Base.NGLabel lblSQLReadOnly; internal Controls.Base.NGLabel lblSQLType; private Controls.Base.NGComboBox txtSQLType; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; } } diff --git a/mRemoteV1/UI/Forms/OptionsPages/TabsPanelsPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/TabsPanelsPage.Designer.cs index db575871..e9655bb2 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/TabsPanelsPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/TabsPanelsPage.Designer.cs @@ -46,7 +46,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkAlwaysShowPanelTabs // - this.chkAlwaysShowPanelTabs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkAlwaysShowPanelTabs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkAlwaysShowPanelTabs.AutoSize = true; this.chkAlwaysShowPanelTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkAlwaysShowPanelTabs.Location = new System.Drawing.Point(3, 3); @@ -58,7 +58,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkAlwaysShowConnectionTabs // - this.chkAlwaysShowConnectionTabs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkAlwaysShowConnectionTabs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkAlwaysShowConnectionTabs.AutoSize = true; this.chkAlwaysShowConnectionTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkAlwaysShowConnectionTabs.Location = new System.Drawing.Point(3, 26); @@ -71,7 +71,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkIdentifyQuickConnectTabs // - this.chkIdentifyQuickConnectTabs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkIdentifyQuickConnectTabs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkIdentifyQuickConnectTabs.AutoSize = true; this.chkIdentifyQuickConnectTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkIdentifyQuickConnectTabs.Location = new System.Drawing.Point(3, 118); @@ -83,7 +83,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkOpenNewTabRightOfSelected // - this.chkOpenNewTabRightOfSelected._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkOpenNewTabRightOfSelected._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkOpenNewTabRightOfSelected.AutoSize = true; this.chkOpenNewTabRightOfSelected.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkOpenNewTabRightOfSelected.Location = new System.Drawing.Point(3, 49); @@ -95,7 +95,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkAlwaysShowPanelSelectionDlg // - this.chkAlwaysShowPanelSelectionDlg._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkAlwaysShowPanelSelectionDlg._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkAlwaysShowPanelSelectionDlg.AutoSize = true; this.chkAlwaysShowPanelSelectionDlg.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkAlwaysShowPanelSelectionDlg.Location = new System.Drawing.Point(3, 164); @@ -107,7 +107,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkShowLogonInfoOnTabs // - this.chkShowLogonInfoOnTabs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkShowLogonInfoOnTabs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkShowLogonInfoOnTabs.AutoSize = true; this.chkShowLogonInfoOnTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkShowLogonInfoOnTabs.Location = new System.Drawing.Point(3, 72); @@ -119,7 +119,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkDoubleClickClosesTab // - this.chkDoubleClickClosesTab._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkDoubleClickClosesTab._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkDoubleClickClosesTab.AutoSize = true; this.chkDoubleClickClosesTab.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDoubleClickClosesTab.Location = new System.Drawing.Point(3, 141); @@ -131,7 +131,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkShowProtocolOnTabs // - this.chkShowProtocolOnTabs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkShowProtocolOnTabs._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkShowProtocolOnTabs.AutoSize = true; this.chkShowProtocolOnTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkShowProtocolOnTabs.Location = new System.Drawing.Point(3, 95); @@ -143,7 +143,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // // chkCreateEmptyPanelOnStart // - this.chkCreateEmptyPanelOnStart._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.HOVER; + this.chkCreateEmptyPanelOnStart._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkCreateEmptyPanelOnStart.AutoSize = true; this.chkCreateEmptyPanelOnStart.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkCreateEmptyPanelOnStart.Location = new System.Drawing.Point(3, 187); @@ -157,7 +157,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // txtBoxPanelName // this.txtBoxPanelName.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtBoxPanelName.Location = new System.Drawing.Point(43, 246); + this.txtBoxPanelName.Location = new System.Drawing.Point(35, 223); this.txtBoxPanelName.Name = "txtBoxPanelName"; this.txtBoxPanelName.Size = new System.Drawing.Size(213, 22); this.txtBoxPanelName.TabIndex = 8; @@ -165,7 +165,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages // lblPanelName // this.lblPanelName.AutoSize = true; - this.lblPanelName.Location = new System.Drawing.Point(40, 230); + this.lblPanelName.Location = new System.Drawing.Point(32, 207); this.lblPanelName.Name = "lblPanelName"; this.lblPanelName.Size = new System.Drawing.Size(69, 13); this.lblPanelName.TabIndex = 9; diff --git a/mRemoteV1/UI/Forms/OptionsPages/ThemePage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/ThemePage.Designer.cs index 6b55e1dd..fe7de8ba 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/ThemePage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/ThemePage.Designer.cs @@ -97,6 +97,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.listPalette.DecorateLines = true; this.listPalette.Dock = System.Windows.Forms.DockStyle.Fill; this.listPalette.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.listPalette.HideSelection = false; this.listPalette.Location = new System.Drawing.Point(3, 37); this.listPalette.Name = "listPalette"; this.listPalette.ShowGroups = false; diff --git a/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.Designer.cs index d795a419..c854a386 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.Designer.cs @@ -1,4 +1,4 @@ - + namespace mRemoteNG.UI.Forms.OptionsPages { @@ -37,34 +37,33 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.lblReleaseChannelExplanation = new mRemoteNG.UI.Controls.Base.NGTextBox(); this.cboReleaseChannel = new mRemoteNG.UI.Controls.Base.NGComboBox(); this.pnlProxy = new System.Windows.Forms.Panel(); - this.pnlProxyBasic = new System.Windows.Forms.Panel(); + this.tblProxyBasic = new System.Windows.Forms.TableLayoutPanel(); + this.numProxyPort = new mRemoteNG.UI.Controls.Base.NGNumericUpDown(); this.lblProxyAddress = new mRemoteNG.UI.Controls.Base.NGLabel(); this.txtProxyAddress = new mRemoteNG.UI.Controls.Base.NGTextBox(); this.lblProxyPort = new mRemoteNG.UI.Controls.Base.NGLabel(); - this.numProxyPort = new mRemoteNG.UI.Controls.Base.NGNumericUpDown(); - this.chkUseProxyForAutomaticUpdates = new mRemoteNG.UI.Controls.Base.NGCheckBox(); - this.chkUseProxyAuthentication = new mRemoteNG.UI.Controls.Base.NGCheckBox(); - this.pnlProxyAuthentication = new System.Windows.Forms.Panel(); + this.tblProxyAuthentication = new System.Windows.Forms.TableLayoutPanel(); + this.lblProxyPassword = new mRemoteNG.UI.Controls.Base.NGLabel(); this.lblProxyUsername = new mRemoteNG.UI.Controls.Base.NGLabel(); this.txtProxyUsername = new mRemoteNG.UI.Controls.Base.NGTextBox(); - this.lblProxyPassword = new mRemoteNG.UI.Controls.Base.NGLabel(); this.txtProxyPassword = new mRemoteNG.UI.Controls.Base.NGTextBox(); + this.chkUseProxyForAutomaticUpdates = new mRemoteNG.UI.Controls.Base.NGCheckBox(); + this.chkUseProxyAuthentication = new mRemoteNG.UI.Controls.Base.NGCheckBox(); this.btnTestProxy = new mRemoteNG.UI.Controls.Base.NGButton(); this.groupBoxReleaseChannel = new mRemoteNG.UI.Controls.Base.NGGroupBox(); this.pnlUpdateCheck.SuspendLayout(); this.pnlProxy.SuspendLayout(); - this.pnlProxyBasic.SuspendLayout(); + this.tblProxyBasic.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numProxyPort)).BeginInit(); - this.pnlProxyAuthentication.SuspendLayout(); + this.tblProxyAuthentication.SuspendLayout(); this.groupBoxReleaseChannel.SuspendLayout(); this.SuspendLayout(); // // lblUpdatesExplanation // - this.lblUpdatesExplanation.Location = new System.Drawing.Point(4, 5); - this.lblUpdatesExplanation.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblUpdatesExplanation.Location = new System.Drawing.Point(3, 3); this.lblUpdatesExplanation.Name = "lblUpdatesExplanation"; - this.lblUpdatesExplanation.Size = new System.Drawing.Size(892, 48); + this.lblUpdatesExplanation.Size = new System.Drawing.Size(595, 32); this.lblUpdatesExplanation.TabIndex = 0; this.lblUpdatesExplanation.Text = "mRemoteNG can periodically connect to the mRemoteNG website to check for updates." + ""; @@ -74,19 +73,17 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.pnlUpdateCheck.Controls.Add(this.btnUpdateCheckNow); this.pnlUpdateCheck.Controls.Add(this.chkCheckForUpdatesOnStartup); this.pnlUpdateCheck.Controls.Add(this.cboUpdateCheckFrequency); - this.pnlUpdateCheck.Location = new System.Drawing.Point(4, 57); - this.pnlUpdateCheck.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.pnlUpdateCheck.Location = new System.Drawing.Point(3, 38); this.pnlUpdateCheck.Name = "pnlUpdateCheck"; - this.pnlUpdateCheck.Size = new System.Drawing.Size(906, 128); + this.pnlUpdateCheck.Size = new System.Drawing.Size(604, 99); this.pnlUpdateCheck.TabIndex = 1; // // btnUpdateCheckNow // this.btnUpdateCheckNow._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; - this.btnUpdateCheckNow.Location = new System.Drawing.Point(4, 88); - this.btnUpdateCheckNow.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.btnUpdateCheckNow.Location = new System.Drawing.Point(5, 63); this.btnUpdateCheckNow.Name = "btnUpdateCheckNow"; - this.btnUpdateCheckNow.Size = new System.Drawing.Size(180, 34); + this.btnUpdateCheckNow.Size = new System.Drawing.Size(122, 25); this.btnUpdateCheckNow.TabIndex = 2; this.btnUpdateCheckNow.Text = "Check Now"; this.btnUpdateCheckNow.UseVisualStyleBackColor = true; @@ -97,10 +94,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkCheckForUpdatesOnStartup._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkCheckForUpdatesOnStartup.AutoSize = true; this.chkCheckForUpdatesOnStartup.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkCheckForUpdatesOnStartup.Location = new System.Drawing.Point(4, 10); - this.chkCheckForUpdatesOnStartup.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkCheckForUpdatesOnStartup.Location = new System.Drawing.Point(6, 11); this.chkCheckForUpdatesOnStartup.Name = "chkCheckForUpdatesOnStartup"; - this.chkCheckForUpdatesOnStartup.Size = new System.Drawing.Size(174, 27); + this.chkCheckForUpdatesOnStartup.Size = new System.Drawing.Size(120, 17); this.chkCheckForUpdatesOnStartup.TabIndex = 0; this.chkCheckForUpdatesOnStartup.Text = "Check for updates"; this.chkCheckForUpdatesOnStartup.UseVisualStyleBackColor = true; @@ -111,10 +107,9 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.cboUpdateCheckFrequency._mice = mRemoteNG.UI.Controls.Base.NGComboBox.MouseState.HOVER; this.cboUpdateCheckFrequency.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cboUpdateCheckFrequency.FormattingEnabled = true; - this.cboUpdateCheckFrequency.Location = new System.Drawing.Point(4, 45); - this.cboUpdateCheckFrequency.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.cboUpdateCheckFrequency.Location = new System.Drawing.Point(6, 34); this.cboUpdateCheckFrequency.Name = "cboUpdateCheckFrequency"; - this.cboUpdateCheckFrequency.Size = new System.Drawing.Size(178, 31); + this.cboUpdateCheckFrequency.Size = new System.Drawing.Size(120, 21); this.cboUpdateCheckFrequency.TabIndex = 1; // // lblReleaseChannelExplanation @@ -122,12 +117,11 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.lblReleaseChannelExplanation.BackColor = System.Drawing.SystemColors.Control; this.lblReleaseChannelExplanation.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lblReleaseChannelExplanation.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblReleaseChannelExplanation.Location = new System.Drawing.Point(4, 82); - this.lblReleaseChannelExplanation.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.lblReleaseChannelExplanation.Location = new System.Drawing.Point(6, 48); this.lblReleaseChannelExplanation.Multiline = true; this.lblReleaseChannelExplanation.Name = "lblReleaseChannelExplanation"; this.lblReleaseChannelExplanation.ReadOnly = true; - this.lblReleaseChannelExplanation.Size = new System.Drawing.Size(892, 66); + this.lblReleaseChannelExplanation.Size = new System.Drawing.Size(595, 44); this.lblReleaseChannelExplanation.TabIndex = 2; this.lblReleaseChannelExplanation.Text = "Stable channel includes final releases only.\r\nBeta channel includes Betas & Relea" + "se Candidates.\r\nDevelopment Channel includes Alphas, Betas & Release Candidates." + @@ -138,73 +132,47 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.cboReleaseChannel._mice = mRemoteNG.UI.Controls.Base.NGComboBox.MouseState.HOVER; this.cboReleaseChannel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cboReleaseChannel.FormattingEnabled = true; - this.cboReleaseChannel.Location = new System.Drawing.Point(4, 32); - this.cboReleaseChannel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.cboReleaseChannel.Location = new System.Drawing.Point(7, 21); this.cboReleaseChannel.Name = "cboReleaseChannel"; - this.cboReleaseChannel.Size = new System.Drawing.Size(178, 31); + this.cboReleaseChannel.Size = new System.Drawing.Size(120, 21); this.cboReleaseChannel.TabIndex = 1; // // pnlProxy // - this.pnlProxy.Controls.Add(this.pnlProxyBasic); + this.pnlProxy.Controls.Add(this.tblProxyBasic); + this.pnlProxy.Controls.Add(this.tblProxyAuthentication); this.pnlProxy.Controls.Add(this.chkUseProxyForAutomaticUpdates); this.pnlProxy.Controls.Add(this.chkUseProxyAuthentication); - this.pnlProxy.Controls.Add(this.pnlProxyAuthentication); this.pnlProxy.Controls.Add(this.btnTestProxy); - this.pnlProxy.Location = new System.Drawing.Point(0, 357); - this.pnlProxy.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.pnlProxy.Location = new System.Drawing.Point(3, 253); this.pnlProxy.Name = "pnlProxy"; - this.pnlProxy.Size = new System.Drawing.Size(915, 301); + this.pnlProxy.Size = new System.Drawing.Size(604, 223); this.pnlProxy.TabIndex = 3; // - // pnlProxyBasic + // tblProxyBasic // - this.pnlProxyBasic.Controls.Add(this.lblProxyAddress); - this.pnlProxyBasic.Controls.Add(this.txtProxyAddress); - this.pnlProxyBasic.Controls.Add(this.lblProxyPort); - this.pnlProxyBasic.Controls.Add(this.numProxyPort); - this.pnlProxyBasic.Enabled = false; - this.pnlProxyBasic.Location = new System.Drawing.Point(4, 42); - this.pnlProxyBasic.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.pnlProxyBasic.Name = "pnlProxyBasic"; - this.pnlProxyBasic.Size = new System.Drawing.Size(906, 56); - this.pnlProxyBasic.TabIndex = 1; - // - // lblProxyAddress - // - this.lblProxyAddress.Location = new System.Drawing.Point(13, 16); - this.lblProxyAddress.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblProxyAddress.Name = "lblProxyAddress"; - this.lblProxyAddress.Size = new System.Drawing.Size(144, 29); - this.lblProxyAddress.TabIndex = 0; - this.lblProxyAddress.Text = "Address:"; - this.lblProxyAddress.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // txtProxyAddress - // - this.txtProxyAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtProxyAddress.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtProxyAddress.Location = new System.Drawing.Point(165, 17); - this.txtProxyAddress.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.txtProxyAddress.Name = "txtProxyAddress"; - this.txtProxyAddress.Size = new System.Drawing.Size(359, 29); - this.txtProxyAddress.TabIndex = 1; - // - // lblProxyPort - // - this.lblProxyPort.Location = new System.Drawing.Point(532, 17); - this.lblProxyPort.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblProxyPort.Name = "lblProxyPort"; - this.lblProxyPort.Size = new System.Drawing.Size(96, 29); - this.lblProxyPort.TabIndex = 2; - this.lblProxyPort.Text = "Port:"; - this.lblProxyPort.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.tblProxyBasic.ColumnCount = 2; + this.tblProxyBasic.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 160F)); + this.tblProxyBasic.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tblProxyBasic.Controls.Add(this.numProxyPort, 1, 1); + this.tblProxyBasic.Controls.Add(this.lblProxyAddress, 0, 0); + this.tblProxyBasic.Controls.Add(this.txtProxyAddress, 1, 0); + this.tblProxyBasic.Controls.Add(this.lblProxyPort, 0, 1); + this.tblProxyBasic.Location = new System.Drawing.Point(6, 28); + this.tblProxyBasic.Name = "tblProxyBasic"; + this.tblProxyBasic.RowCount = 3; + this.tblProxyBasic.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tblProxyBasic.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tblProxyBasic.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tblProxyBasic.Size = new System.Drawing.Size(350, 57); + this.tblProxyBasic.TabIndex = 6; // // numProxyPort // + this.numProxyPort.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); this.numProxyPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.numProxyPort.Location = new System.Drawing.Point(636, 16); - this.numProxyPort.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.numProxyPort.Location = new System.Drawing.Point(163, 29); this.numProxyPort.Maximum = new decimal(new int[] { 65535, 0, @@ -216,7 +184,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages 0, 0}); this.numProxyPort.Name = "numProxyPort"; - this.numProxyPort.Size = new System.Drawing.Size(96, 29); + this.numProxyPort.Size = new System.Drawing.Size(64, 22); this.numProxyPort.TabIndex = 3; this.numProxyPort.Value = new decimal(new int[] { 80, @@ -224,15 +192,103 @@ namespace mRemoteNG.UI.Forms.OptionsPages 0, 0}); // + // lblProxyAddress + // + this.lblProxyAddress.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblProxyAddress.Location = new System.Drawing.Point(3, 0); + this.lblProxyAddress.Name = "lblProxyAddress"; + this.lblProxyAddress.Size = new System.Drawing.Size(154, 26); + this.lblProxyAddress.TabIndex = 0; + this.lblProxyAddress.Text = "Address:"; + this.lblProxyAddress.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // txtProxyAddress + // + this.txtProxyAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtProxyAddress.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtProxyAddress.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtProxyAddress.Location = new System.Drawing.Point(163, 3); + this.txtProxyAddress.Name = "txtProxyAddress"; + this.txtProxyAddress.Size = new System.Drawing.Size(184, 22); + this.txtProxyAddress.TabIndex = 1; + // + // lblProxyPort + // + this.lblProxyPort.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblProxyPort.Location = new System.Drawing.Point(3, 26); + this.lblProxyPort.Name = "lblProxyPort"; + this.lblProxyPort.Size = new System.Drawing.Size(154, 26); + this.lblProxyPort.TabIndex = 2; + this.lblProxyPort.Text = "Port:"; + this.lblProxyPort.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // tblProxyAuthentication + // + this.tblProxyAuthentication.ColumnCount = 2; + this.tblProxyAuthentication.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 160F)); + this.tblProxyAuthentication.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tblProxyAuthentication.Controls.Add(this.lblProxyPassword, 0, 1); + this.tblProxyAuthentication.Controls.Add(this.lblProxyUsername, 0, 0); + this.tblProxyAuthentication.Controls.Add(this.txtProxyUsername, 1, 0); + this.tblProxyAuthentication.Controls.Add(this.txtProxyPassword, 1, 1); + this.tblProxyAuthentication.Location = new System.Drawing.Point(6, 124); + this.tblProxyAuthentication.Name = "tblProxyAuthentication"; + this.tblProxyAuthentication.RowCount = 3; + this.tblProxyAuthentication.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tblProxyAuthentication.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tblProxyAuthentication.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tblProxyAuthentication.Size = new System.Drawing.Size(350, 57); + this.tblProxyAuthentication.TabIndex = 5; + // + // lblProxyPassword + // + this.lblProxyPassword.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblProxyPassword.Location = new System.Drawing.Point(3, 26); + this.lblProxyPassword.Name = "lblProxyPassword"; + this.lblProxyPassword.Size = new System.Drawing.Size(154, 26); + this.lblProxyPassword.TabIndex = 2; + this.lblProxyPassword.Text = "Password:"; + this.lblProxyPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // lblProxyUsername + // + this.lblProxyUsername.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblProxyUsername.Location = new System.Drawing.Point(3, 0); + this.lblProxyUsername.Name = "lblProxyUsername"; + this.lblProxyUsername.Size = new System.Drawing.Size(154, 26); + this.lblProxyUsername.TabIndex = 0; + this.lblProxyUsername.Text = "Username:"; + this.lblProxyUsername.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // txtProxyUsername + // + this.txtProxyUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtProxyUsername.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtProxyUsername.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtProxyUsername.Location = new System.Drawing.Point(163, 3); + this.txtProxyUsername.Name = "txtProxyUsername"; + this.txtProxyUsername.Size = new System.Drawing.Size(184, 22); + this.txtProxyUsername.TabIndex = 1; + // + // txtProxyPassword + // + this.txtProxyPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtProxyPassword.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtProxyPassword.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtProxyPassword.Location = new System.Drawing.Point(163, 29); + this.txtProxyPassword.Name = "txtProxyPassword"; + this.txtProxyPassword.Size = new System.Drawing.Size(184, 22); + this.txtProxyPassword.TabIndex = 3; + this.txtProxyPassword.UseSystemPasswordChar = true; + // // chkUseProxyForAutomaticUpdates // this.chkUseProxyForAutomaticUpdates._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT; this.chkUseProxyForAutomaticUpdates.AutoSize = true; this.chkUseProxyForAutomaticUpdates.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkUseProxyForAutomaticUpdates.Location = new System.Drawing.Point(9, 7); - this.chkUseProxyForAutomaticUpdates.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkUseProxyForAutomaticUpdates.Location = new System.Drawing.Point(6, 5); this.chkUseProxyForAutomaticUpdates.Name = "chkUseProxyForAutomaticUpdates"; - this.chkUseProxyForAutomaticUpdates.Size = new System.Drawing.Size(262, 27); + this.chkUseProxyForAutomaticUpdates.Size = new System.Drawing.Size(176, 17); this.chkUseProxyForAutomaticUpdates.TabIndex = 0; this.chkUseProxyForAutomaticUpdates.Text = "Use a proxy server to connect"; this.chkUseProxyForAutomaticUpdates.UseVisualStyleBackColor = true; @@ -244,76 +300,20 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkUseProxyAuthentication.AutoSize = true; this.chkUseProxyAuthentication.Enabled = false; this.chkUseProxyAuthentication.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkUseProxyAuthentication.Location = new System.Drawing.Point(8, 106); - this.chkUseProxyAuthentication.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.chkUseProxyAuthentication.Location = new System.Drawing.Point(6, 101); this.chkUseProxyAuthentication.Name = "chkUseProxyAuthentication"; - this.chkUseProxyAuthentication.Size = new System.Drawing.Size(345, 27); + this.chkUseProxyAuthentication.Size = new System.Drawing.Size(235, 17); this.chkUseProxyAuthentication.TabIndex = 2; this.chkUseProxyAuthentication.Text = "This proxy server requires authentication"; this.chkUseProxyAuthentication.UseVisualStyleBackColor = true; this.chkUseProxyAuthentication.CheckedChanged += new System.EventHandler(this.chkUseProxyAuthentication_CheckedChanged); // - // pnlProxyAuthentication - // - this.pnlProxyAuthentication.Controls.Add(this.lblProxyUsername); - this.pnlProxyAuthentication.Controls.Add(this.txtProxyUsername); - this.pnlProxyAuthentication.Controls.Add(this.lblProxyPassword); - this.pnlProxyAuthentication.Controls.Add(this.txtProxyPassword); - this.pnlProxyAuthentication.Enabled = false; - this.pnlProxyAuthentication.Location = new System.Drawing.Point(4, 141); - this.pnlProxyAuthentication.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.pnlProxyAuthentication.Name = "pnlProxyAuthentication"; - this.pnlProxyAuthentication.Size = new System.Drawing.Size(906, 115); - this.pnlProxyAuthentication.TabIndex = 3; - // - // lblProxyUsername - // - this.lblProxyUsername.Location = new System.Drawing.Point(13, 19); - this.lblProxyUsername.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblProxyUsername.Name = "lblProxyUsername"; - this.lblProxyUsername.Size = new System.Drawing.Size(144, 29); - this.lblProxyUsername.TabIndex = 0; - this.lblProxyUsername.Text = "Username:"; - this.lblProxyUsername.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // txtProxyUsername - // - this.txtProxyUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtProxyUsername.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtProxyUsername.Location = new System.Drawing.Point(165, 19); - this.txtProxyUsername.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.txtProxyUsername.Name = "txtProxyUsername"; - this.txtProxyUsername.Size = new System.Drawing.Size(359, 29); - this.txtProxyUsername.TabIndex = 1; - // - // lblProxyPassword - // - this.lblProxyPassword.Location = new System.Drawing.Point(13, 66); - this.lblProxyPassword.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblProxyPassword.Name = "lblProxyPassword"; - this.lblProxyPassword.Size = new System.Drawing.Size(144, 29); - this.lblProxyPassword.TabIndex = 2; - this.lblProxyPassword.Text = "Password:"; - this.lblProxyPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // txtProxyPassword - // - this.txtProxyPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtProxyPassword.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtProxyPassword.Location = new System.Drawing.Point(165, 66); - this.txtProxyPassword.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.txtProxyPassword.Name = "txtProxyPassword"; - this.txtProxyPassword.Size = new System.Drawing.Size(359, 29); - this.txtProxyPassword.TabIndex = 3; - this.txtProxyPassword.UseSystemPasswordChar = true; - // // btnTestProxy // this.btnTestProxy._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT; - this.btnTestProxy.Location = new System.Drawing.Point(8, 263); - this.btnTestProxy.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.btnTestProxy.Location = new System.Drawing.Point(6, 187); this.btnTestProxy.Name = "btnTestProxy"; - this.btnTestProxy.Size = new System.Drawing.Size(180, 34); + this.btnTestProxy.Size = new System.Drawing.Size(120, 25); this.btnTestProxy.TabIndex = 4; this.btnTestProxy.Text = "Test Proxy"; this.btnTestProxy.UseVisualStyleBackColor = true; @@ -323,35 +323,33 @@ namespace mRemoteNG.UI.Forms.OptionsPages // this.groupBoxReleaseChannel.Controls.Add(this.lblReleaseChannelExplanation); this.groupBoxReleaseChannel.Controls.Add(this.cboReleaseChannel); - this.groupBoxReleaseChannel.Location = new System.Drawing.Point(4, 193); - this.groupBoxReleaseChannel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.groupBoxReleaseChannel.Location = new System.Drawing.Point(3, 143); this.groupBoxReleaseChannel.Name = "groupBoxReleaseChannel"; - this.groupBoxReleaseChannel.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.groupBoxReleaseChannel.Size = new System.Drawing.Size(906, 156); + this.groupBoxReleaseChannel.Size = new System.Drawing.Size(604, 104); this.groupBoxReleaseChannel.TabIndex = 3; this.groupBoxReleaseChannel.TabStop = false; this.groupBoxReleaseChannel.Text = "Release Channel"; // // UpdatesPage // - this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F); + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.groupBoxReleaseChannel); this.Controls.Add(this.lblUpdatesExplanation); this.Controls.Add(this.pnlUpdateCheck); this.Controls.Add(this.pnlProxy); - this.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); + this.Margin = new System.Windows.Forms.Padding(4); this.Name = "UpdatesPage"; - this.Size = new System.Drawing.Size(915, 735); + this.Size = new System.Drawing.Size(610, 490); this.pnlUpdateCheck.ResumeLayout(false); this.pnlUpdateCheck.PerformLayout(); this.pnlProxy.ResumeLayout(false); this.pnlProxy.PerformLayout(); - this.pnlProxyBasic.ResumeLayout(false); - this.pnlProxyBasic.PerformLayout(); + this.tblProxyBasic.ResumeLayout(false); + this.tblProxyBasic.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numProxyPort)).EndInit(); - this.pnlProxyAuthentication.ResumeLayout(false); - this.pnlProxyAuthentication.PerformLayout(); + this.tblProxyAuthentication.ResumeLayout(false); + this.tblProxyAuthentication.PerformLayout(); this.groupBoxReleaseChannel.ResumeLayout(false); this.groupBoxReleaseChannel.PerformLayout(); this.ResumeLayout(false); @@ -363,14 +361,12 @@ namespace mRemoteNG.UI.Forms.OptionsPages internal Controls.Base.NGCheckBox chkCheckForUpdatesOnStartup; internal Controls.Base.NGComboBox cboUpdateCheckFrequency; internal System.Windows.Forms.Panel pnlProxy; - internal System.Windows.Forms.Panel pnlProxyBasic; internal Controls.Base.NGLabel lblProxyAddress; internal Controls.Base.NGTextBox txtProxyAddress; internal Controls.Base.NGLabel lblProxyPort; internal Controls.Base.NGNumericUpDown numProxyPort; internal Controls.Base.NGCheckBox chkUseProxyForAutomaticUpdates; internal Controls.Base.NGCheckBox chkUseProxyAuthentication; - internal System.Windows.Forms.Panel pnlProxyAuthentication; internal Controls.Base.NGLabel lblProxyUsername; internal Controls.Base.NGTextBox txtProxyUsername; internal Controls.Base.NGLabel lblProxyPassword; @@ -379,5 +375,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages private Controls.Base.NGComboBox cboReleaseChannel; private Controls.Base.NGTextBox lblReleaseChannelExplanation; private Controls.Base.NGGroupBox groupBoxReleaseChannel; + private System.Windows.Forms.TableLayoutPanel tblProxyBasic; + private System.Windows.Forms.TableLayoutPanel tblProxyAuthentication; } } \ No newline at end of file diff --git a/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.cs b/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.cs index c5ba1862..8d2031f2 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/UpdatesPage.cs @@ -110,12 +110,12 @@ namespace mRemoteNG.UI.Forms.OptionsPages } chkUseProxyForAutomaticUpdates.Checked = Settings.Default.UpdateUseProxy; - pnlProxyBasic.Enabled = Settings.Default.UpdateUseProxy; + tblProxyBasic.Enabled = Settings.Default.UpdateUseProxy; txtProxyAddress.Text = Settings.Default.UpdateProxyAddress; numProxyPort.Value = Convert.ToDecimal(Settings.Default.UpdateProxyPort); chkUseProxyAuthentication.Checked = Settings.Default.UpdateProxyUseAuthentication; - pnlProxyAuthentication.Enabled = Settings.Default.UpdateProxyUseAuthentication; + tblProxyAuthentication.Enabled = Settings.Default.UpdateProxyUseAuthentication; txtProxyUsername.Text = Settings.Default.UpdateProxyAuthUser; var cryptographyProvider = new LegacyRijndaelCryptographyProvider(); txtProxyPassword.Text = @@ -173,7 +173,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages private void chkUseProxyForAutomaticUpdates_CheckedChanged(object sender, EventArgs e) { - pnlProxyBasic.Enabled = chkUseProxyForAutomaticUpdates.Checked; + tblProxyBasic.Enabled = chkUseProxyForAutomaticUpdates.Checked; btnTestProxy.Enabled = chkUseProxyForAutomaticUpdates.Checked; if (chkUseProxyForAutomaticUpdates.Checked) @@ -182,13 +182,13 @@ namespace mRemoteNG.UI.Forms.OptionsPages if (chkUseProxyAuthentication.Checked) { - pnlProxyAuthentication.Enabled = true; + tblProxyAuthentication.Enabled = true; } } else { chkUseProxyAuthentication.Enabled = false; - pnlProxyAuthentication.Enabled = false; + tblProxyAuthentication.Enabled = false; } } @@ -221,7 +221,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages { if (chkUseProxyForAutomaticUpdates.Checked) { - pnlProxyAuthentication.Enabled = chkUseProxyAuthentication.Checked; + tblProxyAuthentication.Enabled = chkUseProxyAuthentication.Checked; } } From 8021529a4110a292b84a777fee69c557ee57910a Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Wed, 1 May 2019 22:27:54 +0200 Subject: [PATCH 36/38] added back github health files --- .github/CONTRIBUTING.md | 24 ++++++++++++++++++++++++ .github/ISSUE_TEMPLATE.md | 30 ++++++++++++++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 31 +++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..dec8ed31 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,24 @@ +**Hello, and welcome to the mRemoteNG project!** + +Open source software is best when shared with others. This also applies to the work that goes into the software. Your ideas and passion are what make this software great! +There are many ways that you can help improve mRemoteNG, even if you don't know how to program: + +- add documentation or "how-to" articles on the Wiki +- answer support questions on the forum +- add or improve a translation +- submit a pull request for a bug or feature ticket + +The GitHub Issue tracker is our preferred channel for bug reports and feature requests. +For questions or general discussion, please use [our public Gitter chat](https://gitter.im/mRemoteNG/PublicChat) or the [forum](http://forum.mremoteng.org). + +If you find a security vulnerability, do **NOT** open an issue. Email security@mremoteng.org instead. + +You'll find all information on our GitHub workflow in our [Wiki](https://github.com/mRemoteNG/mRemoteNG/wiki), or you can use these links: + +- [Branches](https://github.com/mRemoteNG/mRemoteNG/wiki/Branches) +- [Bug Repots](https://github.com/mRemoteNG/mRemoteNG/wiki/Bug-Reports) +- [Feauture Requests](https://github.com/mRemoteNG/mRemoteNG/wiki/Feature-Requests) +- [Pull Requests](https://github.com/mRemoteNG/mRemoteNG/wiki/Pull-Requests) + +Want to help but don't know where to start? Check out the issues that we've labeled with [`Help Wanted`](https://github.com/mRemoteNG/mRemoteNG/issues?q=is%3Aissue+is%3Aopen+label%3A%22Help+Wanted%22) or [`ready`](https://github.com/mRemoteNG/mRemoteNG/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3A%22ready%22). These will vary in difficulty, but should be possible for new contributors. +Even if you don't know C# you can heck out the issues that we've labeled with [`Documentation`](https://github.com/mRemoteNG/mRemoteNG/labels/Documentation). diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..53cb42df --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,30 @@ + + +## Expected Behavior + + + +## Current Behavior + + + +## Possible Solution + + + +## Steps to Reproduce (for bugs) + + +1. +2. +3. +4. + +## Context + + + +## Your Environment + +* Version used: +* Operating System and version (e.g. Windows 10 1709 x64): diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..225845bc --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,31 @@ + + +## Description + + +## Motivation and Context + + + +## How Has This Been Tested? + + + + +## Screenshots (if appropriate): + +## Types of changes + +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to change) + +## Checklist: + + +- [ ] I have read the **CONTRIBUTING** document. +- [ ] My code follows the code style of this project. +- [ ] This pull request does not target the master branch. +- [ ] I have updated the changelog file accordingly. +- [ ] My change requires a change to the documentation. +- [ ] I have updated the documentation accordingly. From 1d74cc822586626652bbb226381bce6251a9bd5a Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Wed, 1 May 2019 22:40:25 +0200 Subject: [PATCH 37/38] updated collapse/expand icons --- mRemoteV1/Resources/Images/Collapse.png | Bin 2840 -> 603 bytes mRemoteV1/Resources/Images/Expand.png | Bin 2851 -> 620 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mRemoteV1/Resources/Images/Collapse.png b/mRemoteV1/Resources/Images/Collapse.png index 4b9795060c1d64a43f53188296c734626b5e4ee5..045bec35f2a508a1025504f18f310c9d4415049f 100644 GIT binary patch delta 570 zcmV-A0>%B97TW}n8Gi-<001BJ|6u?C0fcEoLr_UWLm+T+Z)Rz1WdHyuk$sUpNW)MR zg-=t9A{7TSh&V*3P8LK(9Hojyuu$3xtvZ;z^beXeBq=VAf@{ISpT(+!i?gl{u7V)= z1LET9r060g-j@_w#CYNHKF+)6@ZNoZ(5NuY>Y4yF-8NJ4n17VbtxDam2q6FwBM@X} z8Hw~_2EO%mPrX!kQJ&@B_h0nkeHR5UFh^pz7FJwJdId5^+DmB)+Cx2l$udk%J zPHPx(EFpm;B!4KVp^OS_L}}Mav5=zkn2&$R^(V=tkgE(vjs;YqL3aJ%fAD*@R$*$= zOA5z;(2L`Ii~`-eK(p>R-^Y&AJOP5wz?I(iR~x|WC+YRJ7C8d?w}Ff6wx;X>mpj1V zlOdb3D+Or@g#z$?M&FbJ25y1gHE(XMbDTZ^8JgAd4J~kR2#gged)?>VJ)Lv=x2H9~ zA0RSvh8Ecx9{>OV24YJ`L;(K){{a7>y{D6rAs2rD2XskIMF-;r0Td??@CAZ200013 zNkl~Hs27N^v`v-)A3uI%B-aH1mh2NP1xdE100000NkvXX Iu0jG}g3o*Xf&c&j literal 2840 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 BLf-%Y From d6aadef2b89a96ea399d3325e32d1ce34980dc19 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Fri, 3 May 2019 00:01:44 +0200 Subject: [PATCH 38/38] Update CONTRIBUTING.md fixed spelling --- .github/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index dec8ed31..68626539 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -17,7 +17,7 @@ You'll find all information on our GitHub workflow in our [Wiki](https://github. - [Branches](https://github.com/mRemoteNG/mRemoteNG/wiki/Branches) - [Bug Repots](https://github.com/mRemoteNG/mRemoteNG/wiki/Bug-Reports) -- [Feauture Requests](https://github.com/mRemoteNG/mRemoteNG/wiki/Feature-Requests) +- [Feature Requests](https://github.com/mRemoteNG/mRemoteNG/wiki/Feature-Requests) - [Pull Requests](https://github.com/mRemoteNG/mRemoteNG/wiki/Pull-Requests) Want to help but don't know where to start? Check out the issues that we've labeled with [`Help Wanted`](https://github.com/mRemoteNG/mRemoteNG/issues?q=is%3Aissue+is%3Aopen+label%3A%22Help+Wanted%22) or [`ready`](https://github.com/mRemoteNG/mRemoteNG/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3A%22ready%22). These will vary in difficulty, but should be possible for new contributors.