Compare commits

...

148 Commits

Author SHA1 Message Date
Dimitrij
21ab172041 fix 2025-10-17 09:12:57 +01:00
Dimitrij
d6c2c2158a Merge pull request #2930 from mRemoteNG/renovate/aws-sdk-net-monorepo
Update dependency AWSSDK.EC2 to 4.0.43.1
2025-10-16 23:26:54 +01:00
renovate[bot]
0c50e2d78e Update dependency AWSSDK.EC2 to 4.0.43.1 2025-10-16 21:33:36 +00:00
Dimitrij
64183e8e7d Merge pull request #2929 from mRemoteNG/copilot/fix-panel-visibility-issue
Fix panel visibility issue when opening first connection
2025-10-16 22:32:56 +01:00
copilot-swe-agent[bot]
b9595d1650 Fix panel visibility check to use DockState
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 21:28:45 +00:00
copilot-swe-agent[bot]
fa3be420b8 Initial plan 2025-10-16 21:21:53 +00:00
Dimitrij
e2d1929553 Merge pull request #2925 from mRemoteNG/copilot/fix-options-panel-display
Fix Options panel corruption when toggling "Always show panel tabs"
2025-10-16 22:12:01 +01:00
Dimitrij
4f05e8dbe9 Merge pull request #2927 from mRemoteNG/renovate/aws-sdk-net-monorepo
Update dependency AWSSDK.Core to 4.0.1.1
2025-10-16 22:11:38 +01:00
renovate[bot]
ea9e79d930 Update dependency AWSSDK.Core to 4.0.1.1 2025-10-16 21:08:10 +00:00
Dimitrij
e1a8d60cd7 Merge pull request #2926 from mRemoteNG/copilot/fix-empty-space-in-tabs
[WIP] Fix empty space issue between settings in Tabs & Panels
2025-10-16 22:07:31 +01:00
copilot-swe-agent[bot]
4e20049ea3 Fix Options panel corruption when toggling 'Always show panel tabs'
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 21:05:51 +00:00
copilot-swe-agent[bot]
89ccd33fd1 Fix empty space in Tabs & Panels settings by adjusting control positions
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 21:04:59 +00:00
copilot-swe-agent[bot]
4668104e36 Initial plan 2025-10-16 21:01:20 +00:00
copilot-swe-agent[bot]
b4aa30de23 Initial plan 2025-10-16 20:55:28 +00:00
Dimitrij
526cb1fb47 small fixes 2025-10-16 21:50:59 +01:00
Dimitrij
03b395ee15 Merge pull request #2924 from mRemoteNG/copilot/fix-first-connection-panel-issue
Fix connection panel visibility issue on first connection
2025-10-16 21:45:50 +01:00
copilot-swe-agent[bot]
4125344254 Fix panel visibility issue when opening first connection
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 20:40:36 +00:00
copilot-swe-agent[bot]
531e117731 Initial plan 2025-10-16 20:31:42 +00:00
Dimitrij
588fdca4d7 Merge pull request #2922 from mRemoteNG/copilot/add-options-dialog-prompt
Add confirmation prompt when closing Options dialog with unsaved changes
2025-10-16 21:24:59 +01:00
Dimitrij
285ca46c18 Merge branch 'v1.78.2-dev' into copilot/add-options-dialog-prompt 2025-10-16 21:24:41 +01:00
Dimitrij
8bdb83eb73 Merge pull request #2919 from mRemoteNG/copilot/fix-empty-option-panel
Fix empty Options panel when Theme is canceled
2025-10-16 21:21:52 +01:00
Dimitrij
d38b71d5ea Merge branch 'v1.78.2-dev' into copilot/fix-empty-option-panel 2025-10-16 21:21:06 +01:00
copilot-swe-agent[bot]
687f06937d Fix change tracking to ignore initial loading and add tests
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 20:20:00 +00:00
copilot-swe-agent[bot]
e0799a6772 Add change tracking and prompt for unsaved options
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 20:18:11 +00:00
Dimitrij
4943dce1a8 Merge pull request #2921 from mRemoteNG/copilot/fix-options-freezing-issue
[WIP] Fix freezing issue when opening and closing Options
2025-10-16 21:16:33 +01:00
copilot-swe-agent[bot]
8dee5c0d3c Also fix event handler accumulation in OptionsWindow
- Add _isInitialized flag to OptionsWindow to prevent multiple ThemeChanged subscriptions
- Ensures ThemeChanged event is only subscribed once

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 20:14:34 +00:00
Dimitrij
018b07299e Merge pull request #2920 from mRemoteNG/copilot/fix-rdp-settings-alignment
Fix RDP settings fields alignment in Connections options page
2025-10-16 21:13:21 +01:00
copilot-swe-agent[bot]
6f52b82a6d Fix Options dialog freezing when opening/closing multiple times
- Add _isInitialized flag to prevent multiple event subscriptions
- Skip re-initialization in FrmOptions_Load when form is reused
- Properly clean up Application.Idle handler in FormClosing
- Add test to verify form can be shown/hidden multiple times

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 20:13:01 +00:00
copilot-swe-agent[bot]
e1ee905286 Initial plan 2025-10-16 20:12:40 +00:00
copilot-swe-agent[bot]
6853b158ce Fix empty Options panel when Theme is canceled
- Call RevertSettings() on all option pages when Cancel is clicked
- Enhanced ThemePage.RevertSettings() to properly revert theme changes:
  - Store original active theme in LoadSettings
  - Clear modifiedThemes list on cancel
  - Restore original theme selection
- Add VisibleChanged handler to ensure panel is populated when form is shown
- Fixes issue where Options panel was empty after canceling theme selection

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 20:09:02 +00:00
copilot-swe-agent[bot]
d705b8a45d Fix RDP settings fields alignment in Connections options page
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 20:08:58 +00:00
copilot-swe-agent[bot]
cfb707d20f Initial plan 2025-10-16 20:07:55 +00:00
copilot-swe-agent[bot]
3aedc938cb Initial plan 2025-10-16 20:05:10 +00:00
copilot-swe-agent[bot]
c70e4c66e6 Initial plan 2025-10-16 20:02:27 +00:00
Dimitrij
b727dbd604 Merge pull request #2918 from mRemoteNG/copilot/fix-connection-options-setting
[WIP] Fix connection options displaying incorrect value
2025-10-16 20:54:27 +01:00
copilot-swe-agent[bot]
cd7f237920 Add Settings.Default.Save() to ConnectionContextMenu disconnect
Found another location where ConfirmCloseConnection is changed without immediately saving.
This ensures all four code paths that change this setting persist it immediately.

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 19:52:57 +00:00
Dimitrij
a1db763060 Merge pull request #2915 from mRemoteNG/copilot/fix-password-visibility-issue
Fix password with special characters not passed correctly to External Tools
2025-10-16 20:52:35 +01:00
copilot-swe-agent[bot]
01e22740ce Fix Options page not showing correct ConfirmCloseConnection value
- Add VisibleChanged event handler to ConnectionsPage to reload settings when page becomes visible
- Save settings immediately when user checks "Don't show this message again" checkbox during connection close
- Ensures Options dialog always displays current setting value, even if changed outside the dialog

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 19:51:02 +00:00
copilot-swe-agent[bot]
6b52b6b062 Initial plan 2025-10-16 19:43:33 +00:00
Dimitrij
6781fd57af Merge pull request #2916 from mRemoteNG/copilot/fix-connection-warning-option
Fix: Set ConfirmCloseConnection to Never when "Do not show this dialog again" is checked
2025-10-16 19:38:33 +01:00
copilot-swe-agent[bot]
8b22c7812d Fix: Set ConfirmCloseConnection to Never instead of decrementing
When user checks "Do not show this dialog again" while closing a connection,
the ConfirmCloseConnection setting should be set to Never (1) instead of being
decremented. The decrement approach was incorrectly changing All (4) to Multiple (3)
instead of Never (1), which didn't match user expectations.

Fixed in:
- ConnectionTab.cs
- ConnectionWindow.cs (2 occurrences)
- ConnectionContextMenu.cs
- frmMain.cs

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 18:27:54 +00:00
copilot-swe-agent[bot]
80c1391361 Fix password passing issue in External Tools
- Changed SetProcessProperties to use Arguments property instead of splitting by space and using ArgumentList
- Added tests to verify passwords with special characters like '=' are passed correctly
- This fixes the issue where passwords like 'Z-3=Wv99/Aq' were being split incorrectly

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 18:26:41 +00:00
copilot-swe-agent[bot]
c77e6b8616 Initial plan 2025-10-16 18:22:19 +00:00
copilot-swe-agent[bot]
e04ace4820 Initial plan 2025-10-16 18:20:37 +00:00
Dimitrij
d89ea96b34 Merge pull request #2904 from mRemoteNG/copilot/fix-encryption-issue-windows-11
Fix connection file encryption failure when password protection is enabled
2025-10-16 19:19:33 +01:00
copilot-swe-agent[bot]
d5d9a8bf03 Fix PasswordString getter to never return empty password
Added defensive check in PasswordString getter to ensure it returns the default password when _customPassword is empty, even if Password property is true. This prevents encryption failures when Password is set inconsistently.

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 04:12:08 +00:00
copilot-swe-agent[bot]
ecb935868d Add tests for Password property edge cases
Added tests to verify that full file encryption works correctly when Password property is set directly without setting PasswordString, ensuring the fix prevents encryption failures.

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 04:08:46 +00:00
copilot-swe-agent[bot]
d736d3c388 Fix connection file encryption with password protection
Changed CreateProtectedAttribute to use PasswordString as source of truth instead of Password property. This prevents encryption failures when Password property is true but _customPassword is empty.

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 04:07:26 +00:00
copilot-swe-agent[bot]
2520ccd6be Initial plan 2025-10-16 03:57:26 +00:00
Dimitrij
4307dd043e Merge pull request #2903 from mRemoteNG/copilot/fix-about-tab-close-dialog
Fix About tab showing connection close dialog when closed
2025-10-16 04:54:20 +01:00
copilot-swe-agent[bot]
4ae8e4252b Convert frmAbout from Form to BaseWindow to prevent connection close dialog
- Changed frmAbout to inherit from BaseWindow instead of Form
- Updated HelpMenu to show About window in DockPanel
- Removed Form-specific properties (TopMost, StartPosition, FormBorderStyle, etc.)
- Removed Hide() behavior in OnFormClosing to allow proper tab closure
- Added TabText property for proper tab display

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-16 03:49:45 +00:00
copilot-swe-agent[bot]
995f03d03e Initial plan 2025-10-16 03:38:46 +00:00
Dimitrij
2965f598ac Merge pull request #2902 from mRemoteNG/renovate/protobuf-monorepo
Update dependency Google.Protobuf to 3.33.0
2025-10-16 04:29:48 +01:00
Dimitrij
0ad6f5aea1 Merge pull request #2901 from mRemoteNG/renovate/aws-sdk-net-monorepo
Update dependency AWSSDK.EC2 to 4.0.43
2025-10-16 04:29:35 +01:00
renovate[bot]
c6fe8ff1f1 Update dependency Google.Protobuf to 3.33.0 2025-10-15 21:36:14 +00:00
renovate[bot]
a3a6917bf8 Update dependency AWSSDK.EC2 to 4.0.43 2025-10-15 21:36:08 +00:00
Dimitrij
1d8484957e fix menu issues and add translations 2025-10-15 19:04:42 +01:00
Dimitrij
6ab67ee844 Merge pull request #2900 from mRemoteNG/copilot/fix-report-bug-link
Add "Report a Bug" menu item to Help menu and update bug report URL to GitHub issues
2025-10-15 11:11:33 +01:00
copilot-swe-agent[bot]
11fa059b1b Add Report a Bug menu item and update bug URL to GitHub issues
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-15 10:01:51 +00:00
copilot-swe-agent[bot]
847115abd6 Initial plan 2025-10-15 09:56:41 +00:00
Dimitrij
a5a0a310ce Update CREDITS.md
upd
2025-10-14 22:33:36 +01:00
Dimitrij
a72582b10f Merge pull request #2898 from mRemoteNG/renovate/aws-sdk-net-monorepo
Update dependency AWSSDK.EC2 to 4.0.42
2025-10-14 22:06:24 +01:00
Dimitrij
929e22dc5a Merge pull request #2897 from mRemoteNG/renovate/dotnet-monorepo
Update dependency Microsoft.Extensions.DependencyModel to 9.0.10
2025-10-14 22:06:12 +01:00
renovate[bot]
ec4bca9bc0 Update dependency Microsoft.Extensions.DependencyModel to 9.0.10 2025-10-14 21:05:25 +00:00
Dimitrij
0648541ce1 lib update 2025-10-14 22:04:45 +01:00
renovate[bot]
77529f29f5 Update dependency AWSSDK.EC2 to 4.0.42 2025-10-14 20:49:17 +00:00
Dimitrij
02cf1739c0 Fix language msgs 2025-10-14 19:51:16 +01:00
Dimitrij
ccd955ca7e Merge pull request #2895 from mRemoteNG/renovate/aws-sdk-net-monorepo
Update dependency AWSSDK.EC2 to 4.0.41
2025-10-14 08:12:08 +01:00
renovate[bot]
1af3b03fa8 Update dependency AWSSDK.EC2 to 4.0.41 2025-10-13 21:01:18 +00:00
Dimitrij
cc28186f73 Merge pull request #2894 from mRemoteNG/copilot/fix-options-panel-reopening
Fix Options panel not reopening after closing by clicking X on tab
2025-10-13 10:20:53 +01:00
Dimitrij
103bc8bd8b Update README.md
upd
2025-10-12 18:41:13 +01:00
copilot-swe-agent[bot]
9bcf7af467 Fix Options panel not reopening after closing
Set HideOnClose = true for OptionsWindow to prevent disposal when closed, and ensure embedded form is shown when window becomes visible again.

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-12 17:02:36 +00:00
copilot-swe-agent[bot]
8d10980875 Initial plan 2025-10-12 16:55:17 +00:00
Dimitrij
57d4945d71 Merge pull request #2890 from mRemoteNG/renovate/softprops-action-gh-release-digest
Update softprops/action-gh-release digest to 6da8fa9
2025-10-11 18:53:18 +01:00
renovate[bot]
11febb93bd Update softprops/action-gh-release digest to 6da8fa9 2025-10-11 17:51:41 +00:00
Dimitrij
cc9b83b0f8 Merge pull request #2889 from mRemoteNG/renovate/aws-sdk-net-monorepo
Update aws-sdk-net monorepo
2025-10-10 21:49:40 +01:00
renovate[bot]
54386924d7 Update aws-sdk-net monorepo 2025-10-10 20:47:56 +00:00
Dimitrij
35417bc05d Merge pull request #2888 from mRemoteNG/renovate/aws-sdk-net-monorepo
Update aws-sdk-net monorepo
2025-10-10 09:04:39 +01:00
renovate[bot]
8b212dd87f Update aws-sdk-net monorepo 2025-10-09 23:04:22 +00:00
Dimitrij
488035e124 Merge pull request #2887 from mRemoteNG/copilot/add-warning-for-disconnect-option
Add confirmation dialog when disconnecting connections from context menu
2025-10-09 19:27:33 +01:00
copilot-swe-agent[bot]
9129edb725 Add confirmation dialog for disconnect operation from context menu
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-09 17:57:17 +00:00
copilot-swe-agent[bot]
6f3882e0ca Initial plan 2025-10-09 17:51:26 +00:00
Dimitrij
f810f6aa85 Merge pull request #2885 from mRemoteNG/copilot/add-dependency-check-texts
Add dependency check texts to language pack for internationalization
2025-10-09 11:15:37 +01:00
Dimitrij
6f13111c4c Merge pull request #2886 from mRemoteNG/copilot/add-reenable-checkbox-option
[WIP] Add option to reenable 'Do not show this message again' checkbox
2025-10-09 11:13:43 +01:00
copilot-swe-agent[bot]
fcca1a1fa3 Add dependency check texts to language pack
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-09 10:12:02 +00:00
copilot-swe-agent[bot]
ac0aa9e33b Enable ConfirmCloseConnection setting in Options dialog
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-09 10:10:50 +00:00
copilot-swe-agent[bot]
6109ff7783 Initial plan 2025-10-09 10:05:22 +00:00
copilot-swe-agent[bot]
4d2d24efb3 Initial plan 2025-10-09 10:04:47 +00:00
Dimitrij
e2b7081b9e Merge pull request #2883 from heing/v1.78.2-dev
Improve 1Password logging
2025-10-09 10:47:55 +01:00
Dimitrij
6ba7fedc18 Merge pull request #2882 from mRemoteNG/renovate/gherkin-36.x
Update dependency Gherkin to v36
2025-10-09 10:47:40 +01:00
Hein Gustavsen
3973fae8ef Improve 1Password logging 2025-10-09 09:44:08 +02:00
renovate[bot]
77752f494f Update dependency Gherkin to v36 2025-10-09 05:26:22 +00:00
Simon Monai
71574b62cb Update README.md - Minimum Requirements
Update Minimum Requirements download links and formatting to match results of #2870. 

Additionally fixed one typo.
2025-10-08 23:06:49 +02:00
Dimitrij
546ba16366 Merge pull request #2875 from mRemoteNG/renovate/cucumber.messages-30.x
Update dependency Cucumber.Messages to 30.1.0
2025-10-08 16:57:47 +01:00
renovate[bot]
f61ca2ad17 Update dependency Cucumber.Messages to 30.1.0 2025-10-08 15:55:24 +00:00
Dimitrij
781afd1c3b Merge pull request #2874 from heing/v1.78.2-dev
Add 1Password integration
2025-10-08 16:54:47 +01:00
Hein Gustavsen
2bfd8495ab Fix formatting in CHANGELOG.md
Removed an empty line in the Added section.
2025-10-08 16:02:28 +02:00
Hein Gustavsen
094fa65ad6 Update CHANGELOG, add 1Password integration 2025-10-08 16:01:01 +02:00
Hein Gustavsen
ec2a652d74 Add missing ECPOnePassword in Language.Designer.cs 2025-10-08 14:21:00 +02:00
Hein Gustavsen
1b55645b81 Add 1Password integration 2025-10-08 13:56:25 +02:00
Dimitrij
5c02581c81 Merge pull request #2872 from mRemoteNG/renovate/microsoft.data.sqlclient-6.x
Update dependency Microsoft.Data.SqlClient to 6.1.2
2025-10-08 07:54:42 +01:00
renovate[bot]
62cc4780ca Update dependency Microsoft.Data.SqlClient to 6.1.2 2025-10-08 05:57:32 +00:00
Dimitrij
8f26d57f40 NB release 2025-10-08 00:01:23 +01:00
Dimitrij
3bd2fe889a upd to for check x64 vc++ 2025-10-07 23:56:48 +01:00
Dimitrij
492a2629c2 Replace to x64 version 2025-10-07 23:32:21 +01:00
Dimitrij
b64ddf32ff fix 2025-10-07 23:31:28 +01:00
Dimitrij
e86a550985 Merge branch 'v1.78.2-dev' of https://github.com/mRemoteNG/mRemoteNG into v1.78.2-dev 2025-10-07 23:31:12 +01:00
Dimitrij
fcccdacb99 Remove to update 2025-10-07 23:31:05 +01:00
Dimitrij
487de4c29b Merge pull request #2871 from simonai1254/v1.78.2-dev
Update README.md featuring Icon Project
2025-10-07 22:36:13 +01:00
Dimitrij
d36c6cb067 Merge pull request #2869 from mRemoteNG/copilot/fix-color-selection-for-panel-tabs
Fix Color property converter and add missing Display category attributes for TabColor
2025-10-07 22:31:30 +01:00
Simon Monai
a4b704252b Update README.md
Include Link to Fancy Icon Collection of @bearlikelion
2025-10-07 23:29:12 +02:00
Dimitrij
93e8d26a75 Merge branch 'v1.78.2-dev' into copilot/fix-color-selection-for-panel-tabs 2025-10-07 22:26:04 +01:00
copilot-swe-agent[bot]
0a3ecaac64 Fix Color property converter and add missing category attributes
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 21:17:26 +00:00
Simon Monai
ea6b762021 Update README.md
Add Visual C++ Dependency back in
2025-10-07 23:16:12 +02:00
Dimitrij
265a43e31c fix 2025-10-07 22:12:15 +01:00
copilot-swe-agent[bot]
6d156586ac Initial plan 2025-10-07 21:11:51 +00:00
Simon Monai
68e3f607a3 Update README.md
Fix Formatting Issue with Dependency Link
2025-10-07 22:40:48 +02:00
Dimitrij
0b240a3902 Merge pull request #2864 from mRemoteNG/copilot/add-color-support-for-connection-folders
Add Color property to connections and folders with inheritance support
2025-10-07 21:25:20 +01:00
Dimitrij
4082761606 Merge branch 'v1.78.2-dev' into copilot/add-color-support-for-connection-folders 2025-10-07 21:24:50 +01:00
Dimitrij
e68c42ba64 Merge pull request #2867 from mRemoteNG/copilot/fix-tab-color-selection-error
[WIP] Fix tab color dropdown selection error
2025-10-07 21:17:04 +01:00
copilot-swe-agent[bot]
347546ee0e Add TabColorConverter to fix Color to String conversion issue
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 20:15:32 +00:00
Dimitrij
ca717d6b80 Merge pull request #2863 from mRemoteNG/copilot/add-ard-connection-support
Add ARD (Apple Remote Desktop) protocol support for macOS connections
2025-10-07 21:12:17 +01:00
copilot-swe-agent[bot]
5d623d80eb Initial plan 2025-10-07 20:10:54 +00:00
Dimitrij
a2edbd9934 Merge pull request #2865 from mRemoteNG/copilot/add-connection-tab-colors
Add configurable connection tab colors to distinguish environments
2025-10-07 21:02:05 +01:00
copilot-swe-agent[bot]
5830f39d50 Add documentation for Tab Color feature
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:51:26 +00:00
copilot-swe-agent[bot]
0aa0b59635 Add documentation for Color property in folders and inheritance
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:50:10 +00:00
copilot-swe-agent[bot]
3c6a485647 Add TabColor property to connection info and implement tab coloring
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:49:32 +00:00
copilot-swe-agent[bot]
bbe1fa8416 Add Color property to Language.Designer.cs and add inheritance tests
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:49:21 +00:00
copilot-swe-agent[bot]
ac4469bb4a Add ARD protocol support to UI, port scanning, and tests
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:48:57 +00:00
copilot-swe-agent[bot]
9e61e8eafa Add Color property to connections and folders with inheritance support
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:47:07 +00:00
copilot-swe-agent[bot]
b193199268 Add ARD protocol to VNC property attributes and default port handling
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:45:38 +00:00
copilot-swe-agent[bot]
f8b7d37af1 Add ARD (Apple Remote Desktop) protocol support
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:42:31 +00:00
Dimitrij
b3e9202d72 Merge pull request #2862 from mRemoteNG/copilot/fix-unhandled-exception-panel-closure
Fix unhandled exception when closing panel with active connections
2025-10-07 20:40:35 +01:00
copilot-swe-agent[bot]
0f819ade56 Initial plan 2025-10-07 19:39:14 +00:00
copilot-swe-agent[bot]
d682afcde2 Initial plan 2025-10-07 19:39:03 +00:00
copilot-swe-agent[bot]
e67754ee9f Fix unhandled exception when closing panel with connections
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:35:18 +00:00
copilot-swe-agent[bot]
4897771fbf Initial plan 2025-10-07 19:35:06 +00:00
copilot-swe-agent[bot]
4128f3404a Initial plan 2025-10-07 19:31:35 +00:00
Dimitrij
7bc25ceb38 Merge pull request #2861 from mRemoteNG/copilot/add-autofocus-to-password-field
[WIP] Add autofocus to password field on startup
2025-10-07 20:29:40 +01:00
Dimitrij
f77f0f5e04 Merge pull request #2859 from mRemoteNG/copilot/fix-username-field-visibility
Fix Username field visibility for External Tool protocol
2025-10-07 20:28:48 +01:00
copilot-swe-agent[bot]
0e666efaad Add autofocus to password field in FrmPassword form
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:26:14 +00:00
copilot-swe-agent[bot]
e2893b9516 Add IntApp to Username property supported protocols
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 19:24:01 +00:00
copilot-swe-agent[bot]
fb86b13948 Initial plan 2025-10-07 19:22:15 +00:00
copilot-swe-agent[bot]
e22cc6921d Initial plan 2025-10-07 19:19:17 +00:00
Dimitrij
42fdd91206 Merge pull request #2857 from mRemoteNG/copilot/fix-default-panel-opening
Fix Update panel auto-loading on startup
2025-10-07 20:14:21 +01:00
copilot-swe-agent[bot]
2329d95002 Remove automatic Update panel display at startup
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 16:49:36 +00:00
copilot-swe-agent[bot]
8dda6ba13f Fix Update panel auto-checking on load
Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2025-10-07 16:47:29 +00:00
copilot-swe-agent[bot]
156e2b8056 Initial plan 2025-10-07 16:41:34 +00:00
90 changed files with 5916 additions and 4277 deletions

View File

@@ -139,7 +139,7 @@ jobs:
- name: (10) Create release
id: create_release
uses: softprops/action-gh-release@aec2ec56f94eb8180ceec724245f64ef008b89f5 # v2
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:

View File

@@ -17,7 +17,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- #2734: fix native build for Windows-x64
### Added
- #2728 Add support for building mRemoteNG on Windows ARM64
- #2212: Add 1Password integration
- #2865: Add configurable connection tab colors to distinguish between different environments
- #2864: Add Color property to connections and folders with inheritance support
- #2863: Add ARD (Apple Remote Desktop) protocol support for macOS connections
- #2728: Add support for building mRemoteNG on Windows ARM64
- #2723: Read keyboardhook, gatewayaccesstoken and gatewaycredentialssource from RDP File
- #2690: தமிழ் (ta) Translation update
- #2643: Registry Settings: enhancements and new settings implementation
@@ -29,6 +33,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- #2502: Updated Polish translation
### Dependency update
- #3bd2fe8: puttyng updated to x64 version (and signed)
## [1.77.3.1784]
### Fixed

View File

@@ -1,7 +1,9 @@
# Contributors
## Current mRemoteNG dev team
[Dimitrij Gorodeckij](https://github.com/Kvarkas)
## Past Contributors
[David Sparer](http://github.com/sparerd)
[Sean Kaim](http://github.com/kmscode)
[Faryan Rezagholi](http://github.com/farosch)
@@ -28,8 +30,6 @@ Tony Lambert
[MitchellBot](http://github.com/MitchellBot)
[Filippo Ferrazini](http://github.com/Filippo125)
## Past Contributors
Felix Deimel - mRemote original developer
Riley McArdle - mRemoteNG original developer

View File

@@ -5,26 +5,26 @@
<NoWarn>$(NoWarn);NU1507</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="AWSSDK.Core" Version="4.0.0.32" />
<PackageVersion Include="AWSSDK.EC2" Version="4.0.40.4" />
<PackageVersion Include="AWSSDK.Core" Version="4.0.1.1" />
<PackageVersion Include="AWSSDK.EC2" Version="4.0.43.1" />
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.6.2" />
<PackageVersion Include="Castle.Core" Version="5.2.1" />
<PackageVersion Include="ConsoleControl" Version="1.3.0" />
<PackageVersion Include="ConsoleControlAPI" Version="1.3.0" />
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
<PackageVersion Include="Cucumber.Messages" Version="30.0.0" />
<PackageVersion Include="Cucumber.Messages" Version="30.1.0" />
<PackageVersion Include="DockPanelSuite" Version="3.1.1" />
<PackageVersion Include="DockPanelSuite.ThemeVS2015" Version="3.1.1" />
<PackageVersion Include="envdte" Version="17.14.40260" />
<PackageVersion Include="Gherkin" Version="35.1.0" />
<PackageVersion Include="Google.Protobuf" Version="3.32.1" />
<PackageVersion Include="Gherkin" Version="36.0.0" />
<PackageVersion Include="Google.Protobuf" Version="3.33.0" />
<PackageVersion Include="LiteDB" Version="5.0.21" />
<PackageVersion Include="log4net" Version="3.2.0" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="6.1.1" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="6.1.2" />
<PackageVersion Include="Microsoft.Data.SqlClient.SNI" Version="6.0.2" />
<PackageVersion Include="Microsoft.Data.SqlClient.SNI.runtime" Version="6.0.2" />
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="9.0.9" />
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="9.0.9" />
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="9.0.10" />
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="9.0.10" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
<PackageVersion Include="Microsoft.NETCore.Platforms" Version="7.0.4" />
<PackageVersion Include="Microsoft.NETCore.Targets" Version="5.0.0" />
@@ -58,18 +58,18 @@
<PackageVersion Include="runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.3" />
<PackageVersion Include="SSH.NET" Version="2025.0.0" />
<PackageVersion Include="System.Buffers" Version="4.6.1" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="9.0.9" />
<PackageVersion Include="System.Collections.Immutable" Version="9.0.9" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="9.0.10" />
<PackageVersion Include="System.Collections.Immutable" Version="9.0.10" />
<PackageVersion Include="System.Console" Version="4.3.1" />
<PackageVersion Include="System.Data.Common" Version="4.3.0" />
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="9.0.9" />
<PackageVersion Include="System.Drawing.Common" Version="9.0.9" />
<PackageVersion Include="System.Diagnostics.EventLog" Version="9.0.9" />
<PackageVersion Include="System.DirectoryServices" Version="9.0.9" />
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="9.0.10" />
<PackageVersion Include="System.Drawing.Common" Version="9.0.10" />
<PackageVersion Include="System.Diagnostics.EventLog" Version="9.0.10" />
<PackageVersion Include="System.DirectoryServices" Version="9.0.10" />
<PackageVersion Include="System.Dynamic.Runtime" Version="4.3.0" />
<PackageVersion Include="System.IO.Pipelines" Version="9.0.9" />
<PackageVersion Include="System.Formats.Asn1" Version="9.0.9" />
<PackageVersion Include="System.Management" Version="9.0.9" />
<PackageVersion Include="System.IO.Pipelines" Version="9.0.10" />
<PackageVersion Include="System.Formats.Asn1" Version="9.0.10" />
<PackageVersion Include="System.Management" Version="9.0.10" />
<PackageVersion Include="System.Memory" Version="4.6.3" />
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
<PackageVersion Include="System.Net.Primitives" Version="4.3.1" />
@@ -77,7 +77,7 @@
<PackageVersion Include="System.Reflection.Emit" Version="4.7.0" />
<PackageVersion Include="System.Reflection.Emit.ILGeneration" Version="4.7.0" />
<PackageVersion Include="System.Reflection.Emit.Lightweight" Version="4.7.0" />
<PackageVersion Include="System.Reflection.Metadata" Version="9.0.9" />
<PackageVersion Include="System.Reflection.Metadata" Version="9.0.10" />
<PackageVersion Include="System.Reflection.TypeExtensions" Version="4.7.0" />
<PackageVersion Include="System.Resources.ResourceManager" Version="4.3.0" />
<PackageVersion Include="System.Runtime" Version="4.3.1" />
@@ -87,16 +87,16 @@
<PackageVersion Include="System.Security.Cryptography.Algorithms" Version="4.3.1" />
<PackageVersion Include="System.Security.Cryptography.Cng" Version="5.0.0" />
<PackageVersion Include="System.Security.Cryptography.OpenSsl" Version="5.0.0" />
<PackageVersion Include="System.Security.Cryptography.ProtectedData" Version="9.0.9" />
<PackageVersion Include="System.Security.Cryptography.ProtectedData" Version="9.0.10" />
<PackageVersion Include="System.Security.Cryptography.X509Certificates" Version="4.3.2" />
<PackageVersion Include="System.Security.Permissions" Version="9.0.9" />
<PackageVersion Include="System.Security.Permissions" Version="9.0.10" />
<PackageVersion Include="System.Security.Principal.Windows" Version="5.0.0" />
<PackageVersion Include="System.Text.Encoding.CodePages" Version="9.0.9" />
<PackageVersion Include="System.Text.Json" Version="9.0.9" />
<PackageVersion Include="System.Text.Encoding.CodePages" Version="9.0.10" />
<PackageVersion Include="System.Text.Json" Version="9.0.10" />
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.6.3" />
<PackageVersion Include="System.ValueTuple" Version="4.6.1" />
<PackageVersion Include="System.Windows.Extensions" Version="9.0.9" />
<PackageVersion Include="System.Windows.Extensions" Version="9.0.10" />
<PackageVersion Include="System.Xml.ReaderWriter" Version="4.3.1" />
<PackageVersion Include="VncSharpCore" Version="1.2.1" />
<PackageVersion Include="ZstdSharp.Port" Version="0.8.6" />

View File

@@ -0,0 +1,107 @@
using System.Diagnostics;
using System.Net;
using System.Text.Json;
using System.Web;
namespace ExternalConnectors.OP;
public class OnePasswordCliException(string message, string arguments) : Exception(message)
{
public string Arguments { get; set; } = arguments;
}
public class OnePasswordCli
{
private const string OnePasswordCliExecutable = "op.exe";
private const string UserNamePurpose = "USERNAME";
private const string PasswordPurpose = "PASSWORD";
private const string StringType = "STRING";
private const string SshKeyType = "SSHKEY";
private const string DomainLabel = "domain";
private record VaultUrl(string Label, string Href);
private record VaultField(string Id, string Label, string Type, string Purpose, string Value);
private record VaultItem(VaultUrl[]? Urls, VaultField[]? Fields);
private static readonly JsonSerializerOptions JsonSerializerOptions = new()
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
public static void ReadPassword(string input, out string username, out string password, out string domain, out string privateKey)
{
var inputUrl = new Uri(input);
var vault = WebUtility.UrlDecode(inputUrl.Host);
var queryParams = HttpUtility.ParseQueryString(inputUrl.Query);
var account = queryParams["account"];
var item = WebUtility.UrlDecode(inputUrl.AbsolutePath.TrimStart('/'));
ItemGet(item, vault, account, out username, out password, out domain, out privateKey);
}
private static void ItemGet(string item, string? vault, string? account, out string username, out string password, out string domain, out string privateKey)
{
var args = new List<string> { "item", "get", item };
if (!string.IsNullOrEmpty(account))
{
args.Add("--account");
args.Add(account);
}
if (!string.IsNullOrEmpty(vault))
{
args.Add("--vault");
args.Add(vault);
}
args.Add("--format");
args.Add("json");
var exitCode = RunCommand(OnePasswordCliExecutable, args, out var output, out var error);
if (exitCode != 0)
{
username = string.Empty;
password = string.Empty;
privateKey = string.Empty;
domain = string.Empty;
throw new OnePasswordCliException($"Error running op item get: {error}",
OnePasswordCliExecutable + " " + string.Join(' ', args));
}
var items = JsonSerializer.Deserialize<VaultItem>(output, JsonSerializerOptions) ??
throw new OnePasswordCliException("1Password returned null",
OnePasswordCliExecutable + " " + string.Join(' ', args));
username = items.Fields?.FirstOrDefault(x => x.Purpose == UserNamePurpose)?.Value ?? string.Empty;
password = items.Fields?.FirstOrDefault(x => x.Purpose == PasswordPurpose)?.Value ?? string.Empty;
privateKey = items.Fields?.FirstOrDefault(x => x.Type == SshKeyType)?.Value ?? string.Empty;
domain = items.Fields?.FirstOrDefault(x => x.Type == StringType && x.Label == DomainLabel)?.Value ?? string.Empty;
}
private static int RunCommand(string command, IReadOnlyCollection<string> arguments, out string output,
out string error)
{
var processStartInfo = new ProcessStartInfo
{
FileName = command,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true
};
foreach (var argument in arguments)
{
processStartInfo.ArgumentList.Add(argument);
}
using var process = new Process();
process.StartInfo = processStartInfo;
process.Start();
output = process.StandardOutput.ReadToEnd();
error = process.StandardError.ReadToEnd();
process.WaitForExit();
return process.ExitCode;
}
}

View File

@@ -1,3 +1,18 @@
<p align="Left">
Developing mRemoteNG to its fullest potential is my personal priority.<br>
While the project remains non-commercial, it does come with ongoing costs — including VPS hosting for testing, AI tools, domain fees, and more. <br> If you find value in mRemoteNG and want to support its future, even a small donation from our community can make a huge difference.<br>
Your support helps me keep the project secure, modern, and accessible for everyone who relies on it — and brings us closer to a brighter, more collaborative future.<br><br>
Consider donating — every contribution counts!
<br><br>
<a href="https://www.paypal.com/paypalme/mremoteng">
<img height='36' alt="PayPal" style='border:0px;height:36px;' src="https://img.shields.io/badge/%24-PayPal-blue.svg?label=Donate&logo=PayPal&style=flat-square">
</a><br>
<a href='https://ko-fi.com/Q5Q41I7JS' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi6.png?v=6' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
</a>
</p>
---
<p align="center">
<img width="450" src="https://github.com/mRemoteNG/mRemoteNG/blob/mRemoteNGProjectFiles/Header_dark.png">
</p>
@@ -21,11 +36,6 @@
<img alt="Element" src="https://img.shields.io/matrix/mremoteng:matrix.org?label=Join%20to%20chat%20about%20mRemoteNG&logo=element&style=social&link=https://app.element.io/#/room/#mremoteng:matrix.org">
</a>
</p>
<p align="center">
<a href="https://www.paypal.com/paypalme/mremoteng">
<img alt="PayPal" src="https://img.shields.io/badge/%24-PayPal-blue.svg?label=Donate&logo=PayPal&style=flat-square">
</a>
</p>
<p align="center">
<a href="https://github.com/mRemoteNG/mRemoteNG/blob/develop/COPYING.TXT">
@@ -79,12 +89,13 @@ For a detailed feature list and general usage support, refer to the [Documentati
#### Source package
This contains the source code from which mRemoteNG is build.
This contains the source code from which mRemoteNG is built.
You will need to compile it yourself using Visual Studio.
### Minimum Requirements
* [[Microsoft .NET Desktop Runtime 9.0](https://dotnet.microsoft.com/download/dotnet/6.0](https://dotnet.microsoft.com/en-us/download/dotnet/9.0))
* [Microsoft .NET Desktop Runtime 9.0](https://dotnet.microsoft.com/download/dotnet/9.0)
* [Microsoft Visual C++ 2015-2022 Redistributable x64](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-supported-redistributable-version) - [download latest](https://aka.ms/vs/17/release/vc_redist.x64.exe) (note: use x64 installer also in ARM environments as the installer contains both; ~32-bit version required until #2870 is resolved~)
* Microsoft Terminal Service Client 6.0 or later (needed if you use RDP with mstscax.dll and/or msrdp.ocx to be registered)
### Download
@@ -129,6 +140,7 @@ _If you are using the Portable version, simply deleting the folder that contains
* [PSmRemoteNG](https://github.com/realslacker/PSmRemoteNG) A module to create mRemoteNG connection files from PowerShell.
* [mRemoteNGOpenVPN](https://github.com/T3los/mRemoteNGOpenVPN) A script that can be embedded as an external tool to control OpenVPN.
* [mRemoteNG-Icons](https://github.com/bearlikelion/mRemoteNG-Icons) A collection of fancy icons to customize the connections
## Contribute

View File

@@ -24,7 +24,7 @@ namespace mRemoteNG.App.Update
string version = $"{major}.{minor}";
foreach (var baseKey in baseKeys)
{
string path = $@"{baseKey}\{version}\VC\Runtimes\x86";
string path = $@"{baseKey}\{version}\VC\Runtimes\x64";
using (RegistryKey? key = Registry.LocalMachine.OpenSubKey(path))
{
if (key?.GetValue("Installed") is int installed && installed == 1)

View File

@@ -15,8 +15,10 @@ namespace mRemoteNG.App.Info
{
public const string UrlHome = "https://mremoteng.org";
public const string UrlDonate = "https://mremoteng.org/contribute";
public const string UrlForum = "https://www.reddit.com/r/mRemoteNG";
public const string UrlBugs = "https://bugs.mremoteng.org";
public const string UrlForum = "https://github.com/orgs/mRemoteNG/discussions";
public const string UrlChat = "https://app.element.io/#/room/#mremoteng:matrix.org";
public const string UrlCommunity = "https://www.reddit.com/r/mRemoteNG";
public const string UrlBugs = "https://github.com/mRemoteNG/mRemoteNG/issues/new";
public const string UrlDocumentation = "https://mremoteng.readthedocs.io/en/latest/";
public static readonly string ApplicationVersion = Application.ProductVersion;
public static readonly string ProductName = Application.ProductName;

View File

@@ -5,7 +5,7 @@ using mRemoteNG.Config.Settings;
using mRemoteNG.DotNet.Update;
using mRemoteNG.DotNet.Update;
using mRemoteNG.UI.Forms;
using mRemoteNG.Resources.Language;
using System;
using System.Diagnostics;
using System.Drawing;
@@ -53,12 +53,11 @@ namespace mRemoteNG.App
{
try
{
var result = MessageBox.Show(
$".NET Desktop Runtime at least {DotNetRuntimeCheck.RequiredDotnetVersion}.0 is required.\n" +
"The application will now exit.\n\nPlease download and install latest desktop runtime:\n" + downloadUrl,
"Missing .NET " + DotNetRuntimeCheck.RequiredDotnetVersion + " Runtime",
MessageBoxButtons.OKCancel,
MessageBoxIcon.Information);
var result = ShowDownloadCancelDialog(
$".NET " + DotNetRuntimeCheck.RequiredDotnetVersion + ".0 " + Language.MsgRuntimeIsRequired + "\n\n" +
Language.MsgDownloadLatestRuntime + "\n" + downloadUrl + "\n\n" +
Language.MsgExit + "\n\n",
Language.MsgMissingRuntime + " .NET " + DotNetRuntimeCheck.RequiredDotnetVersion);
if (result == DialogResult.OK && InternetConnection.IsPosible())
{
@@ -79,15 +78,14 @@ namespace mRemoteNG.App
// Checking Visual C++ Redistributable version
if (VCppRuntimeCheck.GetInstalledVcRedistVersions() == null || VCppRuntimeCheck.GetInstalledVcRedistVersions().Count == 0)
{
var downloadUrl2 = "https://aka.ms/vs/17/release/vc_redist.x86.exe";
var downloadUrl2 = "https://aka.ms/vs/17/release/vc_redist.x64.exe";
try
{
var result = MessageBox.Show(
$"A Visual C++ (MSVC) runtime library is required.\n" +
"The application will now exit.\n\nPlease download and install latest desktop runtime:\n" + downloadUrl2,
"Missing Visual C++ Redistributable x86 Runtime",
MessageBoxButtons.OKCancel,
MessageBoxIcon.Information);
var result = ShowDownloadCancelDialog(
$"A Visual C++ (MSVC) " + Language.MsgRuntimeIsRequired + "\n\n" +
Language.MsgDownloadLatestRuntime + "\n" + downloadUrl2 + "\n\n" +
Language.MsgExit + "\n\n",
Language.MsgMissingRuntime + " Visual C++ Redistributable x64");
if (result == DialogResult.OK && InternetConnection.IsPosible())
{
@@ -269,5 +267,101 @@ namespace mRemoteNG.App
_wpfSplashThread = null;
}
}
// Helper to show a dialog with "Download" and "Cancel" buttons.
// Returns DialogResult.OK if Download clicked, otherwise DialogResult.Cancel.
private static DialogResult ShowDownloadCancelDialog(string message, string caption)
{
using Form dialog = new Form()
{
Text = caption,
StartPosition = FormStartPosition.CenterScreen,
FormBorderStyle = FormBorderStyle.FixedDialog,
MinimizeBox = false,
MaximizeBox = false,
ShowInTaskbar = false,
ClientSize = new Size(560, 200),
Icon = SystemIcons.Information
};
// Try to find a URL in the message (very simple heuristic: first "http" until whitespace/newline)
int urlStart = message.IndexOf("http", StringComparison.OrdinalIgnoreCase);
string? url = null;
if (urlStart >= 0)
{
int urlEnd = message.IndexOfAny(new char[] { ' ', '\r', '\n', '\t' }, urlStart);
if (urlEnd == -1) urlEnd = message.Length;
url = message.Substring(urlStart, urlEnd - urlStart);
}
LinkLabel lbl = new LinkLabel()
{
AutoSize = false,
Text = message,
Location = new Point(12, 12),
Size = new Size(dialog.ClientSize.Width - 24, dialog.ClientSize.Height - 60),
TextAlign = ContentAlignment.TopLeft,
LinkBehavior = LinkBehavior.SystemDefault
};
lbl.MaximumSize = new Size(dialog.ClientSize.Width - 24, 0);
if (!string.IsNullOrEmpty(url) && urlStart >= 0)
{
// Ensure link indices are within bounds of the LinkLabel text
int linkStartInLabel = urlStart;
int linkLength = url.Length;
if (linkStartInLabel + linkLength <= lbl.Text.Length)
{
lbl.Links.Add(linkStartInLabel, linkLength, url);
}
}
lbl.LinkClicked += (s, e) =>
{
string? linkUrl = e.Link.LinkData as string;
if (string.IsNullOrEmpty(linkUrl))
return;
if (!InternetConnection.IsPosible())
{
MessageBox.Show("No internet connection is available.", "Network", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// Treat clicking the link the same as clicking the "Download" button:
// set DialogResult to OK so the caller receives DialogResult.OK and can proceed to open the download URL.
dialog.DialogResult = DialogResult.OK;
// Do not call Process.Start here to avoid duplicate launches; caller already opens the URL when it sees DialogResult.OK.
};
Button btnDownload = new Button()
{
Text = "Download",
DialogResult = DialogResult.OK,
Size = new Size(100, 28),
};
Button btnCancel = new Button()
{
Text = "Cancel",
DialogResult = DialogResult.Cancel,
Size = new Size(100, 28),
};
// Position buttons
int padding = 12;
btnCancel.Location = new Point(dialog.ClientSize.Width - padding - btnCancel.Width, dialog.ClientSize.Height - padding - btnCancel.Height);
btnDownload.Location = new Point(btnCancel.Left - 8 - btnDownload.Width, btnCancel.Top);
// Set dialog defaults
dialog.Controls.Add(lbl);
dialog.Controls.Add(btnDownload);
dialog.Controls.Add(btnCancel);
dialog.AcceptButton = btnDownload;
dialog.CancelButton = btnCancel;
// Adjust label height to wrap text properly
lbl.Height = btnCancel.Top - lbl.Top - 8;
return dialog.ShowDialog();
}
}
}

View File

@@ -84,10 +84,8 @@ namespace mRemoteNG.App
try
{
await _appUpdate.GetUpdateInfoAsync();
if (_appUpdate.IsUpdateAvailable())
{
Windows.Show(WindowType.Update);
}
// Update is available, but don't show the panel automatically at startup
// User can check for updates manually via Help > Check for Updates menu
}
catch (Exception ex)
{

View File

@@ -26,7 +26,7 @@ namespace mRemoteNG.App
internal static ConfigWindow ConfigForm { get; set; } = new ConfigWindow();
internal static ErrorAndInfoWindow ErrorsForm { get; set; } = new ErrorAndInfoWindow();
private static UpdateWindow UpdateForm { get; set; } = new UpdateWindow();
internal static UpdateWindow UpdateForm { get; set; } = new UpdateWindow();
internal static SSHTransferWindow SshtransferForm { get; private set; } = new SSHTransferWindow();
internal static OptionsWindow OptionsFormWindow { get; private set; }

View File

@@ -4,6 +4,7 @@ using System.Runtime.Versioning;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using LiteDB;
using mRemoteNG.Resources.Language;
namespace mRemoteNG.Config.DatabaseConnectors
{
@@ -111,19 +112,19 @@ namespace mRemoteNG.Config.DatabaseConnectors
catch (PlatformNotSupportedException ex)
{
// Log or handle architecture mismatch
Console.WriteLine($"Platform error: {ex.Message}");
Console.WriteLine(string.Format(Language.ErrorPlatformNotSupported, ex.Message));
return ConnectionTestResult.UnknownError;
}
catch (DllNotFoundException ex)
{
// Handle missing native dependencies
Console.WriteLine($"Missing dependency: {ex.Message}");
Console.WriteLine(string.Format(Language.ErrorMissingDependency, ex.Message));
return ConnectionTestResult.UnknownError;
}
catch (BadImageFormatException ex)
{
// Handle architecture mismatch in native libraries
Console.WriteLine($"Architecture mismatch: {ex.Message}");
Console.WriteLine(string.Format(Language.ErrorArchitectureMismatch, ex.Message));
return ConnectionTestResult.UnknownError;
}
catch (SqlException sqlException)

View File

@@ -42,6 +42,7 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
element.Add(new XAttribute("Descr", connectionInfo.Description));
element.Add(new XAttribute("Icon", connectionInfo.Icon));
element.Add(new XAttribute("Panel", connectionInfo.Panel));
element.Add(new XAttribute("TabColor", connectionInfo.TabColor));
element.Add(new XAttribute("Id", connectionInfo.ConstantID));
if (!Runtime.UseCredentialManager)
@@ -187,6 +188,8 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
element.Add(new XAttribute("InheritIcon", inheritance.Icon.ToString().ToLowerInvariant()));
if (inheritance.Panel)
element.Add(new XAttribute("InheritPanel", inheritance.Panel.ToString().ToLowerInvariant()));
if (inheritance.TabColor)
element.Add(new XAttribute("InheritTabColor", inheritance.TabColor.ToString().ToLowerInvariant()));
if (inheritance.Password)
element.Add(new XAttribute("InheritPassword", inheritance.Password.ToString().ToLowerInvariant()));
if (inheritance.Port)

View File

@@ -328,6 +328,7 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
connectionInfo.Inheritance.DisplayWallpaper = xmlnode.GetAttributeAsBool("InheritDisplayWallpaper");
connectionInfo.Inheritance.Icon = xmlnode.GetAttributeAsBool("InheritIcon");
connectionInfo.Inheritance.Panel = xmlnode.GetAttributeAsBool("InheritPanel");
connectionInfo.Inheritance.TabColor = xmlnode.GetAttributeAsBool("InheritTabColor");
connectionInfo.Inheritance.Port = xmlnode.GetAttributeAsBool("InheritPort");
connectionInfo.Inheritance.Protocol = xmlnode.GetAttributeAsBool("InheritProtocol");
connectionInfo.Inheritance.PuttySession = xmlnode.GetAttributeAsBool("InheritPuttySession");
@@ -350,6 +351,7 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
connectionInfo.Icon = xmlnode.GetAttributeAsString("Icon");
connectionInfo.Panel = xmlnode.GetAttributeAsString("Panel");
connectionInfo.TabColor = xmlnode.GetAttributeAsString("TabColor");
}
else
{

View File

@@ -28,7 +28,7 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
private XAttribute CreateProtectedAttribute(RootNodeInfo rootNodeInfo, ICryptographyProvider cryptographyProvider)
{
XAttribute attribute = new(XName.Get("Protected"), "");
string plainText = rootNodeInfo.Password ? "ThisIsProtected" : "ThisIsNotProtected";
string plainText = (rootNodeInfo.PasswordString != rootNodeInfo.DefaultPassword) ? "ThisIsProtected" : "ThisIsNotProtected";
System.Security.SecureString encryptionPassword = rootNodeInfo.PasswordString.ConvertToSecureString();
attribute.Value = cryptographyProvider.Encrypt(plainText, encryptionPassword);
return attribute;

View File

@@ -61,6 +61,10 @@ namespace mRemoteNG.Config.Serializers.MiscSerializers
if (host.Vnc)
finalProtocol = ProtocolType.VNC;
break;
case ProtocolType.ARD:
if (host.Vnc)
finalProtocol = ProtocolType.ARD;
break;
default:
protocolValid = false;
break;

View File

@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using mRemoteNG.Connection.Protocol;
using mRemoteNG.Connection.Protocol.Http;
using mRemoteNG.Connection.Protocol.RDP;
@@ -22,6 +23,8 @@ namespace mRemoteNG.Connection
private string _description;
private string _icon;
private string _panel;
private string _color;
private string _tabColor;
private string _hostname;
private ExternalAddressProvider _externalAddressProvider;
@@ -153,6 +156,28 @@ namespace mRemoteNG.Connection
set => SetField(ref _panel, value, "Panel");
}
[LocalizedAttributes.LocalizedCategory(nameof(Language.Display)),
LocalizedAttributes.LocalizedDisplayName(nameof(Language.Color)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionColor)),
Editor(typeof(System.Drawing.Design.ColorEditor), typeof(System.Drawing.Design.UITypeEditor)),
TypeConverter(typeof(MiscTools.TabColorConverter))]
public virtual string Color
{
get => GetPropertyValue("Color", _color);
set => SetField(ref _color, value, "Color");
}
[LocalizedAttributes.LocalizedCategory(nameof(Language.Display)),
LocalizedAttributes.LocalizedDisplayName(nameof(Language.TabColor)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionTabColor)),
Editor(typeof(System.Drawing.Design.ColorEditor), typeof(System.Drawing.Design.UITypeEditor)),
TypeConverter(typeof(MiscTools.TabColorConverter))]
public virtual string TabColor
{
get => GetPropertyValue("TabColor", _tabColor);
set => SetField(ref _tabColor, value, "TabColor");
}
#endregion
#region Connection
@@ -203,7 +228,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory(nameof(Language.Connection), 2),
LocalizedAttributes.LocalizedDisplayName(nameof(Language.Username)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionUsername)),
AttributeUsedInProtocol(ProtocolType.RDP, ProtocolType.SSH1, ProtocolType.SSH2, ProtocolType.HTTP, ProtocolType.HTTPS)]
AttributeUsedInProtocol(ProtocolType.RDP, ProtocolType.SSH1, ProtocolType.SSH2, ProtocolType.HTTP, ProtocolType.HTTPS, ProtocolType.IntApp)]
public virtual string Username
{
get => GetPropertyValue("Username", _username);
@@ -908,7 +933,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDisplayName(nameof(Language.Compression)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionCompression)),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
AttributeUsedInProtocol(ProtocolType.VNC),
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD),
Browsable(false)]
public ProtocolVNC.Compression VNCCompression
{
@@ -920,7 +945,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDisplayName(nameof(Language.Encoding)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionEncoding)),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
AttributeUsedInProtocol(ProtocolType.VNC),
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD),
Browsable(false)]
public ProtocolVNC.Encoding VNCEncoding
{
@@ -932,7 +957,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDisplayName(nameof(Language.AuthenticationMode)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionAuthenticationMode)),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
AttributeUsedInProtocol(ProtocolType.VNC),
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD),
Browsable(false)]
public ProtocolVNC.AuthMode VNCAuthMode
{
@@ -944,7 +969,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDisplayName(nameof(Language.ProxyType)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionVNCProxyType)),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
AttributeUsedInProtocol(ProtocolType.VNC),
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD),
Browsable(false)]
public ProtocolVNC.ProxyType VNCProxyType
{
@@ -955,7 +980,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory(nameof(Language.Proxy), 7),
LocalizedAttributes.LocalizedDisplayName(nameof(Language.ProxyAddress)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionVNCProxyAddress)),
AttributeUsedInProtocol(ProtocolType.VNC),
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD),
Browsable(false)]
public string VNCProxyIP
{
@@ -966,7 +991,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory(nameof(Language.Proxy), 7),
LocalizedAttributes.LocalizedDisplayName(nameof(Language.ProxyPort)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionVNCProxyPort)),
AttributeUsedInProtocol(ProtocolType.VNC),
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD),
Browsable(false)]
public int VNCProxyPort
{
@@ -977,7 +1002,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory(nameof(Language.Proxy), 7),
LocalizedAttributes.LocalizedDisplayName(nameof(Language.ProxyUsername)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionVNCProxyUsername)),
AttributeUsedInProtocol(ProtocolType.VNC),
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD),
Browsable(false)]
public string VNCProxyUsername
{
@@ -989,7 +1014,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDisplayName(nameof(Language.ProxyPassword)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionVNCProxyPassword)),
PasswordPropertyText(true),
AttributeUsedInProtocol(ProtocolType.VNC),
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD),
Browsable(false)]
public string VNCProxyPassword
{
@@ -1001,7 +1026,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDisplayName(nameof(Language.Colors)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionColors)),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
AttributeUsedInProtocol(ProtocolType.VNC),
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD),
Browsable(false)]
public ProtocolVNC.Colors VNCColors
{
@@ -1013,7 +1038,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDisplayName(nameof(Language.SmartSizeMode)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionSmartSizeMode)),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
AttributeUsedInProtocol(ProtocolType.VNC)]
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD)]
public ProtocolVNC.SmartSizeMode VNCSmartSizeMode
{
get => GetPropertyValue("VNCSmartSizeMode", _vncSmartSizeMode);
@@ -1024,7 +1049,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDisplayName(nameof(Language.ViewOnly)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionViewOnly)),
TypeConverter(typeof(MiscTools.YesNoTypeConverter)),
AttributeUsedInProtocol(ProtocolType.VNC)]
AttributeUsedInProtocol(ProtocolType.VNC, ProtocolType.ARD)]
public bool VNCViewOnly
{
get => GetPropertyValue("VNCViewOnly", _vncViewOnly);

View File

@@ -5,6 +5,7 @@ using System.Linq;
using System.Reflection;
using mRemoteNG.App;
using mRemoteNG.Connection.Protocol;
using mRemoteNG.Connection.Protocol.ARD;
using mRemoteNG.Connection.Protocol.Http;
using mRemoteNG.Connection.Protocol.PowerShell;
using mRemoteNG.Connection.Protocol.RAW;
@@ -254,6 +255,8 @@ namespace mRemoteNG.Connection
return (int)RdpProtocol.Defaults.Port;
case ProtocolType.VNC:
return (int)ProtocolVNC.Defaults.Port;
case ProtocolType.ARD:
return (int)ProtocolARD.Defaults.Port;
case ProtocolType.SSH1:
return (int)ProtocolSSH1.Defaults.Port;
case ProtocolType.SSH2:
@@ -289,6 +292,8 @@ namespace mRemoteNG.Connection
Description = Settings.Default.ConDefaultDescription;
Icon = Settings.Default.ConDefaultIcon;
Panel = Language.General;
Color = string.Empty;
TabColor = string.Empty;
}
private void SetConnectionDefaults()

View File

@@ -50,6 +50,18 @@ namespace mRemoteNG.Connection
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool Panel { get; set; }
[LocalizedAttributes.LocalizedCategory(nameof(Language.Display), 2),
LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.Color)),
LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.PropertyDescriptionColor)),
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool Color { get; set; }
[LocalizedAttributes.LocalizedCategory(nameof(Language.Display), 2),
LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.TabColor)),
LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.PropertyDescriptionTabColor)),
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool TabColor { get; set; }
#endregion
#region Connection

View File

@@ -320,7 +320,8 @@ namespace mRemoteNG.Connection
ConnectionWindow connectionForm = conForm ?? Runtime.WindowList.FromString(connectionPanel) as ConnectionWindow;
if (connectionForm == null)
connectionForm = _panelAdder.AddPanel(connectionPanel);
// Don't show the panel immediately - it will be shown when first tab is added
connectionForm = _panelAdder.AddPanel(connectionPanel, showImmediately: false);
else
connectionForm.Show(FrmMain.Default.pnlDock);

View File

@@ -12,7 +12,9 @@ namespace mRemoteNG.Connection
DelineaSecretServer = 1,
[LocalizedAttributes.LocalizedDescription(nameof(Language.ECPClickstudiosPasswordstate))]
ClickstudiosPasswordState = 2
ClickstudiosPasswordState = 2,
[LocalizedAttributes.LocalizedDescription(nameof(Language.ECPOnePassword))]
OnePassword = 3,
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Runtime.Versioning;
using mRemoteNG.Connection.Protocol.VNC;
namespace mRemoteNG.Connection.Protocol.ARD
{
[SupportedOSPlatform("windows")]
public class ProtocolARD : ProtocolVNC
{
public ProtocolARD()
{
}
public new enum Defaults
{
Port = 5900
}
}
}

View File

@@ -5,6 +5,7 @@ using mRemoteNG.Connection.Protocol.Rlogin;
using mRemoteNG.Connection.Protocol.SSH;
using mRemoteNG.Connection.Protocol.Telnet;
using mRemoteNG.Connection.Protocol.VNC;
using mRemoteNG.Connection.Protocol.ARD;
using System;
using mRemoteNG.Connection.Protocol.PowerShell;
using mRemoteNG.Resources.Language;
@@ -28,6 +29,8 @@ namespace mRemoteNG.Connection.Protocol
return rdp;
case ProtocolType.VNC:
return new ProtocolVNC();
case ProtocolType.ARD:
return new ProtocolARD();
case ProtocolType.SSH1:
return new ProtocolSSH1();
case ProtocolType.SSH2:

View File

@@ -35,6 +35,9 @@ namespace mRemoteNG.Connection.Protocol
[LocalizedAttributes.LocalizedDescription(nameof(Language.PowerShell))]
PowerShell = 10,
[LocalizedAttributes.LocalizedDescription(nameof(Language.Ard))]
ARD = 11,
[LocalizedAttributes.LocalizedDescription(nameof(Language.ExternalTool))]
IntApp = 20
}

View File

@@ -151,6 +151,17 @@ namespace mRemoteNG.Connection.Protocol
Event_ErrorOccured(this, "Passwordstate Interface Error: " + ex.Message, 0);
}
}
else if (InterfaceControl.Info.ExternalCredentialProvider == ExternalCredentialProvider.OnePassword) {
try
{
ExternalConnectors.OP.OnePasswordCli.ReadPassword($"{UserViaAPI}", out username, out password, out domain, out privatekey);
}
catch (ExternalConnectors.OP.OnePasswordCliException ex)
{
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, Language.ECPOnePasswordCommandLine + ": " + ex.Arguments);
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, Language.ECPOnePasswordReadFailed + Environment.NewLine + ex.Message);
}
}
if (string.IsNullOrEmpty(username))

View File

@@ -470,6 +470,19 @@ namespace mRemoteNG.Connection.Protocol.RDP
Event_ErrorOccured(this, "Passwordstate Interface Error: " + ex.Message, 0);
}
}
else if (InterfaceControl.Info.ExternalCredentialProvider == ExternalCredentialProvider.OnePassword)
{
try
{
string RDGUserViaAPI = InterfaceControl.Info.RDGatewayUserViaAPI;
ExternalConnectors.OP.OnePasswordCli.ReadPassword($"{RDGUserViaAPI}", out gwu, out gwp, out gwd, out pkey);
}
catch (ExternalConnectors.OP.OnePasswordCliException ex)
{
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, Language.ECPOnePasswordCommandLine + ": " + ex.Arguments);
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, Language.ECPOnePasswordReadFailed + Environment.NewLine + ex.Message);
}
}
if (connectionInfo.RDGatewayUseConnectionCredentials != RDGatewayUseConnectionCredentials.AccessToken)
@@ -570,6 +583,18 @@ namespace mRemoteNG.Connection.Protocol.RDP
Event_ErrorOccured(this, "Passwordstate Interface Error: " + ex.Message, 0);
}
}
else if (InterfaceControl.Info.ExternalCredentialProvider == ExternalCredentialProvider.OnePassword)
{
try
{
ExternalConnectors.OP.OnePasswordCli.ReadPassword($"{userViaApi}", out userName, out password, out domain, out pkey);
}
catch (ExternalConnectors.OP.OnePasswordCliException ex)
{
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, Language.ECPOnePasswordCommandLine + ": " + ex.Arguments);
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, Language.ECPOnePasswordReadFailed + Environment.NewLine + ex.Message);
}
}
if (string.IsNullOrEmpty(userName))
{

View File

@@ -19,7 +19,7 @@ namespace mRemoteNG.Resources.Language {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Language {
@@ -213,15 +213,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to About.
/// </summary>
internal static string About {
get {
return ResourceManager.GetString("About", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Hidden.
/// </summary>
@@ -420,6 +411,15 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to ARD (Apple Remote Desktop).
/// </summary>
internal static string Ard {
get {
return ResourceManager.GetString("Ard", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Arguments.
/// </summary>
@@ -726,15 +726,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Check for Updates.
/// </summary>
internal static string CheckForUpdates {
get {
return ResourceManager.GetString("CheckForUpdates", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Check for updates at startup.
/// </summary>
@@ -843,6 +834,15 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Color.
/// </summary>
internal static string Color {
get {
return ResourceManager.GetString("Color", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Colors.
/// </summary>
@@ -1077,6 +1077,15 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Are you sure you want to disconnect &quot;{0}&quot;?.
/// </summary>
internal static string ConfirmDisconnectConnection {
get {
return ResourceManager.GetString("ConfirmDisconnectConnection", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Do you want to close all open connections?.
/// </summary>
@@ -1681,15 +1690,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Donate.
/// </summary>
internal static string Donate {
get {
return ResourceManager.GetString("Donate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Do not play.
/// </summary>
@@ -1852,6 +1852,33 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to 1Password.
/// </summary>
internal static string ECPOnePassword {
get {
return ResourceManager.GetString("ECPOnePassword", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 1Password command line.
/// </summary>
internal static string ECPOnePasswordCommandLine {
get {
return ResourceManager.GetString("ECPOnePasswordCommandLine", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 1Password read failed.
/// </summary>
internal static string ECPOnePasswordReadFailed {
get {
return ResourceManager.GetString("ECPOnePasswordReadFailed", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Do you want to continue with no password?.
/// </summary>
@@ -1969,6 +1996,15 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Architecture mismatch: {0}.
/// </summary>
internal static string ErrorArchitectureMismatch {
get {
return ResourceManager.GetString("ErrorArchitectureMismatch", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The database version {0} is not compatible with this version of {1}..
/// </summary>
@@ -2027,6 +2063,24 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Missing dependency: {0}.
/// </summary>
internal static string ErrorMissingDependency {
get {
return ResourceManager.GetString("ErrorMissingDependency", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Platform error: {0}.
/// </summary>
internal static string ErrorPlatformNotSupported {
get {
return ResourceManager.GetString("ErrorPlatformNotSupported", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Errors.
/// </summary>
@@ -2504,15 +2558,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to mRemoteNG Help.
/// </summary>
internal static string HelpContents {
get {
return ResourceManager.GetString("HelpContents", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to High.
/// </summary>
@@ -3035,6 +3080,87 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to About.
/// </summary>
internal static string MenuItem_About {
get {
return ResourceManager.GetString("MenuItem_About", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to mR Chat.
/// </summary>
internal static string MenuItem_Chat {
get {
return ResourceManager.GetString("MenuItem_Chat", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Check for Updates.
/// </summary>
internal static string MenuItem_CheckForUpdates {
get {
return ResourceManager.GetString("MenuItem_CheckForUpdates", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Community.
/// </summary>
internal static string MenuItem_Community {
get {
return ResourceManager.GetString("MenuItem_Community", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Donate.
/// </summary>
internal static string MenuItem_Donate {
get {
return ResourceManager.GetString("MenuItem_Donate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to mRemoteNG Help.
/// </summary>
internal static string MenuItem_HelpContents {
get {
return ResourceManager.GetString("MenuItem_HelpContents", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Report an Issue.
/// </summary>
internal static string MenuItem_ReportIssue {
get {
return ResourceManager.GetString("MenuItem_ReportIssue", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Support Forum.
/// </summary>
internal static string MenuItem_SupportForum {
get {
return ResourceManager.GetString("MenuItem_SupportForum", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Website.
/// </summary>
internal static string MenuItem_Website {
get {
return ResourceManager.GetString("MenuItem_Website", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Message.
/// </summary>
@@ -3125,6 +3251,42 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Please download and install latest runtime:.
/// </summary>
internal static string MsgDownloadLatestRuntime {
get {
return ResourceManager.GetString("MsgDownloadLatestRuntime", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The application will now exit..
/// </summary>
internal static string MsgExit {
get {
return ResourceManager.GetString("MsgExit", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Missing Runtime:.
/// </summary>
internal static string MsgMissingRuntime {
get {
return ResourceManager.GetString("MsgMissingRuntime", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to runtime library is required.
/// </summary>
internal static string MsgRuntimeIsRequired {
get {
return ResourceManager.GetString("MsgRuntimeIsRequired", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Multi SSH:.
/// </summary>
@@ -3388,7 +3550,7 @@ namespace mRemoteNG.Resources.Language {
}
/// <summary>
/// Looks up a localized string similar to OpeningCommand TODO.
/// Looks up a localized string similar to Opening Command .
/// </summary>
internal static string OpeningCommand {
get {
@@ -3774,6 +3936,15 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Sets the color for the connection or folder in the connections tree. Connections inherit this color from their parent folder..
/// </summary>
internal static string PropertyDescriptionColor {
get {
return ResourceManager.GetString("PropertyDescriptionColor", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Select the color quality to be used..
/// </summary>
@@ -4314,6 +4485,15 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Sets the color of the connection tab. Leave empty for default theme color..
/// </summary>
internal static string PropertyDescriptionTabColor {
get {
return ResourceManager.GetString("PropertyDescriptionTabColor", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Connect to the console session of the remote host..
/// </summary>
@@ -5496,15 +5676,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Report a Bug.
/// </summary>
internal static string ReportBug {
get {
return ResourceManager.GetString("ReportBug", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Reset layout.
/// </summary>
@@ -5595,6 +5766,24 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Do you want to save the changes made to the options?.
/// </summary>
internal static string SaveOptionsBeforeClosing {
get {
return ResourceManager.GetString("SaveOptionsBeforeClosing", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Discard.
/// </summary>
internal static string Discard {
get {
return ResourceManager.GetString("Discard", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to SaveConnectionsOnExit.
/// </summary>
@@ -6171,15 +6360,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Support Forum.
/// </summary>
internal static string SupportForum {
get {
return ResourceManager.GetString("SupportForum", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Switch to Notifications panel on:.
/// </summary>
@@ -6189,6 +6369,15 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Tab Color.
/// </summary>
internal static string TabColor {
get {
return ResourceManager.GetString("TabColor", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Tabs &amp;&amp; Panels.
/// </summary>
@@ -6838,15 +7027,6 @@ namespace mRemoteNG.Resources.Language {
}
}
/// <summary>
/// Looks up a localized string similar to Website.
/// </summary>
internal static string Website {
get {
return ResourceManager.GetString("Website", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to WebView2InitializationFailed.
/// </summary>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>O Aplikaci</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -712,7 +712,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Nový panel spojení</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Vyhledat aktualizace</value>
</data>
<data name="Config" xml:space="preserve">
@@ -733,7 +733,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Smazat vnější nástroj...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Přispějte</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -751,7 +751,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Nápověda</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Nápověda mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -793,7 +793,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="RenameTab" xml:space="preserve">
<value>Přejmonovat záložku tabu</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Nahlásit chybu</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -823,7 +823,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="StartChat" xml:space="preserve">
<value>Spustit (VNC) chat</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Diskuzní fórum podpory</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -838,7 +838,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<data name="ViewOnly" xml:space="preserve">
<value>Pouze prohlížet (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Webová stránka</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Über</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -195,6 +195,9 @@
<data name="Inheritance" xml:space="preserve">
<value>Vererbung</value>
</data>
<data name="_Launch" xml:space="preserve">
<value>&amp;Starten</value>
</data>
<data name="ButtonLaunchPutty" xml:space="preserve">
<value>Starte PuTTY</value>
</data>
@@ -225,9 +228,6 @@
<data name="Display" xml:space="preserve">
<value>Anzeige</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Verschiedenes</value>
</data>
@@ -294,9 +294,18 @@
<data name="Message" xml:space="preserve">
<value>Nachricht</value>
</data>
<data name="CommandExitProgram" xml:space="preserve">
<value>B&amp;eende {0}</value>
</data>
<data name="CommandLineArgsCouldNotBeParsed" xml:space="preserve">
<value>Die Kommandozeilenparameter konnten nicht ausgewertet werden!</value>
</data>
<data name="CommandOpenConnectionFile" xml:space="preserve">
<value>Eine Verbindungsdatei öffnen</value>
</data>
<data name="_TryAgain" xml:space="preserve">
<value>&amp;Nochmal versuchen</value>
</data>
<data name="CompatibilityLenovoAutoScrollUtilityDetected" xml:space="preserve">
<value>{0} hat festgestellt, dass das Lenovo Auto Scroll Utility auf diesem Computer ausgeführt wird. Dieses Dienstprogramm ist dafür bekannt, dass es Probleme mit {0} verursacht. Es wird empfohlen, dass Sie es deaktivieren oder deinstallieren.</value>
</data>
@@ -395,6 +404,9 @@ Starte mit neuer Datei.</value>
<data name="ConnectionsFileCouldNotSaveAs" xml:space="preserve">
<value>Verbindungsdatei konnte nicht als "{0}" gespeichert werden!</value>
</data>
<data name="ConnectNoCredentials" xml:space="preserve">
<value>Ohne Anmeldedaten verbinden</value>
</data>
<data name="ConnectToConsoleSession" xml:space="preserve">
<value>Mit der Konsolensitzung verbinden</value>
</data>
@@ -419,6 +431,9 @@ Starte mit neuer Datei.</value>
<data name="Detect" xml:space="preserve">
<value>Erkennen</value>
</data>
<data name="DontConnectToConsoleSession" xml:space="preserve">
<value>Keine Verbindung zur Konsolensitzung herstellen</value>
</data>
<data name="DontConnectWhenAuthFails" xml:space="preserve">
<value>Keine Verbindung herstellen, wenn Authentifizierung fehlschlägt</value>
</data>
@@ -458,6 +473,9 @@ Starte mit neuer Datei.</value>
<data name="ErrorConnectionListSaveFailed" xml:space="preserve">
<value>Die Verbindungsliste konnte nicht gespeichert werden.</value>
</data>
<data name="ErrorCouldNotLaunchPutty" xml:space="preserve">
<value>PuTTY konnte nicht gestartet werden.</value>
</data>
<data name="ErrorDecryptionFailed" xml:space="preserve">
<value>Entschlüsselung ist gescheitert. {0}</value>
</data>
@@ -482,9 +500,36 @@ Starte mit neuer Datei.</value>
<data name="Export" xml:space="preserve">
<value>Exportieren</value>
</data>
<data name="ExportEverything" xml:space="preserve">
<value>Alles exportieren</value>
</data>
<data name="ExportFile" xml:space="preserve">
<value>Datei exportieren</value>
</data>
<data name="ExportItems" xml:space="preserve">
<value>Element exportieren</value>
</data>
<data name="ExportProperties" xml:space="preserve">
<value>Eigenschaften exportieren</value>
</data>
<data name="ExportSelectedConnection" xml:space="preserve">
<value>Die Aktuell gewählte Verbindung exportieren</value>
</data>
<data name="ExportSelectedFolder" xml:space="preserve">
<value>Den Aktuell gewählten Ordner exportieren</value>
</data>
<data name="_ExportToFile" xml:space="preserve">
<value>In Datei &amp;exportieren...</value>
</data>
<data name="ExternalToolDefaultName" xml:space="preserve">
<value>Neues externes Programm</value>
</data>
<data name="FilterAll" xml:space="preserve">
<value>Alle Dateien (*.*)</value>
</data>
<data name="FilterAllImportable" xml:space="preserve">
<value>Alle wichtigen Dateien</value>
</data>
<data name="FilterApplication" xml:space="preserve">
<value>Application Dateien (*.exe)</value>
</data>
@@ -527,6 +572,9 @@ Starte mit neuer Datei.</value>
<data name="Host" xml:space="preserve">
<value>Host</value>
</data>
<data name="Http" xml:space="preserve">
<value>HTTP</value>
</data>
<data name="HttpConnectFailed" xml:space="preserve">
<value>Verbindung mit HTTP fehlgeschlagen!</value>
</data>
@@ -536,12 +584,24 @@ Starte mit neuer Datei.</value>
<data name="HttpDocumentTileChangeFailed" xml:space="preserve">
<value>Fehler beim Ändern des HTTP-Dokumentfensters!</value>
</data>
<data name="HttpInternetExplorer" xml:space="preserve">
<value>Internet Explorer</value>
</data>
<data name="Https" xml:space="preserve">
<value>HTTPS</value>
</data>
<data name="HttpSetPropsFailed" xml:space="preserve">
<value>Setzen der HTTP-Parameter fehlgeschlagen!</value>
</data>
<data name="ImportAD" xml:space="preserve">
<value>Von Active Directory importieren</value>
</data>
<data name="ImportFileFailedContent" xml:space="preserve">
<value>Beim Importieren der Datei ist ein Fehler aufgetreten ("{0}").</value>
</data>
<data name="ImportFromFile" xml:space="preserve">
<value>Von &amp;Datei importieren</value>
</data>
<data name="ImportPortScan" xml:space="preserve">
<value>Von Port Scan importieren</value>
</data>
@@ -623,6 +683,9 @@ Starte mit neuer Datei.</value>
<data name="LoadFromSqlFailed" xml:space="preserve">
<value>Laden per SQL fehlgeschlagen!</value>
</data>
<data name="LoadFromSqlFailedContent" xml:space="preserve">
<value>Die Verbindungsinformationen konnten nicht vom SQL-Server geladen werden.</value>
</data>
<data name="LoadFromXmlFailed" xml:space="preserve">
<value>Laden der XML-Datei fehlgeschlagen!</value>
</data>
@@ -635,7 +698,7 @@ Starte mit neuer Datei.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Verbindungs-Panel hinzufügen</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Suche nach Updates</value>
</data>
<data name="Config" xml:space="preserve">
@@ -656,7 +719,7 @@ Starte mit neuer Datei.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Entfernen</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Spenden</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -674,7 +737,7 @@ Starte mit neuer Datei.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Hilfe</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Hilfe</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -683,6 +746,9 @@ Starte mit neuer Datei.</value>
<data name="NewConnectionFile" xml:space="preserve">
<value>Neue Verbindungsdatei</value>
</data>
<data name="NewExternalTool" xml:space="preserve">
<value>Neues externes Tool</value>
</data>
<data name="Notifications" xml:space="preserve">
<value>Meldungen</value>
</data>
@@ -713,7 +779,7 @@ Starte mit neuer Datei.</value>
<data name="RenameTab" xml:space="preserve">
<value>Tab umbenennen</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Fehler melden</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -743,7 +809,7 @@ Starte mit neuer Datei.</value>
<data name="StartChat" xml:space="preserve">
<value>Chat starten (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Forum</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -758,7 +824,7 @@ Starte mit neuer Datei.</value>
<data name="ViewOnly" xml:space="preserve">
<value>View-Only-Modus</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Webseite</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -819,6 +885,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="OpenPorts" xml:space="preserve">
<value>Offene Ports</value>
</data>
<data name="OptionsProxyTesting" xml:space="preserve">
<value>Testen...</value>
</data>
<data name="Theme" xml:space="preserve">
<value>Theme</value>
</data>
@@ -834,9 +903,18 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="PasswordProtect" xml:space="preserve">
<value>Passwortschutz</value>
</data>
<data name="PasswordStatusMustMatch" xml:space="preserve">
<value>Die beide Passwörter müssen übereinstimmen.</value>
</data>
<data name="PasswordStatusTooShort" xml:space="preserve">
<value>Das Passwort muss mindestens 3 Zeichen lang sein.</value>
</data>
<data name="PleaseFillAllFields" xml:space="preserve">
<value>Bitte alle Felder ausfüllen!</value>
</data>
<data name="PortScanComplete" xml:space="preserve">
<value>Port-Scan abgeschlossen.</value>
</data>
<data name="PortScanCouldNotLoadPanel" xml:space="preserve">
<value>Kann das Port-Scan-Panel nicht laden!</value>
</data>
@@ -852,6 +930,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="PropertyDescriptionAuthenticationMode" xml:space="preserve">
<value>Wählen Sie, wie Sie sich am VNC-Server authentifizieren wollen.</value>
</data>
<data name="PropertyDescriptionAutomaticResize" xml:space="preserve">
<value>Wählen Sie aus, ob die Größe der Verbindung automatisch angepasst werden soll, wenn die Fenstergröße geändert oder der Vollbildmodus umgeschaltet wird. Benötigt RDC 8.0 oder höher.</value>
</data>
<data name="PropertyDescriptionCacheBitmaps" xml:space="preserve">
<value>Wählen Sie, ob Bitmap-Zwischenspeicherung verwendet werden soll.</value>
</data>
@@ -894,6 +975,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="PropertyDescriptionIcon" xml:space="preserve">
<value>Das ausgewählte Icon wird bei Verbindung zum Host im Tab angezeigt.</value>
</data>
<data name="PropertyDescriptionLoadBalanceInfo" xml:space="preserve">
<value>Gibt die Lastausgleichsinformationen an, die von Lastenausgleichsroutern verwendet werden, um den besten Server auszuwählen.</value>
</data>
<data name="PropertyDescriptionMACAddress" xml:space="preserve">
<value>Geben Sie die MAC-Adresse des Remote Hosts ein (kann für externe Applikationen verwendet werden).</value>
</data>
@@ -942,6 +1026,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="PropertyDescriptionRedirectPrinters" xml:space="preserve">
<value>Wählen Sie, ob ihre lokalen Drucker auf dem entfernten System zur Verfügung stehen sollen.</value>
</data>
<data name="PropertyDescriptionRedirectClipboard" xml:space="preserve">
<value>Umleitung der Zwischenablage erlauben.</value>
</data>
<data name="PropertyDescriptionRedirectSmartCards" xml:space="preserve">
<value>Wählen Sie, ob lokale Smartcards auf dem Remotehost verfügbar sein sollen.</value>
</data>
@@ -999,6 +1086,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="AuthenticationMode" xml:space="preserve">
<value>Authentifizierungsmodus</value>
</data>
<data name="AutomaticResize" xml:space="preserve">
<value>Automatische Größenänderung</value>
</data>
<data name="CacheBitmaps" xml:space="preserve">
<value>Bitmaps zwischenspeichern</value>
</data>
@@ -1035,6 +1125,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="ExternalToolBefore" xml:space="preserve">
<value>Externes Programm vorher</value>
</data>
<data name="LoadBalanceInfo" xml:space="preserve">
<value>Lastausgleichsinfo</value>
</data>
<data name="MacAddress" xml:space="preserve">
<value>MAC-Adresse</value>
</data>
@@ -1083,6 +1176,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="Printers" xml:space="preserve">
<value>Drucker</value>
</data>
<data name="Clipboard" xml:space="preserve">
<value>Zwischenablage</value>
</data>
<data name="Sounds" xml:space="preserve">
<value>Töne</value>
</data>
@@ -1172,6 +1268,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="Quick" xml:space="preserve">
<value>Direkt: {0}</value>
</data>
<data name="QuickConnect" xml:space="preserve">
<value>Schnellverbindung</value>
</data>
<data name="QuickConnectAddFailed" xml:space="preserve">
<value>Hinzufügen zur Direktverbindungshistorie fehlgeschlagen!</value>
</data>
@@ -1349,9 +1448,6 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>Wollen sie die aktuelle Verbindungsdatei speichern, bevor eine andere geladen wird?</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Verbindungen beim Schließen speichern</value>
</data>
<data name="SaveImageFilter" xml:space="preserve">
<value>Graphics Interchange Format Datei (.gif)|*.gif|Joint Photographic Experts Group Datei (.jpeg)|*.jpeg|Joint Photographic Experts Group Datei (.jpg)|*.jpg|Portable Network Graphics Datei (.png)|*.png</value>
</data>
@@ -1463,6 +1559,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="TitlePassword" xml:space="preserve">
<value>mRemoteNG Passwort</value>
</data>
<data name="TitlePasswordWithName" xml:space="preserve">
<value>mRemoteNG Passwort für {0}</value>
</data>
<data name="TitleSelectPanel" xml:space="preserve">
<value>Wähle Panel</value>
</data>
@@ -1475,6 +1574,9 @@ Wenn Sie Fehler feststellen, dann sollten Sie eine neue Verbindungsdatei erstell
<data name="TryToIntegrate" xml:space="preserve">
<value>Integration versuchen</value>
</data>
<data name="ShowOnToolbar" xml:space="preserve">
<value>In der Symbolleiste anzeigen</value>
</data>
<data name="UltraVncRepeater" xml:space="preserve">
<value>Ultra Vnc Repeater</value>
</data>
@@ -1515,6 +1617,9 @@ mRemoteNG wird nun geschlossen und die Installation gestartet.</value>
<data name="Weekly" xml:space="preserve">
<value>Wöchentlich</value>
</data>
<data name="UpdateGetChangeLogFailed" xml:space="preserve">
<value>Der Changelog konnte nicht heruntergeladen werden.</value>
</data>
<data name="UseDifferentUsernameAndPassword" xml:space="preserve">
<value>Anderen Benutzernamen und Passwort verwenden</value>
</data>
@@ -1566,105 +1671,6 @@ mRemoteNG wird nun geschlossen und die Installation gestartet.</value>
<data name="Yes" xml:space="preserve">
<value>Ja</value>
</data>
<data name="_Launch" xml:space="preserve">
<value>&amp;Starten</value>
</data>
<data name="CommandOpenConnectionFile" xml:space="preserve">
<value>Eine Verbindungsdatei öffnen</value>
</data>
<data name="ConnectNoCredentials" xml:space="preserve">
<value>Ohne Anmeldedaten verbinden</value>
</data>
<data name="DontConnectToConsoleSession" xml:space="preserve">
<value>Keine Verbindung zur Konsolensitzung herstellen</value>
</data>
<data name="ErrorCouldNotLaunchPutty" xml:space="preserve">
<value>PuTTY konnte nicht gestartet werden.</value>
</data>
<data name="ExportEverything" xml:space="preserve">
<value>Alles exportieren</value>
</data>
<data name="ExportFile" xml:space="preserve">
<value>Datei exportieren</value>
</data>
<data name="ExportProperties" xml:space="preserve">
<value>Eigenschaften exportieren</value>
</data>
<data name="FilterAllImportable" xml:space="preserve">
<value>Alle wichtigen Dateien</value>
</data>
<data name="ImportFromFile" xml:space="preserve">
<value>Von &amp;Datei importieren</value>
</data>
<data name="OptionsProxyTesting" xml:space="preserve">
<value>Testen...</value>
</data>
<data name="EncryptionEngine" xml:space="preserve">
<value>Verschlüsselungs-Engine</value>
</data>
<data name="TabSecurity" xml:space="preserve">
<value>Sicherheit</value>
</data>
<data name="Dynamic" xml:space="preserve">
<value>Dynamisch</value>
</data>
<data name="High" xml:space="preserve">
<value>Hoch</value>
</data>
<data name="Medium" xml:space="preserve">
<value>Mittel</value>
</data>
<data name="SoundQuality" xml:space="preserve">
<value>Klangqualität</value>
</data>
<data name="UpdatePortableDownloadComplete" xml:space="preserve">
<value>Download abgeschlossen!</value>
</data>
<data name="Title" xml:space="preserve">
<value>Titel</value>
</data>
<data name="OpenFile" xml:space="preserve">
<value>Datei öffnen</value>
</data>
<data name="OpenADifferentFile" xml:space="preserve">
<value>Andere Datei öffnen</value>
</data>
<data name="ConfigurationCreateNew" xml:space="preserve">
<value>Neue Verbindungsdatei erstellen</value>
</data>
<data name="CommandExitProgram" xml:space="preserve">
<value>B&amp;eende {0}</value>
</data>
<data name="_TryAgain" xml:space="preserve">
<value>&amp;Nochmal versuchen</value>
</data>
<data name="ExternalToolDefaultName" xml:space="preserve">
<value>Neues externes Programm</value>
</data>
<data name="LoadFromSqlFailedContent" xml:space="preserve">
<value>Die Verbindungsinformationen konnten nicht vom SQL-Server geladen werden.</value>
</data>
<data name="PasswordStatusMustMatch" xml:space="preserve">
<value>Die beide Passwörter müssen übereinstimmen.</value>
</data>
<data name="PasswordStatusTooShort" xml:space="preserve">
<value>Das Passwort muss mindestens 3 Zeichen lang sein.</value>
</data>
<data name="PortScanComplete" xml:space="preserve">
<value>Port-Scan abgeschlossen.</value>
</data>
<data name="PropertyDescriptionAutomaticResize" xml:space="preserve">
<value>Wählen Sie aus, ob die Größe der Verbindung automatisch angepasst werden soll, wenn die Fenstergröße geändert oder der Vollbildmodus umgeschaltet wird. Benötigt RDC 8.0 oder höher.</value>
</data>
<data name="PropertyDescriptionLoadBalanceInfo" xml:space="preserve">
<value>Gibt die Lastausgleichsinformationen an, die von Lastenausgleichsroutern verwendet werden, um den besten Server auszuwählen.</value>
</data>
<data name="LoadBalanceInfo" xml:space="preserve">
<value>Lastausgleichsinfo</value>
</data>
<data name="TitlePasswordWithName" xml:space="preserve">
<value>mRemoteNG Passwort für {0}</value>
</data>
<data name="RdpOverallConnectionTimeout" xml:space="preserve">
<value>RDP-Verbindungs-Timeout</value>
</data>
@@ -1683,75 +1689,36 @@ mRemoteNG wird nun geschlossen und die Installation gestartet.</value>
<data name="EncryptionBlockCipherMode" xml:space="preserve">
<value>Block-Cipher-Modus</value>
</data>
<data name="ShowTheseMessageTypes" xml:space="preserve">
<value>Zeige diese Nachrichtentypen</value>
<data name="EncryptionEngine" xml:space="preserve">
<value>Verschlüsselungs-Engine</value>
</data>
<data name="ConnectionFileNotFound" xml:space="preserve">
<value>Die Verbindungsdatei konnte nicht gefunden werden.</value>
<data name="TabSecurity" xml:space="preserve">
<value>Sicherheit</value>
</data>
<data name="ConfigurationImportFile" xml:space="preserve">
<value>Existierende Datei importieren</value>
<data name="EncryptionKeyDerivationIterations" xml:space="preserve">
<value>Iterationen der Ableitungsfunktion</value>
</data>
<data name="ConnectionSuccessful" xml:space="preserve">
<value>Verbindung erfolgreich</value>
<data name="Dynamic" xml:space="preserve">
<value>Dynamisch</value>
</data>
<data name="DatabaseNotAvailable" xml:space="preserve">
<value>Datenbank '{0}' ist nicht verfügbar.</value>
<data name="High" xml:space="preserve">
<value>Hoch</value>
</data>
<data name="SaveConnectionsAfterEveryEdit" xml:space="preserve">
<value>Verbindungen nach jeder Bearbeitung speichern</value>
</data>
<data name="FilterSearchMatchesInConnectionTree" xml:space="preserve">
<value>Suchergebnisse in Verbindungen filtern</value>
</data>
<data name="TestConnection" xml:space="preserve">
<value>Verbindung testen</value>
</data>
<data name="TimeoutInSeconds" xml:space="preserve">
<value>Time-Out [Sekunden]</value>
</data>
<data name="AutomaticResize" xml:space="preserve">
<value>Automatische Größenänderung</value>
</data>
<data name="ShowOnToolbar" xml:space="preserve">
<value>In der Symbolleiste anzeigen</value>
</data>
<data name="AssignedCredential" xml:space="preserve">
<value>Zugewiesene Anmeldedaten</value>
</data>
<data name="OptionsThemeNewThemeCaption" xml:space="preserve">
<value>Neuer Thema Name</value>
</data>
<data name="TestingConnection" xml:space="preserve">
<value>Verbindung testen</value>
</data>
<data name="_ExportToFile" xml:space="preserve">
<value>In Datei &amp;exportieren...</value>
</data>
<data name="ImportFileFailedContent" xml:space="preserve">
<value>Beim Importieren der Datei ist ein Fehler aufgetreten ("{0}").</value>
</data>
<data name="AdvancedSecurityOptions" xml:space="preserve">
<value>Erweiterte Sicherheitsoptionen</value>
</data>
<data name="LogTheseMessageTypes" xml:space="preserve">
<value>Diese Nachrichtentypen protokollieren</value>
</data>
<data name="LoginFailedForUser" xml:space="preserve">
<value>Login fehlgeschlagen für Benutzer '{0}'.</value>
</data>
<data name="OptionsPageTitle" xml:space="preserve">
<value>mRemoteNG Optionen</value>
</data>
<data name="NewExternalTool" xml:space="preserve">
<value>Neues externes Tool</value>
</data>
<data name="UpdateGetChangeLogFailed" xml:space="preserve">
<value>Der Changelog konnte nicht heruntergeladen werden.</value>
<data name="Medium" xml:space="preserve">
<value>Mittel</value>
</data>
<data name="PropertyDescriptionSoundQuality" xml:space="preserve">
<value>Wählen Sie die vom Protokoll bereitgestellte Klangqualität: Dynamisch, Mittel, Hoch</value>
</data>
<data name="SoundQuality" xml:space="preserve">
<value>Klangqualität</value>
</data>
<data name="UpdatePortableDownloadComplete" xml:space="preserve">
<value>Download abgeschlossen!</value>
</data>
<data name="Download" xml:space="preserve">
<value>Download</value>
</data>
<data name="PropertyDescriptionRDPMinutesToIdleTimeout" xml:space="preserve">
<value>Die Anzahl der Minuten, die die RDP-Sitzung im Leerlauf verbleibt, bevor sie automatisch getrennt wird (0 bedeutet kein Limit)</value>
</data>
@@ -1761,6 +1728,9 @@ mRemoteNG wird nun geschlossen und die Installation gestartet.</value>
<data name="Add" xml:space="preserve">
<value>Hinzufügen</value>
</data>
<data name="Title" xml:space="preserve">
<value>Titel</value>
</data>
<data name="ConfirmDeleteCredentialRecord" xml:space="preserve">
<value>Möchten Sie die Anmeldeinformationen {0} wirklich löschen?</value>
</data>
@@ -1786,74 +1756,161 @@ Die Passwortlänge muss zwischen {0} und {1} liegen</value>
<data name="ChooseLogPath" xml:space="preserve">
<value>Wählen Sie einen Pfad für das mRemoteNG-Logfile</value>
</data>
<data name="ShowTheseMessageTypes" xml:space="preserve">
<value>Zeige diese Nachrichtentypen</value>
</data>
<data name="LogFilePath" xml:space="preserve">
<value>Pfad des Logfiles</value>
</data>
<data name="LogTheseMessageTypes" xml:space="preserve">
<value>Diese Nachrichtentypen protokollieren</value>
</data>
<data name="ChoosePath" xml:space="preserve">
<value>Pfad auswählen</value>
</data>
<data name="OpenFile" xml:space="preserve">
<value>Datei öffnen</value>
</data>
<data name="UseDefault" xml:space="preserve">
<value>Standard verwenden</value>
</data>
<data name="Logging" xml:space="preserve">
<value>Protokollierung</value>
</data>
<data name="Popups" xml:space="preserve">
<value>Pop-ups</value>
</data>
<data name="LogToAppDir" xml:space="preserve">
<value>In das Anwendungsverzeichnis protokollieren</value>
</data>
<data name="AssignedCredential" xml:space="preserve">
<value>Zugewiesene Anmeldedaten</value>
</data>
<data name="Credentials" xml:space="preserve">
<value>Anmeldedaten</value>
</data>
<data name="OpenADifferentFile" xml:space="preserve">
<value>Andere Datei öffnen</value>
</data>
<data name="CredentialUnavailable" xml:space="preserve">
<value>Anmeldeinformationen nicht verfügbar</value>
</data>
<data name="OptionsThemeDeleteConfirmation" xml:space="preserve">
<value>Soll das Theme wirklich gelöscht werden?</value>
</data>
<data name="OptionsThemeNewThemeCaption" xml:space="preserve">
<value>Neuer Thema Name</value>
</data>
<data name="OptionsThemeNewThemeError" xml:space="preserve">
<value>Das Theme kann nicht erstellt werden, Name bereits vorhanden oder Sonderzeichen im Namen</value>
</data>
<data name="OptionsThemeNewThemeText" xml:space="preserve">
<value>Namen des neuen Theme angeben</value>
</data>
<data name="OptionsThemeChangeWarning" xml:space="preserve">
<value>Warnung: Ein Neustart ist erforderlich, um Änderungen am Theme anzuwenden.</value>
</data>
<data name="CouldNotFindExternalTool" xml:space="preserve">
<value>Externes Tool mit Namen "{0}" konnte nicht gefunden werden</value>
</data>
<data name="ConfigurationCreateNew" xml:space="preserve">
<value>Neue Verbindungsdatei erstellen</value>
</data>
<data name="ConnectionFileNotFound" xml:space="preserve">
<value>Die Verbindungsdatei konnte nicht gefunden werden.</value>
</data>
<data name="ConfigurationImportFile" xml:space="preserve">
<value>Existierende Datei importieren</value>
</data>
<data name="ConfigurationCustomPath" xml:space="preserve">
<value>Eigenen Pfad verwenden</value>
</data>
<data name="TestingConnection" xml:space="preserve">
<value>Verbindung testen</value>
</data>
<data name="ServerNotAccessible" xml:space="preserve">
<value>Server '{0}' nicht erreichbar</value>
</data>
<data name="ConnectionSuccessful" xml:space="preserve">
<value>Verbindung erfolgreich</value>
</data>
<data name="LoginFailedForUser" xml:space="preserve">
<value>Login fehlgeschlagen für Benutzer '{0}'.</value>
</data>
<data name="DatabaseNotAvailable" xml:space="preserve">
<value>Datenbank '{0}' ist nicht verfügbar.</value>
</data>
<data name="SaveConnectionsAfterEveryEdit" xml:space="preserve">
<value>Verbindungen nach jeder Bearbeitung speichern</value>
</data>
<data name="FilterSearchMatchesInConnectionTree" xml:space="preserve">
<value>Suchergebnisse in Verbindungen filtern</value>
</data>
<data name="TestConnection" xml:space="preserve">
<value>Verbindung testen</value>
</data>
<data name="LoadBalanceInfoUseUtf8" xml:space="preserve">
<value>Verwenden Sie die UTF8-Codierung für die RDP-Eigenschaft "Load Balance Info"</value>
</data>
<data name="ExportSelectedConnection" xml:space="preserve">
<value>Die Aktuell gewählte Verbindung exportieren</value>
<data name="TimeoutInSeconds" xml:space="preserve">
<value>Time-Out [Sekunden]</value>
</data>
<data name="ExportSelectedFolder" xml:space="preserve">
<value>Den Aktuell gewählten Ordner exportieren</value>
<data name="WorkingDirectory" xml:space="preserve">
<value>Arbeitsverzeichnis:</value>
</data>
<data name="Popups" xml:space="preserve">
<value>Pop-ups</value>
<data name="WorkingDirColumnHeader" xml:space="preserve">
<value>Arbeitsverzeichnis</value>
</data>
<data name="ExportItems" xml:space="preserve">
<value>Element exportieren</value>
<data name="LockToolbars" xml:space="preserve">
<value>Position der Symbolleiste sperren</value>
</data>
<data name="Http" xml:space="preserve">
<value>HTTP</value>
<data name="MultiSshToolbar" xml:space="preserve">
<value>Multi-SSH Symbolleiste</value>
</data>
<data name="HttpInternetExplorer" xml:space="preserve">
<value>Internet Explorer</value>
<data name="AdvancedSecurityOptions" xml:space="preserve">
<value>Erweiterte Sicherheitsoptionen</value>
</data>
<data name="Https" xml:space="preserve">
<value>HTTPS</value>
<data name="OptionsPageTitle" xml:space="preserve">
<value>mRemoteNG Optionen</value>
</data>
<data name="Download" xml:space="preserve">
<value>Download</value>
<data name="CreateEmptyPanelOnStartUp" xml:space="preserve">
<value>Erstelle ein leeres Panel, wenn mRemoteNG gestartet wird</value>
</data>
<data name="MustBeBetween0And255" xml:space="preserve">
<value>Muss zwischen 0 und 255 liegen</value>
</data>
<data name="Delete" xml:space="preserve">
<value>Löschen</value>
</data>
<data name="ReconnectAllConnections" xml:space="preserve">
<value>Alle Verbindungen wieder verbinden</value>
</data>
<data name="DisconnectOthers" xml:space="preserve">
<value>Alles außer dieser Verbindung trennen</value>
</data>
<data name="ConfirmCloseConnectionOthersInstruction" xml:space="preserve">
<value>Sind Sie sicher, dass Sie alle Verbindungen bis auf "{0}" schließen wollen?</value>
</data>
<data name="AutomaticReconnectError" xml:space="preserve">
<value>Beim Versuch, die Verbindung zum RDP-Host '{0}' wiederherzustellen, ist ein Fehler aufgetreten</value>
</data>
<data name="ChangeConnectionResolutionError" xml:space="preserve">
<value>Beim Versuch, die Verbindungsauflösung auf den Host '{0}' zu ändern, ist ein Fehler aufgetreten</value>
</data>
<data name="ExceptionMessage" xml:space="preserve">
<value>Fehlermeldung</value>
</data>
<data name="UnhandledExceptionOccured" xml:space="preserve">
<value>Eine unbehandelte Ausnahme ist aufgetreten</value>
</data>
<data name="CopyHostname" xml:space="preserve">
<value>Hostnamen kopieren</value>
</data>
<data name="PlaceSearchBarAboveConnectionTree" xml:space="preserve">
<value>Suchleiste über den Verbindungen anzeigen</value>
</data>
<data name="CreateEmptyPanelOnStartUp" xml:space="preserve">
<value>Erstelle ein leeres Panel, wenn mRemoteNG gestartet wird</value>
<data name="TrackActiveConnectionInConnectionTree" xml:space="preserve">
<value>Aktive Verbindung im Verbindungsbaum verfolgen</value>
</data>
<data name="ReleaseChannel" xml:space="preserve">
<value>Update-Kanal</value>
@@ -1863,30 +1920,9 @@ Die Passwortlänge muss zwischen {0} und {1} liegen</value>
Preview beinhaltet Betas &amp; Release Candidates.
Nightly umfasst Alphas, Betas und Release Candidates.</value>
</data>
<data name="TrackActiveConnectionInConnectionTree" xml:space="preserve">
<value>Aktive Verbindung im Verbindungsbaum verfolgen</value>
</data>
<data name="EncryptionKeyDerivationIterations" xml:space="preserve">
<value>Iterationen der Ableitungsfunktion</value>
</data>
<data name="Credentials" xml:space="preserve">
<value>Anmeldedaten</value>
</data>
<data name="Apply" xml:space="preserve">
<value>Anwenden</value>
</data>
<data name="OptionsThemeChangeWarning" xml:space="preserve">
<value>Warnung: Ein Neustart ist erforderlich, um Änderungen am Theme anzuwenden.</value>
</data>
<data name="Clipboard" xml:space="preserve">
<value>Zwischenablage</value>
</data>
<data name="PropertyDescriptionRedirectClipboard" xml:space="preserve">
<value>Umleitung der Zwischenablage erlauben.</value>
</data>
<data name="MultiSshToolbar" xml:space="preserve">
<value>Multi-SSH Symbolleiste</value>
</data>
<data name="PropertyDescriptionFavorite" xml:space="preserve">
<value>Zeige diese Verbindung in den Favoriten</value>
</data>
@@ -1905,8 +1941,8 @@ Nightly umfasst Alphas, Betas und Release Candidates.</value>
<data name="DoNotTrimUsername" xml:space="preserve">
<value>Leerzeichen nicht aus Benutzernamen entfernen</value>
</data>
<data name="UseVmId" xml:space="preserve">
<value>Benutze VM ID</value>
<data name="PropertyDescriptionRdpVersion" xml:space="preserve">
<value>Legt die Version des RDP fest, die beim Öffnen von Verbindungen verwendet wird.</value>
</data>
<data name="PropertyDescriptionUseVmId" xml:space="preserve">
<value>Verwenden Sie die VM ID, um eine Verbindung zu einer VM herzustellen die auf Hyper-V ausgeführt wird.</value>
@@ -1914,18 +1950,24 @@ Nightly umfasst Alphas, Betas und Release Candidates.</value>
<data name="PropertyDescriptionVmId" xml:space="preserve">
<value>Die ID der virtuellen Hyper-V-Maschine, zu der eine Verbindung hergestellt werden soll.</value>
</data>
<data name="UseVmId" xml:space="preserve">
<value>Benutze VM ID</value>
</data>
<data name="RdpProtocolVersionNotSupported" xml:space="preserve">
<value>RDP-Client konnte nicht erstellt werden. Die RDP-Protokollversion {0} wird auf diesem System nicht unterstützt. Bitte wählen Sie eine ältere Protokollversion.</value>
</data>
<data name="PropertyDescriptionRdpVersion" xml:space="preserve">
<value>Legt die Version des RDP fest, die beim Öffnen von Verbindungen verwendet wird.</value>
</data>
<data name="PropertyDescriptionSshTunnel" xml:space="preserve">
<value>Zum Verbinden mittels eines SSH Tunnels (Jump Host) geben Sie hier den Namen der SSH Verbindung an, welche benutzt werden soll um den SSH Tunnel einzurichten.</value>
</data>
<data name="SshTunnel" xml:space="preserve">
<value>SSH-Tunnel</value>
</data>
<data name="PropertyDescriptionSshOptions" xml:space="preserve">
<value>Geben Sie hier zusaetzliche Optionen an welche fuer die SSH Verbindung verwendet werden sollen. Fuer weitere Infos zu den moeglichen Optionen konsultieren sie die Putty Dokumentation.</value>
</data>
<data name="SshOptions" xml:space="preserve">
<value>SSH-Optionen</value>
</data>
<data name="SshTunnelConfigProblem" xml:space="preserve">
<value>Konfigurationsfehler der Verbindung. Verbindung zu: "{0}" via SSH Tunnel: "{1}" nicht möglich. Eine Verbindung mit dem als SSH Tunnel konfiguriertem Namen konnte nicht gefunden werden. Löschen Sie die SSH Tunnel Konfiguration or geben sie eine existierende SSH Verbindung an, welche zum Aufbau eine Tunnels zum Erreichen des eigentlichen Zielsystems verwendet werden soll.</value>
</data>
@@ -1950,6 +1992,9 @@ Nightly umfasst Alphas, Betas und Release Candidates.</value>
<data name="PropertyDescriptionPasswordProtect" xml:space="preserve">
<value>Legen Sie ein Kennwort fest, mit dem die Verbindungsdatei verschlüsselt werden soll. Sie werden aufgefordert Ihr Passwort einzugeben, bevor Sie mRemoteNG starten.</value>
</data>
<data name="UseEnhancedMode" xml:space="preserve">
<value>Erweiterten Modus verwenden</value>
</data>
<data name="CloseToSysTray" xml:space="preserve">
<value>In den System Tray schließen</value>
</data>
@@ -1962,75 +2007,21 @@ Nightly umfasst Alphas, Betas und Release Candidates.</value>
<data name="PropertyDescriptionDisableCursorShadow" xml:space="preserve">
<value>Legt fest, ob ein Mausschatten sichtbar sein soll.</value>
</data>
<data name="PropertyDescriptionDisableMenuAnimations" xml:space="preserve">
<value>Legt fest, ob Menüs und Fenster mit Animationseffekten in der Remote-Sitzung angezeigt werden können.</value>
</data>
<data name="PropertyDescriptionDisableFullWindowDrag" xml:space="preserve">
<value>Legt fest, ob der Fensterinhalt angezeigt wird, wenn Sie das Fenster an eine neue Position ziehen.</value>
</data>
<data name="PropertyDescriptionDisableMenuAnimations" xml:space="preserve">
<value>Legt fest, ob Menüs und Fenster mit Animationseffekten in der Remote-Sitzung angezeigt werden können.</value>
</data>
<data name="ShowHideMenu" xml:space="preserve">
<value>Verstecke/Zeige Menü</value>
</data>
<data name="WorkingDirColumnHeader" xml:space="preserve">
<value>Arbeitsverzeichnis</value>
</data>
<data name="WorkingDirectory" xml:space="preserve">
<value>Arbeitsverzeichnis:</value>
</data>
<data name="UseEnhancedMode" xml:space="preserve">
<value>Erweiterten Modus verwenden</value>
</data>
<data name="UnhandledExceptionOccured" xml:space="preserve">
<value>Eine unbehandelte Ausnahme ist aufgetreten</value>
</data>
<data name="ReconnectAllConnections" xml:space="preserve">
<value>Alle Verbindungen wieder verbinden</value>
</data>
<data name="QuickConnect" xml:space="preserve">
<value>Schnellverbindung</value>
</data>
<data name="SshOptions" xml:space="preserve">
<value>SSH-Optionen</value>
</data>
<data name="SshTunnel" xml:space="preserve">
<value>SSH-Tunnel</value>
</data>
<data name="MustBeBetween0And255" xml:space="preserve">
<value>Muss zwischen 0 und 255 liegen</value>
</data>
<data name="AutomaticReconnectError" xml:space="preserve">
<value>Beim Versuch, die Verbindung zum RDP-Host '{0}' wiederherzustellen, ist ein Fehler aufgetreten</value>
</data>
<data name="ChangeConnectionResolutionError" xml:space="preserve">
<value>Beim Versuch, die Verbindungsauflösung auf den Host '{0}' zu ändern, ist ein Fehler aufgetreten</value>
</data>
<data name="ConfirmCloseConnectionOthersInstruction" xml:space="preserve">
<value>Sind Sie sicher, dass Sie alle Verbindungen bis auf "{0}" schließen wollen?</value>
</data>
<data name="CopyHostname" xml:space="preserve">
<value>Hostnamen kopieren</value>
</data>
<data name="Delete" xml:space="preserve">
<value>Löschen</value>
</data>
<data name="DisconnectOthers" xml:space="preserve">
<value>Alles außer dieser Verbindung trennen</value>
</data>
<data name="LockToolbars" xml:space="preserve">
<value>Position der Symbolleiste sperren</value>
</data>
<data name="ExceptionMessage" xml:space="preserve">
<value>Fehlermeldung</value>
</data>
<data name="WebView2InitializationFailed" xml:space="preserve">
<value>WebView2-Erstellung fehlgeschlagen</value>
<data name="ApplyInheritanceToChildren" xml:space="preserve">
<value>Vererbung auf Kinder anwenden</value>
</data>
<data name="ApplyDefaultInheritance" xml:space="preserve">
<value>Standardvererbung anwenden</value>
</data>
<data name="ApplyInheritanceToChildren" xml:space="preserve">
<value>Vererbung auf Kinder anwenden</value>
</data>
<data name="PsCanceled" xml:space="preserve">
<value>Anmeldung abgebrochen! Bei bedarf neu einleiten.</value>
<comment>C# to Powershell transfer issue with encoding possible</comment>
@@ -2050,4 +2041,13 @@ Nightly umfasst Alphas, Betas und Release Candidates.</value>
<data name="OptionsCompanyPolicyMessage" xml:space="preserve">
<value>*Einige Einstellungen werden von Ihrem Unternehmen festgelegt. Für weitere Informationen wenden Sie sich an Ihren Systemadministrator.</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Verbindungen beim Schließen speichern</value>
</data>
<data name="WebView2InitializationFailed" xml:space="preserve">
<value>WebView2-Erstellung fehlgeschlagen</value>
</data>
</root>

View File

@@ -59,7 +59,7 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
@@ -105,19 +105,19 @@
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="MenuItem_About" xml:space="preserve">
<value>Σχετικά με</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -222,9 +222,6 @@
<data name="Display" xml:space="preserve">
<value>Οθόνη</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Πύλη</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Διάφορα</value>
</data>
@@ -273,4 +270,7 @@
<data name="ConnectionsFileCouldNotBeLoaded" xml:space="preserve">
<value>Το αρχείο συνδέσεων "{0}" δεν μπορεί να φορτωθεί!</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Πύλη</value>
</data>
</root>

View File

@@ -59,7 +59,7 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
@@ -105,17 +105,17 @@
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ButtonDefaultProperties" xml:space="preserve">
<value>Propiedades por defecto</value>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Acerca de</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -225,9 +225,6 @@
<data name="Display" xml:space="preserve">
<value>Pantalla</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Puerta de Enlace</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Varios</value>
</data>
@@ -628,7 +625,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Agregar Panel de Conexión</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Comprobar Actualizaciones</value>
</data>
<data name="Config" xml:space="preserve">
@@ -649,7 +646,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Borrar Herramienta Externa...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Donar</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -667,7 +664,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Ayuda</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Ayuda de mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -709,7 +706,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="RenameTab" xml:space="preserve">
<value>Renombrar Pestaña</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Informar de un Bug</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -739,7 +736,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="StartChat" xml:space="preserve">
<value>Comenzar Chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Foro de Soporte</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -754,7 +751,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<data name="ViewOnly" xml:space="preserve">
<value>Solo Ver (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Sitio Web</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -1330,9 +1327,6 @@ Mensaje:
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>¿Quiere guardar el actual archivo de conexiones antes de cargar otro?</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Guardar conexiones al salir</value>
</data>
<data name="Screen" xml:space="preserve">
<value>Pantalla</value>
</data>
@@ -1541,4 +1535,10 @@ mRemoteNG ahora se cerrará y comenzará la instalación.</value>
<data name="Yes" xml:space="preserve">
<value>Sí</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Puerta de Enlace</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Guardar conexiones al salir</value>
</data>
</root>

View File

@@ -1,5 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
@@ -79,4 +138,4 @@
<data name="Rdp65536Colors" xml:space="preserve">
<value>65536 Värit (16-bit)</value>
</data>
</root>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -59,7 +59,7 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
@@ -105,19 +105,19 @@
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="MenuItem_About" xml:space="preserve">
<value>Névjegy</value>
</data>
<data name="Always" xml:space="preserve">
@@ -183,9 +183,6 @@
<data name="Display" xml:space="preserve">
<value>Képernyő</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Átjáró</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Egyéb</value>
</data>
@@ -270,7 +267,7 @@
<data name="LanguageDefault" xml:space="preserve">
<value>(Automatikus észlelés)</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Frissítés keresése</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -297,7 +294,7 @@
<data name="RenameTab" xml:space="preserve">
<value>Fül átnevezése</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Hibabejelentés</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -309,7 +306,7 @@
<data name="SaveConnectionFileAs" xml:space="preserve">
<value>Kapcsolatfájl mentése, mint...</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Honlap</value>
</data>
<data name="Never" xml:space="preserve">
@@ -333,4 +330,7 @@
<data name="UseSQLServer" xml:space="preserve">
<value>SQL szerver használata a kapcsolatok kezelésére</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Átjáró</value>
</data>
</root>

View File

@@ -59,7 +59,7 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
@@ -105,19 +105,19 @@
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="MenuItem_About" xml:space="preserve">
<value>Informazioni su</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -225,9 +225,6 @@
<data name="Display" xml:space="preserve">
<value>Schermo</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Altro</value>
</data>
@@ -625,7 +622,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Aggiungi pannello delle connessioni</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Verifica la presenza di aggiornamenti</value>
</data>
<data name="Config" xml:space="preserve">
@@ -646,7 +643,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Elimina applicazione esterna...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Effettua una donazione</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -664,7 +661,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Aiuto</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Guida di mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -706,7 +703,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="RenameTab" xml:space="preserve">
<value>Rinomina tab</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Segnala un bug</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -736,7 +733,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="StartChat" xml:space="preserve">
<value>Avvia chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Forum di supporto</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -751,7 +748,7 @@ Creazione di un nuovo file delle connessioni.</value>
<data name="ViewOnly" xml:space="preserve">
<value>Visualizza soltanto (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Sito web</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -1342,9 +1339,6 @@ Messaggio:
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>Vuoi salvare il file delle connessioni corrente prima di caricarne un altro?</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Salva le connessioni all'uscita</value>
</data>
<data name="SaveImageFilter" xml:space="preserve">
<value>File Graphics Interchange Format (.gif)|*.gif|File Joint Photographic Experts Group (.jpeg)|*.jpeg|File Joint Photographic Experts Group (.jpg)|*.jpg|File Portable Network Graphics (.png)|*.png</value>
</data>
@@ -1556,4 +1550,10 @@ mRemoteNG verrà chiuso e l'installazione avrà inizio.</value>
<data name="Yes" xml:space="preserve">
<value>Sì</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Salva le connessioni all'uscita</value>
</data>
</root>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>mRemoteNGについて</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -233,9 +233,6 @@
<data name="Display" xml:space="preserve">
<value>ディスプレイ</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>ゲートウェイ</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>その他</value>
</data>
@@ -726,7 +723,7 @@ Starting with new connections file.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>接続表示パネルの追加</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>最新バージョンをチェック</value>
</data>
<data name="Config" xml:space="preserve">
@@ -747,7 +744,7 @@ Starting with new connections file.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>外部ツールを削除...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>寄付のお願い</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -765,7 +762,7 @@ Starting with new connections file.</value>
<data name="_Help" xml:space="preserve">
<value>ヘルプ(&amp;H)</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNGヘルプ</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -807,7 +804,7 @@ Starting with new connections file.</value>
<data name="RenameTab" xml:space="preserve">
<value>タブ名を変更</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>バグを報告する</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -838,7 +835,7 @@ Starting with new connections file.</value>
<data name="StartChat" xml:space="preserve">
<value>Start Chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>サポートフォーラム</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -853,7 +850,7 @@ Starting with new connections file.</value>
<data name="ViewOnly" xml:space="preserve">
<value>View Only (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>ウェブサイト(英語)</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -1486,9 +1483,6 @@ Message:
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>Do you want to save the current connections file before loading another?</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>終了時に保存する</value>
</data>
<data name="SaveImageFilter" xml:space="preserve">
<value>Graphics Interchange Format File (.gif)|*.gif|Joint Photographic Experts Group File (.jpeg)|*.jpeg|Joint Photographic Experts Group File (.jpg)|*.jpg|Portable Network Graphics File (.png)|*.png</value>
</data>
@@ -1716,4 +1710,10 @@ mRemoteNGを終了してインストールを開始します</value>
<data name="Yes" xml:space="preserve">
<value>はい</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>ゲートウェイ</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>終了時に保存する</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -117,15 +117,34 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="PlaceSearchBarAboveConnectionTree" xml:space="preserve">
<value>Place search bar above connection tree</value>
<data name="ActiveDirectory" xml:space="preserve">
<value>Active Directory</value>
</data>
<data name="ErrorFipsPolicyIncompatible" xml:space="preserve">
<value>The Windows security setting, "System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing", is enabled.
See the Microsoft Support article at http://support.microsoft.com/kb/811833 for more information.
{0} is not fully FIPS compliant. Click OK to proceed at your own discretion, or Cancel to Exit.</value>
</data>
<data name="HttpInternetExplorer" xml:space="preserve">
<value>Internet Explorer</value>
</data>
<data name="None" xml:space="preserve">
<value>None</value>
</data>
<data name="PropertyDescriptionColors" xml:space="preserve">
<value>Select the color quality to be used.</value>
</data>
<data name="PropertyDescriptionRedirectClipboard" xml:space="preserve">
<value>Select whether clipboard should be shared.</value>
</data>
<data name="Colors" xml:space="preserve">
<value>Colors</value>
</data>
<data name="Clipboard" xml:space="preserve">
<value>Clipboard</value>
</data>
<data name="Rdp16777216Colors" xml:space="preserve">
<value>16777216 Colors (24-bit)</value>
</data>
@@ -141,91 +160,72 @@
<data name="Rdp65536Colors" xml:space="preserve">
<value>65536 Colors (16-bit)</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
<value>Active Directory</value>
</data>
<data name="ErrorFipsPolicyIncompatible" xml:space="preserve">
<value>The Windows security setting, "System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing", is enabled.
See the Microsoft Support article at http://support.microsoft.com/kb/811833 for more information.
{0} is not fully FIPS compliant. Click OK to proceed at your own discretion, or Cancel to Exit.</value>
</data>
<data name="HttpInternetExplorer" xml:space="preserve">
<value>Internet Explorer</value>
</data>
<data name="None" xml:space="preserve">
<value>None</value>
</data>
<data name="PropertyDescriptionRedirectClipboard" xml:space="preserve">
<value>Select whether clipboard should be shared.</value>
</data>
<data name="Clipboard" xml:space="preserve">
<value>Clipboard</value>
</data>
<data name="OptionsThemeChangeWarning" xml:space="preserve">
<value>Warning: Restart is required to commit any theme configuration change.</value>
</data>
<value>Warning: Restart is required to commit any theme configuration change.</value>
</data>
<data name="MustBeBetween0And255" xml:space="preserve">
<value>Must Be Between 0 and 255</value>
</data>
<value>Must Be Between 0 and 255</value>
</data>
<data name="OutOfRange" xml:space="preserve">
<value>Out Of Range</value>
</data>
<value>Out Of Range</value>
</data>
<data name="Delete" xml:space="preserve">
<value>Delete...</value>
</data>
<value>Delete...</value>
</data>
<data name="ReconnectAllConnections" xml:space="preserve">
<value>Reconnect All Connections</value>
</data>
<value>Reconnect All Connections</value>
</data>
<data name="UltraVNCSingleClick" xml:space="preserve">
<value>UltraVNC SingleClick</value>
</data>
<value>UltraVNC SingleClick</value>
</data>
<data name="DisconnectOthers" xml:space="preserve">
<value>Disconnect All But This</value>
</data>
<value>Disconnect All But This</value>
</data>
<data name="AutomaticReconnectError" xml:space="preserve">
<value>An error occurred while trying to reconnect to RDP host '{0}'</value>
</data>
<value>An error occurred while trying to reconnect to RDP host '{0}'</value>
</data>
<data name="ChangeConnectionResolutionError" xml:space="preserve">
<value>An error occurred while trying to change the connection resolution to host '{0}'</value>
</data>
<value>An error occurred while trying to change the connection resolution to host '{0}'</value>
</data>
<data name="StackTrace" xml:space="preserve">
<value>Stack trace</value>
</data>
<value>Stack trace</value>
</data>
<data name="ExceptionMessage" xml:space="preserve">
<value>Exception Message</value>
</data>
<value>Exception Message</value>
</data>
<data name="mRemoteNGUnhandledException" xml:space="preserve">
<value>mRemoteNG Unhandled Exception</value>
</data>
<value>mRemoteNG Unhandled Exception</value>
</data>
<data name="UnhandledExceptionOccured" xml:space="preserve">
<value>An unhandled exception has occurred</value>
</data>
<value>An unhandled exception has occurred</value>
</data>
<data name="ExceptionForcesmRemoteNGToClose" xml:space="preserve">
<value>This exception will force mRemoteNG to close</value>
</data>
<value>This exception will force mRemoteNG to close</value>
</data>
<data name="CopyHostname" xml:space="preserve">
<value>Copy Hostname</value>
</data>
<value>Copy Hostname</value>
</data>
<data name="PlaceSearchBarAboveConnectionTree" xml:space="preserve">
<value>Place search bar above connection tree</value>
</data>
<data name="TrackActiveConnectionInConnectionTree" xml:space="preserve">
<value>Track active connection in the connection tree</value>
</data>
<value>Track active connection in the connection tree</value>
</data>
<data name="AlwaysShowConnectionTabs" xml:space="preserve">
<value>Always show connection tabs</value>
</data>
<value>Always show connection tabs</value>
</data>
<data name="ReleaseChannel" xml:space="preserve">
<value>Release Channel</value>
</data>
<value>Release Channel</value>
</data>
<data name="ReleaseChannelExplanation" xml:space="preserve">
<value>Stable channel includes final releases only.
<value>Stable channel includes final releases only.
Preview channel includes Betas &amp; Release Candidates.
Nightly Channel includes Alphas, Betas &amp; Release Candidates.</value>
</data>
</data>
<data name="Apply" xml:space="preserve">
<value>Apply</value>
</data>
<value>Apply</value>
</data>
<data name="Proxy" xml:space="preserve">
<value>Proxy</value>
</data>
<value>Proxy</value>
</data>
</root>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Om</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -195,6 +195,9 @@
<data name="Inheritance" xml:space="preserve">
<value>Arv</value>
</data>
<data name="_Launch" xml:space="preserve">
<value>&amp;Start</value>
</data>
<data name="ButtonLaunchPutty" xml:space="preserve">
<value>Start PuTTY</value>
</data>
@@ -225,9 +228,6 @@
<data name="Display" xml:space="preserve">
<value>Skjerm</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Diverse</value>
</data>
@@ -294,9 +294,18 @@
<data name="Message" xml:space="preserve">
<value>Melding</value>
</data>
<data name="CommandExitProgram" xml:space="preserve">
<value>Avslu&amp;tt {0}</value>
</data>
<data name="CommandLineArgsCouldNotBeParsed" xml:space="preserve">
<value>Kunne ikke tolke kommandolinjeargumenter!</value>
</data>
<data name="CommandOpenConnectionFile" xml:space="preserve">
<value>Åpne tilkoblingsfil</value>
</data>
<data name="_TryAgain" xml:space="preserve">
<value>Prøv igjen</value>
</data>
<data name="CompatibilityLenovoAutoScrollUtilityDetected" xml:space="preserve">
<value>{0} har oppdaget at Lenovo Auto Scroll-verktøyet kjører på dette systemet. Dette verktøyet er kjent for å forårsake problemer med {0}. Det anbefales at du deaktiverer eller avinstallerer dette programmet.</value>
</data>
@@ -394,6 +403,9 @@ Starter med ny tilkoblingsfil.</value>
<data name="ConnectionsFileCouldNotSaveAs" xml:space="preserve">
<value>Kunne ikke lagre tilkoblingsfilen som "{0}"!</value>
</data>
<data name="ConnectNoCredentials" xml:space="preserve">
<value>Koble til uten legitimasjon</value>
</data>
<data name="ConnectToConsoleSession" xml:space="preserve">
<value>Koble til konsolløkt</value>
</data>
@@ -418,6 +430,9 @@ Starter med ny tilkoblingsfil.</value>
<data name="Detect" xml:space="preserve">
<value>Oppdag</value>
</data>
<data name="DontConnectToConsoleSession" xml:space="preserve">
<value>Ikke koble til konsollsesjon</value>
</data>
<data name="DontConnectWhenAuthFails" xml:space="preserve">
<value>Ikke koble til dersom godkjenning mislykkes</value>
</data>
@@ -457,12 +472,23 @@ Starter med ny tilkoblingsfil.</value>
<data name="ErrorConnectionListSaveFailed" xml:space="preserve">
<value>Tilkoblingslisten kan ikke lagres.</value>
</data>
<data name="ErrorCouldNotLaunchPutty" xml:space="preserve">
<value>PuTTY kunne ikke startes.</value>
</data>
<data name="ErrorDecryptionFailed" xml:space="preserve">
<value>Dekryptering mislyktes. {0}</value>
</data>
<data name="ErrorEncryptionFailed" xml:space="preserve">
<value>Kryptering mislyktes. {0}</value>
</data>
<data name="ErrorFipsPolicyIncompatible" xml:space="preserve">
<value>Sikkerhetsinnstillingen "Systemkryptografi: Bruk FIPS-kompatible algoritmer til kryptering, hash-koding og signering" i Windows er aktivert.
Se Microsofts support-artikkel på http://support.microsoft.com/kb/811833 for mer informasjon.
{0} er ikke fullt ut FIPS-kompatibel. Klikk OK for å fortsette, eller Avbryt for å avslutte.
</value>
</data>
<data name="Errors" xml:space="preserve">
<value>Feil</value>
</data>
@@ -481,9 +507,39 @@ Starter med ny tilkoblingsfil.</value>
<data name="Export" xml:space="preserve">
<value>Eksporter</value>
</data>
<data name="ExportEverything" xml:space="preserve">
<value>Eksporter alt</value>
</data>
<data name="ExportFile" xml:space="preserve">
<value>Eksporter fil</value>
</data>
<data name="ExportItems" xml:space="preserve">
<value>Eksporter elementer</value>
</data>
<data name="ExportProperties" xml:space="preserve">
<value>Eksporter egenskaper</value>
</data>
<data name="ExportSelectedConnection" xml:space="preserve">
<value>Eksporter valgt tilkobling</value>
</data>
<data name="ExportSelectedFolder" xml:space="preserve">
<value>Eksporter valgt mappe</value>
</data>
<data name="_ExportToFile" xml:space="preserve">
<value>&amp;Eksporter til fil...</value>
</data>
<data name="ExternalToolDefaultName" xml:space="preserve">
<value>Nytt eksternt verktøy</value>
</data>
<data name="FileFormat" xml:space="preserve">
<value>&amp;Filformat:</value>
</data>
<data name="FilterAll" xml:space="preserve">
<value>Alle filer (*.*)</value>
</data>
<data name="FilterAllImportable" xml:space="preserve">
<value>Alle filer som kan importeres</value>
</data>
<data name="FilterApplication" xml:space="preserve">
<value>Programfiler (*.exe)</value>
</data>
@@ -493,6 +549,12 @@ Starter med ny tilkoblingsfil.</value>
<data name="FiltermRemoteXML" xml:space="preserve">
<value>mRemote XML-filer (*.xml)</value>
</data>
<data name="FilterPuttyConnectionManager" xml:space="preserve">
<value>PuTTY Connection Manager-filer</value>
</data>
<data name="FilterRdgFiles" xml:space="preserve">
<value>Remote Desktop Connection Manager-filer (*.rdg)</value>
</data>
<data name="FilterRDP" xml:space="preserve">
<value>RDP-filer (*.rdp)</value>
</data>
@@ -544,6 +606,12 @@ Starter med ny tilkoblingsfil.</value>
<data name="ImportAD" xml:space="preserve">
<value>Importer fra Active Directory</value>
</data>
<data name="ImportFileFailedContent" xml:space="preserve">
<value>En feil har oppstått under import av filen "{0}".</value>
</data>
<data name="ImportFromFile" xml:space="preserve">
<value>Importer fra &amp;fil...</value>
</data>
<data name="ImportPortScan" xml:space="preserve">
<value>Import fra Port Scan</value>
</data>
@@ -625,6 +693,9 @@ Starter med ny tilkoblingsfil.</value>
<data name="LoadFromSqlFailed" xml:space="preserve">
<value>Innlasting fra SQL mislyktes!</value>
</data>
<data name="LoadFromSqlFailedContent" xml:space="preserve">
<value>Tilkoblingsinformasjonen kunne ikke lastes fra SQL server.</value>
</data>
<data name="LoadFromXmlFailed" xml:space="preserve">
<value>Innlasting fra XML mislyktes!</value>
</data>
@@ -637,7 +708,7 @@ Starter med ny tilkoblingsfil.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Legg til tilkoblingspanel</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Se etter oppdateringer</value>
</data>
<data name="Config" xml:space="preserve">
@@ -658,7 +729,7 @@ Starter med ny tilkoblingsfil.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Slett eksternt verktøy...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Donér</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -676,7 +747,7 @@ Starter med ny tilkoblingsfil.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Hjelp</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG-hjelp</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -718,7 +789,7 @@ Starter med ny tilkoblingsfil.</value>
<data name="RenameTab" xml:space="preserve">
<value>Gi nytt navn til fane</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Rapporter en feil</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -748,7 +819,7 @@ Starter med ny tilkoblingsfil.</value>
<data name="StartChat" xml:space="preserve">
<value>Start chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Forum for brukerstøtte</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -763,7 +834,7 @@ Starter med ny tilkoblingsfil.</value>
<data name="ViewOnly" xml:space="preserve">
<value>Kun visning (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Nettsted</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -838,9 +909,18 @@ Starter med ny tilkoblingsfil.</value>
<data name="PasswordProtect" xml:space="preserve">
<value>Passordbeskyttelse</value>
</data>
<data name="PasswordStatusMustMatch" xml:space="preserve">
<value>Begge passordene må være like.</value>
</data>
<data name="PasswordStatusTooShort" xml:space="preserve">
<value>Passordet må være minst 3 tegn langt.</value>
</data>
<data name="PleaseFillAllFields" xml:space="preserve">
<value>Vennligst fyll inn alle felt</value>
</data>
<data name="PortScanComplete" xml:space="preserve">
<value>Portskanning ferdig.</value>
</data>
<data name="PortScanCouldNotLoadPanel" xml:space="preserve">
<value>Kunne ikke laste inn portskanningpanelet!</value>
</data>
@@ -856,6 +936,9 @@ Starter med ny tilkoblingsfil.</value>
<data name="PropertyDescriptionAuthenticationMode" xml:space="preserve">
<value>Velg hvordan du ønsker å autentisere deg mot VNC-serveren.</value>
</data>
<data name="PropertyDescriptionAutomaticResize" xml:space="preserve">
<value>Velg om tilkoblingen skal endre størrelse når vinduet endrer størrelse eller fullskjermsmodus slås av eller på. Krever RDC 8.0 eller høyere.</value>
</data>
<data name="PropertyDescriptionCacheBitmaps" xml:space="preserve">
<value>Velg om du vil bruke hurtigbufring av punktgrafikk eller ikke.</value>
</data>
@@ -898,6 +981,9 @@ Starter med ny tilkoblingsfil.</value>
<data name="PropertyDescriptionIcon" xml:space="preserve">
<value>Velg et ikon som skal vises når man er tilkoblet verten.</value>
</data>
<data name="PropertyDescriptionLoadBalanceInfo" xml:space="preserve">
<value>Angi informasjon for lastbalanseringsrutere for å velge den beste verten.</value>
</data>
<data name="PropertyDescriptionMACAddress" xml:space="preserve">
<value>Angi MAC-adressen til den eksterne verten dersom du ønsker å bruke denne i et eksternt verktøy.</value>
</data>
@@ -946,12 +1032,18 @@ Starter med ny tilkoblingsfil.</value>
<data name="PropertyDescriptionRedirectPrinters" xml:space="preserve">
<value>Velg om lokale skrivere skal vises på den eksterne verten.</value>
</data>
<data name="PropertyDescriptionRedirectClipboard" xml:space="preserve">
<value>Velg om utklippstavlen skal deles.</value>
</data>
<data name="PropertyDescriptionRedirectSmartCards" xml:space="preserve">
<value>Velg om lokale smartkort skal være tilgjengelig på den eksterne verten.</value>
</data>
<data name="PropertyDescriptionRedirectSounds" xml:space="preserve">
<value>Velg hvordan ekstern lyd skal omadresseres.</value>
</data>
<data name="PropertyDescriptionRedirectAudioCapture" xml:space="preserve">
<value>Velg om standard lydinndataenhet på den eksterne maskinen skal omadresseres til denne maskinen.</value>
</data>
<data name="PropertyDescriptionRenderingEngine" xml:space="preserve">
<value>Velg en av de tilgjengelige renderingsmotorene som skal brukes til å vise HTML.</value>
</data>
@@ -1003,6 +1095,9 @@ Starter med ny tilkoblingsfil.</value>
<data name="AuthenticationMode" xml:space="preserve">
<value>Godkjenningsmodus</value>
</data>
<data name="AutomaticResize" xml:space="preserve">
<value>Automatisk størrelsesendring</value>
</data>
<data name="CacheBitmaps" xml:space="preserve">
<value>Hurtigbufring av punktgrafikk</value>
</data>
@@ -1039,6 +1134,9 @@ Starter med ny tilkoblingsfil.</value>
<data name="ExternalToolBefore" xml:space="preserve">
<value>Eksternt verktøy før</value>
</data>
<data name="LoadBalanceInfo" xml:space="preserve">
<value>Lastbalanseringsinformasjon</value>
</data>
<data name="MacAddress" xml:space="preserve">
<value>MAC-adresse</value>
</data>
@@ -1087,9 +1185,15 @@ Starter med ny tilkoblingsfil.</value>
<data name="Printers" xml:space="preserve">
<value>Skrivere</value>
</data>
<data name="Clipboard" xml:space="preserve">
<value>Utklippstavle</value>
</data>
<data name="Sounds" xml:space="preserve">
<value>Lyder</value>
</data>
<data name="AudioCapture" xml:space="preserve">
<value>Lydopptak</value>
</data>
<data name="RenderingEngine" xml:space="preserve">
<value>Renderingsmotor</value>
</data>
@@ -1355,9 +1459,6 @@ Starter med ny tilkoblingsfil.</value>
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>Vil du lagre den gjeldende tilkoblingsfilen før du laster inn en annen?</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Lagre tilkoblinger ved avslutning</value>
</data>
<data name="SaveImageFilter" xml:space="preserve">
<value>Graphics Interchange Format File (.gif)|*.gif|Joint Photographic Experts Group File (.jpeg)|*.jpeg|Joint Photographic Experts Group File (.jpg)|*.jpg|Portable Network Graphics File (.png)|*.png</value>
</data>
@@ -1469,6 +1570,9 @@ Starter med ny tilkoblingsfil.</value>
<data name="TitlePassword" xml:space="preserve">
<value>Passord</value>
</data>
<data name="TitlePasswordWithName" xml:space="preserve">
<value>Passord for {0}</value>
</data>
<data name="TitleSelectPanel" xml:space="preserve">
<value>Velg panel</value>
</data>
@@ -1481,6 +1585,9 @@ Starter med ny tilkoblingsfil.</value>
<data name="TryToIntegrate" xml:space="preserve">
<value>Prøv å integrere</value>
</data>
<data name="ShowOnToolbar" xml:space="preserve">
<value>Vis på verktøylinjen</value>
</data>
<data name="UltraVncRepeater" xml:space="preserve">
<value>Ultra VNC Repeater</value>
</data>
@@ -1521,6 +1628,9 @@ mRemoteNG vil nå avslutte og starte installasjonen.</value>
<data name="Weekly" xml:space="preserve">
<value>Ukentlig</value>
</data>
<data name="UpdateGetChangeLogFailed" xml:space="preserve">
<value>Endringsloggen kunne ikke lastes ned.</value>
</data>
<data name="UseDifferentUsernameAndPassword" xml:space="preserve">
<value>Bruk et annet brukernavn og/eller passord</value>
</data>
@@ -1572,122 +1682,6 @@ mRemoteNG vil nå avslutte og starte installasjonen.</value>
<data name="Yes" xml:space="preserve">
<value>Ja</value>
</data>
<data name="_Launch" xml:space="preserve">
<value>&amp;Start</value>
</data>
<data name="CommandExitProgram" xml:space="preserve">
<value>Avslu&amp;tt {0}</value>
</data>
<data name="CommandOpenConnectionFile" xml:space="preserve">
<value>Åpne tilkoblingsfil</value>
</data>
<data name="_TryAgain" xml:space="preserve">
<value>Prøv igjen</value>
</data>
<data name="ConnectNoCredentials" xml:space="preserve">
<value>Koble til uten legitimasjon</value>
</data>
<data name="DontConnectToConsoleSession" xml:space="preserve">
<value>Ikke koble til konsollsesjon</value>
</data>
<data name="ErrorCouldNotLaunchPutty" xml:space="preserve">
<value>PuTTY kunne ikke startes.</value>
</data>
<data name="ErrorFipsPolicyIncompatible" xml:space="preserve">
<value>Sikkerhetsinnstillingen "Systemkryptografi: Bruk FIPS-kompatible algoritmer til kryptering, hash-koding og signering" i Windows er aktivert.
Se Microsofts support-artikkel på http://support.microsoft.com/kb/811833 for mer informasjon.
{0} er ikke fullt ut FIPS-kompatibel. Klikk OK for å fortsette, eller Avbryt for å avslutte.
</value>
</data>
<data name="ExportEverything" xml:space="preserve">
<value>Eksporter alt</value>
</data>
<data name="ExportFile" xml:space="preserve">
<value>Eksporter fil</value>
</data>
<data name="ExportItems" xml:space="preserve">
<value>Eksporter elementer</value>
</data>
<data name="ExportProperties" xml:space="preserve">
<value>Eksporter egenskaper</value>
</data>
<data name="ExportSelectedConnection" xml:space="preserve">
<value>Eksporter valgt tilkobling</value>
</data>
<data name="ExportSelectedFolder" xml:space="preserve">
<value>Eksporter valgt mappe</value>
</data>
<data name="_ExportToFile" xml:space="preserve">
<value>&amp;Eksporter til fil...</value>
</data>
<data name="ExternalToolDefaultName" xml:space="preserve">
<value>Nytt eksternt verktøy</value>
</data>
<data name="FileFormat" xml:space="preserve">
<value>&amp;Filformat:</value>
</data>
<data name="FilterAllImportable" xml:space="preserve">
<value>Alle filer som kan importeres</value>
</data>
<data name="FilterPuttyConnectionManager" xml:space="preserve">
<value>PuTTY Connection Manager-filer</value>
</data>
<data name="FilterRdgFiles" xml:space="preserve">
<value>Remote Desktop Connection Manager-filer (*.rdg)</value>
</data>
<data name="ImportFileFailedContent" xml:space="preserve">
<value>En feil har oppstått under import av filen "{0}".</value>
</data>
<data name="ImportFromFile" xml:space="preserve">
<value>Importer fra &amp;fil...</value>
</data>
<data name="LoadFromSqlFailedContent" xml:space="preserve">
<value>Tilkoblingsinformasjonen kunne ikke lastes fra SQL server.</value>
</data>
<data name="PasswordStatusMustMatch" xml:space="preserve">
<value>Begge passordene må være like.</value>
</data>
<data name="PasswordStatusTooShort" xml:space="preserve">
<value>Passordet må være minst 3 tegn langt.</value>
</data>
<data name="PortScanComplete" xml:space="preserve">
<value>Portskanning ferdig.</value>
</data>
<data name="PropertyDescriptionAutomaticResize" xml:space="preserve">
<value>Velg om tilkoblingen skal endre størrelse når vinduet endrer størrelse eller fullskjermsmodus slås av eller på. Krever RDC 8.0 eller høyere.</value>
</data>
<data name="PropertyDescriptionLoadBalanceInfo" xml:space="preserve">
<value>Angi informasjon for lastbalanseringsrutere for å velge den beste verten.</value>
</data>
<data name="PropertyDescriptionRedirectClipboard" xml:space="preserve">
<value>Velg om utklippstavlen skal deles.</value>
</data>
<data name="PropertyDescriptionRedirectAudioCapture" xml:space="preserve">
<value>Velg om standard lydinndataenhet på den eksterne maskinen skal omadresseres til denne maskinen.</value>
</data>
<data name="AutomaticResize" xml:space="preserve">
<value>Automatisk størrelsesendring</value>
</data>
<data name="LoadBalanceInfo" xml:space="preserve">
<value>Lastbalanseringsinformasjon</value>
</data>
<data name="Clipboard" xml:space="preserve">
<value>Utklippstavle</value>
</data>
<data name="AudioCapture" xml:space="preserve">
<value>Lydopptak</value>
</data>
<data name="TitlePasswordWithName" xml:space="preserve">
<value>Passord for {0}</value>
</data>
<data name="ShowOnToolbar" xml:space="preserve">
<value>Vis på verktøylinjen</value>
</data>
<data name="UpdateGetChangeLogFailed" xml:space="preserve">
<value>Endringsloggen kunne ikke lastes ned.</value>
</data>
<data name="RdpOverallConnectionTimeout" xml:space="preserve">
<value>RDP tidsavbrudd</value>
</data>
@@ -2005,4 +1999,10 @@ Nightly-kanalen inkluderer alpha-, beta- og release candidate-versjoner.</value>
<data name="Environment" xml:space="preserve">
<value>Miljø</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Lagre tilkoblinger ved avslutning</value>
</data>
</root>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Over</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -225,9 +225,6 @@
<data name="Display" xml:space="preserve">
<value>Scherm</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Diversen</value>
</data>
@@ -634,7 +631,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="AddConnectionPanel" xml:space="preserve">
<value>Voeg Connectie Paneel toe</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Controleer voor beschikbare Updates</value>
</data>
<data name="Config" xml:space="preserve">
@@ -655,7 +652,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="DeleteExternalTool" xml:space="preserve">
<value>Verwijder Externe Applicatie...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Doneer</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -673,7 +670,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="_Help" xml:space="preserve">
<value>&amp;Help</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG Help</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -715,7 +712,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="RenameTab" xml:space="preserve">
<value>Hernoem Tab</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Meld een bug</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -745,7 +742,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="StartChat" xml:space="preserve">
<value>Start Chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Ondersteunings Forum</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -760,7 +757,7 @@ Beginnen met nieuwe Connectie bestand.</value>
<data name="ViewOnly" xml:space="preserve">
<value>Alleen bekijken (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Website</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -1355,9 +1352,6 @@ Bericht:
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>Wil je de huidige verbindingen opslaan voordat er een andere wordt geopend?</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Sla verbindingen op bij afsluiten</value>
</data>
<data name="SaveImageFilter" xml:space="preserve">
<value>Graphics Interchange Format bestand (.gif)|*.gif|Joint Photographic Experts Group bestand (.jpeg)|*.jpeg|Joint Photographic Experts Group bestand (.jpg)|*.jpg|Portable Network Graphics bestand (.png)|*.png</value>
</data>
@@ -1588,4 +1582,10 @@ mRemoteNG zal nu worden gesloten en beginnen met de installatie.</value>
<value>Maximaal aantal inlogpogingen overschreden. Maak opnieuw verbinding.</value>
<comment>C# to Powershell transfer issue with encoding possible</comment>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Sla verbindingen op bij afsluiten</value>
</data>
</root>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>O programie</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -231,9 +231,6 @@
<data name="Display" xml:space="preserve">
<value>Wyświetl</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Brama</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Pozostałe</value>
</data>
@@ -725,7 +722,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="AddConnectionPanel" xml:space="preserve">
<value>Dodaj panel połączenia</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Sprawdź aktualizacje</value>
</data>
<data name="Config" xml:space="preserve">
@@ -746,7 +743,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="DeleteExternalTool" xml:space="preserve">
<value>Usuń zewnętrzne narzędzie...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Darowizna</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -764,7 +761,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="_Help" xml:space="preserve">
<value>&amp;Pomoc</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Pomoc mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -806,7 +803,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="RenameTab" xml:space="preserve">
<value>Zmień nazwę karty</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Zgłoś błąd</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -836,7 +833,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="StartChat" xml:space="preserve">
<value>Rozpocznij Chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Forum pomocy</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -851,7 +848,7 @@ Więcj informacji w aktykule Wsparcia Windows na stronie https://support.microso
<data name="ViewOnly" xml:space="preserve">
<value>Tylko pogląd (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Strona WWW</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -2359,4 +2356,7 @@ Kanał nocny obejmuje wersje alfa, beta i RC (gotowe do wydania).</value>
<value>Maksymalna liczba prób została przekroczona. Proszę połączyć się ponownie.</value>
<comment>Problem z transferem z C# do Powershell z możliwym kodowaniem</comment>
</data>
</root>
<data name="Gateway" xml:space="preserve">
<value>Brama</value>
</data>
</root>

View File

@@ -59,7 +59,7 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
@@ -105,19 +105,19 @@
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="MenuItem_About" xml:space="preserve">
<value>Sobre</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -222,9 +222,6 @@
<data name="Display" xml:space="preserve">
<value>Mostrar</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Diversos</value>
</data>
@@ -369,4 +366,7 @@
<data name="ConnectionsFileCouldNotBeLoadedNew" xml:space="preserve">
<value>Arquivo de conexões "{0}" não pôde ser carregado! Começando com o novo arquivo de conexões.</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
</root>

View File

@@ -59,7 +59,7 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
@@ -105,19 +105,19 @@
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="MenuItem_About" xml:space="preserve">
<value>Sobre</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -225,9 +225,6 @@
<data name="Display" xml:space="preserve">
<value>Ecrã</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Diversos</value>
</data>
@@ -630,7 +627,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>Adicionar o Painel de Ligação</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Verificar se há atualizações</value>
</data>
<data name="Config" xml:space="preserve">
@@ -651,7 +648,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>Excluir ferramenta externa...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Doar</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -669,7 +666,7 @@
<data name="_Help" xml:space="preserve">
<value>&amp;Ajuda</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Ajuda mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -711,7 +708,7 @@
<data name="RenameTab" xml:space="preserve">
<value>Renomear aba</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Relatar um erro</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -738,7 +735,7 @@
<data name="StartChat" xml:space="preserve">
<value>Iniciar chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Fórum de suporte</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -753,7 +750,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>Somente ver (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Sítio</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -1341,9 +1338,6 @@
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>Você deseja salvar o arquivo atual de ligações antes de carregar outro?</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Salvar as ligações à saída</value>
</data>
<data name="SaveImageFilter" xml:space="preserve">
<value>Graphics Interchange Format File (.gif)|*.gif|Joint Photographic Experts Group File (.jpeg)|*.jpeg|Joint Photographic Experts Group File (.jpg)|*.jpg|Portable Network Graphics File (.png)|*.png</value>
</data>
@@ -1554,4 +1548,10 @@
<data name="Yes" xml:space="preserve">
<value>Sim</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Gateway</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>Salvar as ligações à saída</value>
</data>
</root>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>About</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -159,6 +159,9 @@
<data name="AskUpdatesMainInstruction" xml:space="preserve">
<value>Automatic update settings</value>
</data>
<data name="Ard" xml:space="preserve">
<value>ARD (Apple Remote Desktop)</value>
</data>
<data name="Aspect" xml:space="preserve">
<value>Aspect</value>
</data>
@@ -345,6 +348,9 @@
<data name="ConfirmCloseConnectionPanelMainInstruction" xml:space="preserve">
<value>Are you sure you want to close the panel, "{0}"? Any connections that it contains will also be closed.</value>
</data>
<data name="ConfirmDisconnectConnection" xml:space="preserve">
<value>Are you sure you want to disconnect "{0}"?</value>
</data>
<data name="ConfirmDeleteExternalTool" xml:space="preserve">
<value>Are you sure you want to delete the external tool, "{0}"?</value>
</data>
@@ -725,7 +731,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="AddConnectionPanel" xml:space="preserve">
<value>Add Connection Panel</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Check for Updates</value>
</data>
<data name="Config" xml:space="preserve">
@@ -746,7 +752,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="DeleteExternalTool" xml:space="preserve">
<value>Delete External Tool...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Donate</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -764,7 +770,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="_Help" xml:space="preserve">
<value>&amp;Help</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG Help</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -806,8 +812,8 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="RenameTab" xml:space="preserve">
<value>Rename Tab</value>
</data>
<data name="ReportBug" xml:space="preserve">
<value>Report a Bug</value>
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Report an Issue</value>
</data>
<data name="ResetLayout" xml:space="preserve">
<value>Reset layout</value>
@@ -836,7 +842,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="StartChat" xml:space="preserve">
<value>Start Chat (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Support Forum</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -851,7 +857,7 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
<data name="ViewOnly" xml:space="preserve">
<value>View Only</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Website</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -1020,6 +1026,12 @@ If you run into such an error, please create a new connection file!</value>
<data name="PropertyDescriptionPanel" xml:space="preserve">
<value>Sets the panel in which the connection will open.</value>
</data>
<data name="PropertyDescriptionColor" xml:space="preserve">
<value>Sets the color for the connection or folder in the connections tree. Connections inherit this color from their parent folder.</value>
</data>
<data name="PropertyDescriptionTabColor" xml:space="preserve">
<value>Sets the color of the connection tab. Leave empty for default theme color.</value>
</data>
<data name="PropertyDescriptionPassword" xml:space="preserve">
<value>Enter your password.</value>
</data>
@@ -1137,6 +1149,9 @@ If you run into such an error, please create a new connection file!</value>
<data name="CacheBitmaps" xml:space="preserve">
<value>Cache Bitmaps</value>
</data>
<data name="Color" xml:space="preserve">
<value>Color</value>
</data>
<data name="Colors" xml:space="preserve">
<value>Colors</value>
</data>
@@ -1182,6 +1197,9 @@ If you run into such an error, please create a new connection file!</value>
<data name="Panel" xml:space="preserve">
<value>Panel</value>
</data>
<data name="TabColor" xml:space="preserve">
<value>Tab Color</value>
</data>
<data name="Password" xml:space="preserve">
<value>Password</value>
</data>
@@ -1501,6 +1519,12 @@ If you run into such an error, please create a new connection file!</value>
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>Do you want to save the current connections file before loading another?</value>
</data>
<data name="SaveOptionsBeforeClosing" xml:space="preserve">
<value>Do you want to save the changes made to the options?</value>
</data>
<data name="Discard" xml:space="preserve">
<value>Discard</value>
</data>
<data name="ConnectionsBackupFrequencyDaily" xml:space="preserve">
<value>Daily</value>
</data>
@@ -1925,6 +1949,15 @@ mRemoteNG will now quit and begin with the installation.</value>
<data name="DatabaseNotAvailable" xml:space="preserve">
<value>Database '{0}' not available.</value>
</data>
<data name="ErrorPlatformNotSupported" xml:space="preserve">
<value>Platform error: {0}</value>
</data>
<data name="ErrorMissingDependency" xml:space="preserve">
<value>Missing dependency: {0}</value>
</data>
<data name="ErrorArchitectureMismatch" xml:space="preserve">
<value>Architecture mismatch: {0}</value>
</data>
<data name="SaveConnectionsAfterEveryEdit" xml:space="preserve">
<value>Save connections after every edit</value>
</data>
@@ -2200,7 +2233,8 @@ Nightly Channel includes Alphas, Betas &amp; Release Candidates.</value>
<comment>https://docs.microsoft.com/en-us/windows/win32/termserv/imstscsecuredsettings-workdir</comment>
</data>
<data name="OpeningCommand" xml:space="preserve">
<value>OpeningCommand TODO</value>
<value>Opening Command </value>
<comment>Command what will be run after connection</comment>
</data>
<data name="PropertyDescriptionOpeningCommand" xml:space="preserve">
<value>Description of OpeningCommand TODO</value>
@@ -2292,6 +2326,15 @@ Nightly Channel includes Alphas, Betas &amp; Release Candidates.</value>
<data name="ECPClickstudiosPasswordstate" xml:space="preserve">
<value>Clickstudios Passwordstate</value>
</data>
<data name="ECPOnePassword" xml:space="preserve">
<value>1Password</value>
</data>
<data name="ECPOnePasswordReadFailed" xml:space="preserve">
<value>1Password read failed</value>
</data>
<data name="ECPOnePasswordCommandLine" xml:space="preserve">
<value>1Password command line</value>
</data>
<data name="ECPNone" xml:space="preserve">
<value>None</value>
</data>
@@ -2416,4 +2459,26 @@ Nightly Channel includes Alphas, Betas &amp; Release Candidates.</value>
<data name="WarnMeOnlyWhenClosingMultipleConnections" xml:space="preserve">
<value>WarnMeOnlyWhenClosingMultipleConnections</value>
</data>
<data name="MsgExit" xml:space="preserve">
<value>The application will now exit.</value>
<comment>Message shown then application will normally close</comment>
</data>
<data name="MsgDownloadLatestRuntime" xml:space="preserve">
<value>Please download and install latest runtime:</value>
<comment>Appears then missing a runtime</comment>
</data>
<data name="MsgMissingRuntime" xml:space="preserve">
<value>Missing Runtime:</value>
</data>
<data name="MsgRuntimeIsRequired" xml:space="preserve">
<value>runtime library is required</value>
</data>
<data name="MenuItem_Chat" xml:space="preserve">
<value>mR Chat</value>
<comment>Chat to dev</comment>
</data>
<data name="MenuItem_Community" xml:space="preserve">
<value>Community</value>
<comment>Reddit</comment>
</data>
</root>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>О программе</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -719,7 +719,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>Добавить Панель подключения</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Проверка наличия обновлений</value>
</data>
<data name="Config" xml:space="preserve">
@@ -740,7 +740,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>Удалить внешний инструмент...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Помочь проекту</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -758,7 +758,7 @@
<data name="_Help" xml:space="preserve">
<value>&amp;Справка</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>Справка mRemoteNG</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -800,7 +800,7 @@
<data name="RenameTab" xml:space="preserve">
<value>Переименовать закладку</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Сообщить об ошибке</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -830,7 +830,7 @@
<data name="StartChat" xml:space="preserve">
<value>Начать чат (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Форум поддержки</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -845,7 +845,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>Просмотр (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Веб-сайт</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
@@ -26,79 +26,79 @@
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>Om</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -228,9 +228,6 @@
<data name="Display" xml:space="preserve">
<value>Skärm</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Nätverksnod (gateway)</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>Blandat</value>
</data>
@@ -713,7 +710,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="AddConnectionPanel" xml:space="preserve">
<value>Lägg till anslutningspanel</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>Sök efter uppdateringar</value>
</data>
<data name="Config" xml:space="preserve">
@@ -728,7 +725,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="DeleteExternalTool" xml:space="preserve">
<value>Ta bort externt verktyg...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>Donera</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -746,7 +743,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="_Help" xml:space="preserve">
<value>&amp;Hjälp</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG hjälp</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -788,7 +785,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="RenameTab" xml:space="preserve">
<value>Byt namn på flik</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>Rapportera en bugg</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -815,7 +812,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="StartChat" xml:space="preserve">
<value>Starta chatt (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>Supportforum</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -830,7 +827,7 @@ Se Microsofts supportartikel på http://support.microsoft.com/kb/811833 för mer
<data name="ViewOnly" xml:space="preserve">
<value>Visa endast</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>Webbplats</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -2172,4 +2169,7 @@ Nattliga kanalen inkluderar Alfa, Betor &amp; Utgåvokandidater.</value>
<data name="FiltermRemoteRemoteDesktopManagerCSV" xml:space="preserve">
<value>Remote Desktop Manager-filer (*.csv)</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>Nätverksnod (gateway)</value>
</data>
</root>

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>பற்றி</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -725,7 +725,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>இணைப்பு பலகையைச் சேர்</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>புதுப்பிப்புகளை சரிபார்</value>
</data>
<data name="Config" xml:space="preserve">
@@ -746,7 +746,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>வெளிப்புற கருவியை நீக்கு...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>நன்கொடை</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -764,7 +764,7 @@
<data name="_Help" xml:space="preserve">
<value>உதவி</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>பலதொலைஅத உதவி</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -806,7 +806,7 @@
<data name="RenameTab" xml:space="preserve">
<value>தாவலை மறுபெயரிடுங்கள்</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>ஒரு பிழையைப் புகாரளி</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -836,7 +836,7 @@
<data name="StartChat" xml:space="preserve">
<value>அரட்டையைத் தொடங்கு (விஎன்சி)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>உதவி மன்றம்</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -851,7 +851,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>பார்க்க மட்டுமே</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>வலைத்தளம்</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -2416,4 +2416,4 @@
<data name="WarnMeOnlyWhenClosingMultipleConnections" xml:space="preserve">
<value>முன்னறிவிப்பு</value>
</data>
</root>
</root>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<data name="MenuItem_About" xml:space="preserve">
<value>关于</value>
</data>
<data name="ActiveDirectory" xml:space="preserve">
@@ -231,9 +231,6 @@
<data name="Display" xml:space="preserve">
<value>显示</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>网关</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>杂项</value>
</data>
@@ -722,7 +719,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>添加连接面板</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>检查更新</value>
</data>
<data name="Config" xml:space="preserve">
@@ -743,7 +740,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>删除外部工具...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>捐赠</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -761,7 +758,7 @@
<data name="_Help" xml:space="preserve">
<value>帮助(&amp;H)</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG 帮助</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -803,7 +800,7 @@
<data name="RenameTab" xml:space="preserve">
<value>重命名标签</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>报告问题</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -833,7 +830,7 @@
<data name="StartChat" xml:space="preserve">
<value>启动 Chat(VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>支持论坛</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -848,7 +845,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>仅查看</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>网站</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -1483,9 +1480,6 @@
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>打开其它连接配置文件前,是否保存当前配置文件?</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>退出时保存连接配置文件</value>
</data>
<data name="SaveImageFilter" xml:space="preserve">
<value>图形交换格式文件 (.gif)|*.gif|联合图像专家组文件 (.jpeg)|*.jpeg|联合图像专家组文件 (.jpg)|*.jpg|便携式网络图形文件 (.png)|*.png</value>
</data>
@@ -2080,4 +2074,10 @@ mRemoteNG 将退出并安装更新。</value>
<data name="PowerShell" xml:space="preserve">
<value>PowerShell</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>网关</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>退出时保存连接配置文件</value>
</data>
</root>

View File

@@ -59,7 +59,7 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
@@ -105,19 +105,19 @@
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="MenuItem_About" xml:space="preserve">
<value>關於</value>
</data>
<data name="AddNodeFromXmlFailed" xml:space="preserve">
@@ -225,9 +225,6 @@
<data name="Display" xml:space="preserve">
<value>顯示</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>閘道</value>
</data>
<data name="Miscellaneous" xml:space="preserve">
<value>雜項</value>
</data>
@@ -637,7 +634,7 @@
<data name="AddConnectionPanel" xml:space="preserve">
<value>加入連線面板</value>
</data>
<data name="CheckForUpdates" xml:space="preserve">
<data name="MenuItem_CheckForUpdates" xml:space="preserve">
<value>檢查更新</value>
</data>
<data name="Config" xml:space="preserve">
@@ -658,7 +655,7 @@
<data name="DeleteExternalTool" xml:space="preserve">
<value>刪除外部工具...</value>
</data>
<data name="Donate" xml:space="preserve">
<data name="MenuItem_Donate" xml:space="preserve">
<value>捐贈</value>
</data>
<data name="DuplicateTab" xml:space="preserve">
@@ -676,7 +673,7 @@
<data name="_Help" xml:space="preserve">
<value>說明(&amp;H)</value>
</data>
<data name="HelpContents" xml:space="preserve">
<data name="MenuItem_HelpContents" xml:space="preserve">
<value>mRemoteNG 說明</value>
</data>
<data name="LaunchExternalTool" xml:space="preserve">
@@ -718,7 +715,7 @@
<data name="RenameTab" xml:space="preserve">
<value>重新命名索引標籤</value>
</data>
<data name="ReportBug" xml:space="preserve">
<data name="MenuItem_ReportIssue" xml:space="preserve">
<value>報告 Bug</value>
</data>
<data name="ResetLayout" xml:space="preserve">
@@ -748,7 +745,7 @@
<data name="StartChat" xml:space="preserve">
<value>開始聊天 (VNC)</value>
</data>
<data name="SupportForum" xml:space="preserve">
<data name="MenuItem_SupportForum" xml:space="preserve">
<value>支援討論區</value>
</data>
<data name="_Tools" xml:space="preserve">
@@ -763,7 +760,7 @@
<data name="ViewOnly" xml:space="preserve">
<value>只有檢視 (VNC)</value>
</data>
<data name="Website" xml:space="preserve">
<data name="MenuItem_Website" xml:space="preserve">
<value>網站</value>
</data>
<data name="MinimizeToSysTray" xml:space="preserve">
@@ -1358,9 +1355,6 @@
<data name="SaveConnectionsFileBeforeOpeningAnother" xml:space="preserve">
<value>您要在載入另一個之前先儲存目前的連線檔案嗎?</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>結束時儲存連線</value>
</data>
<data name="SaveImageFilter" xml:space="preserve">
<value>Graphics Interchange Format 檔案 (.gif)|*.gif|Joint Photographic Experts Group 檔案 (.jpeg)|*.jpeg|Joint Photographic Experts Group 檔案 (.jpg)|*.jpg|Portable Network Graphics 檔案 (.png)|*.png</value>
</data>
@@ -1575,4 +1569,10 @@ mRemoteNG 將立即結束並開始安裝。</value>
<data name="Yes" xml:space="preserve">
<value>是</value>
</data>
<data name="Gateway" xml:space="preserve">
<value>閘道</value>
</data>
<data name="SaveConsOnExit" xml:space="preserve">
<value>結束時儲存連線</value>
</data>
</root>

Binary file not shown.

View File

@@ -156,11 +156,7 @@ namespace mRemoteNG.Tools
ExternalToolArgumentParser argParser = new(startConnectionInfo);
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = argParser.ParseArguments(FileName);
var parsedArgs = argParser.ParseArguments(Arguments).Split(' ');
foreach (var arg in parsedArgs)
{
process.StartInfo.ArgumentList.Add(arg);
}
process.StartInfo.Arguments = argParser.ParseArguments(Arguments);
if (WorkingDir != "") process.StartInfo.WorkingDirectory = argParser.ParseArguments(WorkingDir);
if (RunElevated) process.StartInfo.Verb = "runas";
}

View File

@@ -268,5 +268,131 @@ namespace mRemoteNG.Tools
return svc;
}
}
public class TabColorConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext? context, Type sourceType)
{
return sourceType == typeof(string) || sourceType == typeof(Color) || base.CanConvertFrom(context, sourceType);
}
public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destinationType)
{
return destinationType == typeof(string) || destinationType == typeof(Color) || base.CanConvertTo(context, destinationType);
}
public override object? ConvertFrom(ITypeDescriptorContext? context, CultureInfo? culture, object? value)
{
if (value == null || (value is string str && string.IsNullOrWhiteSpace(str)))
{
return string.Empty;
}
if (value is string stringValue)
{
return stringValue;
}
if (value is Color colorValue)
{
// Convert Color to string representation
// Use named color if it's a known color, otherwise use hex format
if (colorValue.IsNamedColor)
{
return colorValue.Name;
}
else
{
// Return hex format without alpha if fully opaque, otherwise include alpha
if (colorValue.A == 255)
{
return $"#{colorValue.R:X2}{colorValue.G:X2}{colorValue.B:X2}";
}
else
{
return $"#{colorValue.A:X2}{colorValue.R:X2}{colorValue.G:X2}{colorValue.B:X2}";
}
}
}
return base.ConvertFrom(context, culture, value);
}
public override object ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType)
{
if (destinationType == typeof(string))
{
if (value == null || (value is string str && string.IsNullOrWhiteSpace(str)))
{
return string.Empty;
}
return value.ToString() ?? string.Empty;
}
if (destinationType == typeof(Color))
{
if (value == null || (value is string str && string.IsNullOrWhiteSpace(str)))
{
return Color.Empty;
}
if (value is string stringValue)
{
try
{
ColorConverter converter = new ColorConverter();
return converter.ConvertFromString(stringValue) ?? Color.Empty;
}
catch
{
return Color.Empty;
}
}
}
return base.ConvertTo(context, culture, value, destinationType) ?? throw new InvalidOperationException("Base conversion returned null.");
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext? context)
{
return true;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext? context)
{
// Provide a list of common colors for the dropdown
Color[] colors =
[
Color.Red,
Color.Orange,
Color.Yellow,
Color.Green,
Color.Blue,
Color.Purple,
Color.Pink,
Color.Brown,
Color.Black,
Color.White,
Color.Gray,
Color.LightGray,
Color.DarkGray,
Color.Cyan,
Color.Magenta,
Color.Lime,
Color.Navy,
Color.Teal,
Color.Maroon,
Color.Olive
];
return new StandardValuesCollection(colors);
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext? context)
{
// Return false to allow custom values (hex codes or other color names)
return false;
}
}
}
}

View File

@@ -43,7 +43,7 @@ namespace mRemoteNG.Tree.Root
[Browsable(false)]
public string PasswordString
{
get => Password ? _customPassword : DefaultPassword;
get => (Password && !string.IsNullOrEmpty(_customPassword)) ? _customPassword : DefaultPassword;
set
{
_customPassword = value;

View File

@@ -3,9 +3,12 @@ using System.ComponentModel;
using System.Linq;
using System.Windows.Forms;
using mRemoteNG.App;
using mRemoteNG.App.Info;
using mRemoteNG.Config;
using mRemoteNG.Connection;
using mRemoteNG.Connection.Protocol;
using mRemoteNG.Container;
using mRemoteNG.Properties;
using mRemoteNG.Tools;
using mRemoteNG.Tools.Clipboard;
using mRemoteNG.Tree;
@@ -13,6 +16,7 @@ using mRemoteNG.Tree.Root;
using mRemoteNG.Resources.Language;
using System.Runtime.Versioning;
using mRemoteNG.Security;
using mRemoteNG.UI.TaskDialog;
// ReSharper disable UnusedParameter.Local
@@ -794,6 +798,28 @@ namespace mRemoteNG.UI.Controls
try
{
if (connectionInfo == null) return;
// Check if confirmation is needed based on settings
if (Settings.Default.ConfirmCloseConnection == (int)ConfirmCloseEnum.All)
{
string confirmMessage = string.Format(Language.ConfirmDisconnectConnection, connectionInfo.Name);
DialogResult result = CTaskDialog.MessageBox(this, GeneralAppInfo.ProductName,
confirmMessage, "", "", "",
Language.CheckboxDoNotShowThisMessageAgain,
ETaskDialogButtons.YesNo, ESysIcons.Question,
ESysIcons.Question);
if (CTaskDialog.VerificationChecked)
{
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
Settings.Default.Save();
}
if (result == DialogResult.No)
{
return; // User cancelled the disconnect
}
}
ContainerInfo nodeAsContainer = connectionInfo as ContainerInfo;
if (nodeAsContainer != null)
{

View File

@@ -168,6 +168,7 @@ namespace mRemoteNG.UI.Controls.ConnectionInfoPropertyGrid
strHide.AddRange(SpecialRdpExclusions());
break;
case ProtocolType.VNC:
case ProtocolType.ARD:
strHide.AddRange(SpecialVncExclusions());
break;
}

View File

@@ -166,6 +166,7 @@ namespace mRemoteNG.UI.Controls.ConnectionTree
ModelDropped += _dragAndDropHandler.HandleEvent_ModelDropped;
BeforeLabelEdit += OnBeforeLabelEdit;
AfterLabelEdit += OnAfterLabelEdit;
FormatCell += ConnectionTree_FormatCell;
}
/// <summary>
@@ -512,6 +513,27 @@ namespace mRemoteNG.UI.Controls.ConnectionTree
_contextMenu.DisableShortcutKeys();
}
private void ConnectionTree_FormatCell(object sender, FormatCellEventArgs e)
{
if (e.Model is not ConnectionInfo connectionInfo)
return;
string colorString = connectionInfo.Color;
if (string.IsNullOrEmpty(colorString))
return;
try
{
System.Drawing.ColorConverter converter = new();
System.Drawing.Color color = (System.Drawing.Color)converter.ConvertFromString(colorString);
e.SubItem.ForeColor = color;
}
catch
{
// If color parsing fails, just ignore and use default color
}
}
private void OnAfterLabelEdit(object sender, LabelEditEventArgs e)
{
if (!_nodeInEditMode)

View File

@@ -142,14 +142,9 @@
Controls.Add(pbLogo);
Font = new System.Drawing.Font("Segoe UI", 8.25F);
ForeColor = System.Drawing.SystemColors.ControlText;
FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
MaximizeBox = false;
MaximumSize = new System.Drawing.Size(20000, 10000);
MinimizeBox = false;
Name = "frmAbout";
StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
Text = "About";
TopMost = true;
TabText = "About";
((System.ComponentModel.ISupportInitialize)pbLogo).EndInit();
pnlBottom.ResumeLayout(false);
pnlBottom.PerformLayout();

View File

@@ -7,15 +7,16 @@ using System.Reflection;
using mRemoteNG.Properties;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using mRemoteNG.UI.Window;
namespace mRemoteNG.UI.Forms
{
[SupportedOSPlatform("windows")]
public partial class frmAbout : Form
public partial class frmAbout : BaseWindow
{
public static frmAbout Instance { get; set; } = new frmAbout();
private frmAbout()
public frmAbout()
{
InitializeComponent();
Icon = Resources.ImageConverter.GetImageAsIcon(Properties.Resources.UIAboutBox_16x);
@@ -27,7 +28,8 @@ namespace mRemoteNG.UI.Forms
private void ApplyLanguage()
{
lblLicense.Text = Language.ReleasedUnderGPL;
base.Text = Language.About;
base.Text = Language.MenuItem_About;
TabText = Language.MenuItem_About;
llChangelog.Text = Language.Changelog;
llCredits.Text = Language.Credits;
llLicense.Text = Language.License;
@@ -50,9 +52,9 @@ namespace mRemoteNG.UI.Forms
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
e.Cancel = true;
Hide();
// Don't cancel close when shown in DockPanel
// This allows the tab to close properly without showing connection close dialog
}
private void llLicense_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

View File

@@ -61,9 +61,14 @@ namespace mRemoteNG.UI.Forms
pbLock.Image = display.ScaleImage(pbLock.Image);
Height = tableLayoutPanel1.Height;
if (NewPasswordMode) return;
if (NewPasswordMode)
{
txtPassword.Focus();
return;
}
lblVerify.Visible = false;
txtVerify.Visible = false;
txtPassword.Focus();
}
private void PasswordForm_FormClosed(object sender, FormClosedEventArgs e)

View File

@@ -56,7 +56,7 @@ namespace mRemoteNG.UI.Forms
labelExceptionMessageHeader.Text = Language.ExceptionMessage;
labelStackTraceHeader.Text = Language.StackTrace;
labelEnvironment.Text = Language.Environment;
buttonCreateBug.Text = Language.ReportBug;
buttonCreateBug.Text = Language.MenuItem_ReportIssue;
buttonCopyAll.Text = Language.CopyAll;
buttonClose.Text = _isFatal
? Language.Exit

View File

@@ -257,8 +257,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages
// tableLayoutPanel2
//
tableLayoutPanel2.ColumnCount = 2;
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 45F));
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 55F));
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.AutoSize));
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
tableLayoutPanel2.Controls.Add(numRdpReconnectionCount, 1, 0);
tableLayoutPanel2.Controls.Add(numAutoSave, 1, 2);
tableLayoutPanel2.Controls.Add(lblRdpReconnectionCount, 0, 0);

View File

@@ -1,4 +1,5 @@
using System;
using mRemoteNG.Config;
using mRemoteNG.Config.Connections;
using mRemoteNG.Properties;
using mRemoteNG.Resources.Language;
@@ -14,9 +15,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages
private OptRegistryConnectionsPage pageRegSettingsInstance;
private readonly FrmMain _frmMain = FrmMain.Default;
// never used, added: Jun 15, 2024
//private List<DropdownList> _connectionWarning;
#endregion
public ConnectionsPage()
@@ -29,10 +27,19 @@ namespace mRemoteNG.UI.Forms.OptionsPages
* Comments added: Jun 15, 2024
* These settings are not used on the settings page. It doesn't matter if they are set or not; nothing happens:
* 1) chkSaveConnectionsAfterEveryEdit: never used
* 2) pnlConfirmCloseConnection: seems to be unfinished. _connectionWarning or other corresponding settings are not available.
*/
chkSaveConnectionsAfterEveryEdit.Visible = false; // Temporary hide control, never used, added: Jun 15, 2024
pnlConfirmCloseConnection.Visible = false; // Temporary hide control, never used, added: Jun 15, 2024
// Reload settings when page becomes visible to reflect any changes made outside the Options dialog
VisibleChanged += ConnectionsPage_VisibleChanged;
}
private void ConnectionsPage_VisibleChanged(object sender, EventArgs e)
{
if (Visible)
{
LoadSettings();
}
}
public override string PageName
@@ -45,23 +52,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages
{
base.ApplyLanguage();
/*
* Comments added: Jun 15, 2024
*
* Seems to be unfinished or old
*/
/*_connectionWarning = new List<DropdownList>
{
{ new DropdownList((int)ConfirmCloseEnum.Never, Language.RadioCloseWarnMultiple)},
{ new DropdownList((int)ConfirmCloseEnum.Exit, Language.RadioCloseWarnExit)},
{ new DropdownList((int)ConfirmCloseEnum.Multiple, Language.RadioCloseWarnMultiple)},
{ new DropdownList((int)ConfirmCloseEnum.All, Language._CloseWarnAll)}
};*/
//comboBoxConnectionWarning.DataSource = _connectionWarning;
//comboBoxConnectionWarning.DisplayMember = "DisplayString";
//comboBoxConnectionWarning.ValueMember = "Index";
chkSingleClickOnConnectionOpensIt.Text = Language.SingleClickOnConnectionOpensIt;
chkSingleClickOnOpenedConnectionSwitchesToIt.Text = Language.SingleClickOnOpenConnectionSwitchesToIt;
chkConnectionTreeTrackActiveConnection.Text = Language.TrackActiveConnectionInConnectionTree;
@@ -73,7 +63,12 @@ namespace mRemoteNG.UI.Forms.OptionsPages
lblRdpReconnectionCount.Text = Language.RdpReconnectCount;
lblRDPConTimeout.Text = Language.RdpOverallConnectionTimeout;
lblAutoSave1.Text = Language.AutoSaveEvery;
//ngLabel1.Text = Language.strLabelClosingConnections;
lblClosingConnections.Text = Language.ClosingConnections;
radCloseWarnAll.Text = Language._CloseWarnAll;
radCloseWarnMultiple.Text = Language.RadioCloseWarnMultiple;
radCloseWarnExit.Text = Language.RadioCloseWarnExit;
radCloseWarnNever.Text = Language.RadioCloseWarnNever;
lblRegistrySettingsUsedInfo.Text = Language.OptionsCompanyPolicyMessage;
}
@@ -93,7 +88,25 @@ namespace mRemoteNG.UI.Forms.OptionsPages
numRDPConTimeout.Value = Convert.ToDecimal(Settings.Default.ConRDPOverallConnectionTimeout);
numAutoSave.Value = Convert.ToDecimal(Properties.OptionsBackupPage.Default.AutoSaveEveryMinutes);
//comboBoxConnectionWarning.SelectedValue = Settings.Default.ConfirmCloseConnection;
// Load ConfirmCloseConnection setting
switch (Settings.Default.ConfirmCloseConnection)
{
case (int)ConfirmCloseEnum.Never:
radCloseWarnNever.Checked = true;
break;
case (int)ConfirmCloseEnum.Exit:
radCloseWarnExit.Checked = true;
break;
case (int)ConfirmCloseEnum.Multiple:
radCloseWarnMultiple.Checked = true;
break;
case (int)ConfirmCloseEnum.All:
radCloseWarnAll.Checked = true;
break;
default:
radCloseWarnAll.Checked = true;
break;
}
if (Properties.OptionsBackupPage.Default.SaveConnectionsFrequency == (int)ConnectionsBackupFrequencyEnum.Unassigned)
{
@@ -136,7 +149,23 @@ namespace mRemoteNG.UI.Forms.OptionsPages
_frmMain.tmrAutoSave.Enabled = false;
}
//Settings.Default.ConfirmCloseConnection = (int)comboBoxConnectionWarning.SelectedValue;
// Save ConfirmCloseConnection setting
if (radCloseWarnNever.Checked)
{
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
}
else if (radCloseWarnExit.Checked)
{
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Exit;
}
else if (radCloseWarnMultiple.Checked)
{
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Multiple;
}
else if (radCloseWarnAll.Checked)
{
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.All;
}
}
public override void LoadRegistrySettings()

View File

@@ -24,6 +24,12 @@ namespace mRemoteNG.UI.Forms.OptionsPages
public virtual Icon PageIcon { get; protected set; }
public virtual Image IconImage => PageIcon?.ToBitmap();
/// <summary>
/// Indicates whether the settings on this page have been modified.
/// </summary>
[Browsable(false)]
public bool HasChanges { get; set; }
#endregion
#region Public Methods

View File

@@ -79,7 +79,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkIdentifyQuickConnectTabs._mice = MrngCheckBox.MouseState.OUT;
chkIdentifyQuickConnectTabs.AutoSize = true;
chkIdentifyQuickConnectTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkIdentifyQuickConnectTabs.Location = new System.Drawing.Point(3, 118);
chkIdentifyQuickConnectTabs.Location = new System.Drawing.Point(3, 72);
chkIdentifyQuickConnectTabs.Name = "chkIdentifyQuickConnectTabs";
chkIdentifyQuickConnectTabs.Size = new System.Drawing.Size(315, 17);
chkIdentifyQuickConnectTabs.TabIndex = 4;
@@ -103,7 +103,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkAlwaysShowPanelSelectionDlg._mice = MrngCheckBox.MouseState.OUT;
chkAlwaysShowPanelSelectionDlg.AutoSize = true;
chkAlwaysShowPanelSelectionDlg.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkAlwaysShowPanelSelectionDlg.Location = new System.Drawing.Point(3, 164);
chkAlwaysShowPanelSelectionDlg.Location = new System.Drawing.Point(3, 118);
chkAlwaysShowPanelSelectionDlg.Name = "chkAlwaysShowPanelSelectionDlg";
chkAlwaysShowPanelSelectionDlg.Size = new System.Drawing.Size(347, 17);
chkAlwaysShowPanelSelectionDlg.TabIndex = 6;
@@ -115,7 +115,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkShowLogonInfoOnTabs._mice = MrngCheckBox.MouseState.OUT;
chkShowLogonInfoOnTabs.AutoSize = true;
chkShowLogonInfoOnTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkShowLogonInfoOnTabs.Location = new System.Drawing.Point(3, 72);
chkShowLogonInfoOnTabs.Location = new System.Drawing.Point(3, 26);
chkShowLogonInfoOnTabs.Name = "chkShowLogonInfoOnTabs";
chkShowLogonInfoOnTabs.Size = new System.Drawing.Size(226, 17);
chkShowLogonInfoOnTabs.TabIndex = 2;
@@ -127,7 +127,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkDoubleClickClosesTab._mice = MrngCheckBox.MouseState.OUT;
chkDoubleClickClosesTab.AutoSize = true;
chkDoubleClickClosesTab.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkDoubleClickClosesTab.Location = new System.Drawing.Point(3, 141);
chkDoubleClickClosesTab.Location = new System.Drawing.Point(3, 95);
chkDoubleClickClosesTab.Name = "chkDoubleClickClosesTab";
chkDoubleClickClosesTab.Size = new System.Drawing.Size(170, 17);
chkDoubleClickClosesTab.TabIndex = 5;
@@ -139,7 +139,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkShowProtocolOnTabs._mice = MrngCheckBox.MouseState.OUT;
chkShowProtocolOnTabs.AutoSize = true;
chkShowProtocolOnTabs.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkShowProtocolOnTabs.Location = new System.Drawing.Point(3, 95);
chkShowProtocolOnTabs.Location = new System.Drawing.Point(3, 49);
chkShowProtocolOnTabs.Name = "chkShowProtocolOnTabs";
chkShowProtocolOnTabs.Size = new System.Drawing.Size(180, 17);
chkShowProtocolOnTabs.TabIndex = 3;
@@ -151,7 +151,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
chkCreateEmptyPanelOnStart._mice = MrngCheckBox.MouseState.OUT;
chkCreateEmptyPanelOnStart.AutoSize = true;
chkCreateEmptyPanelOnStart.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
chkCreateEmptyPanelOnStart.Location = new System.Drawing.Point(3, 187);
chkCreateEmptyPanelOnStart.Location = new System.Drawing.Point(3, 141);
chkCreateEmptyPanelOnStart.Name = "chkCreateEmptyPanelOnStart";
chkCreateEmptyPanelOnStart.Size = new System.Drawing.Size(271, 17);
chkCreateEmptyPanelOnStart.TabIndex = 7;
@@ -162,7 +162,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
// txtBoxPanelName
//
txtBoxPanelName.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
txtBoxPanelName.Location = new System.Drawing.Point(35, 223);
txtBoxPanelName.Location = new System.Drawing.Point(35, 177);
txtBoxPanelName.Name = "txtBoxPanelName";
txtBoxPanelName.Size = new System.Drawing.Size(213, 22);
txtBoxPanelName.TabIndex = 8;
@@ -170,7 +170,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
// lblPanelName
//
lblPanelName.AutoSize = true;
lblPanelName.Location = new System.Drawing.Point(32, 207);
lblPanelName.Location = new System.Drawing.Point(32, 161);
lblPanelName.Name = "lblPanelName";
lblPanelName.Size = new System.Drawing.Size(69, 13);
lblPanelName.TabIndex = 9;
@@ -192,7 +192,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
pnlOptions.Dock = System.Windows.Forms.DockStyle.Top;
pnlOptions.Location = new System.Drawing.Point(0, 30);
pnlOptions.Name = "pnlOptions";
pnlOptions.Size = new System.Drawing.Size(610, 262);
pnlOptions.Size = new System.Drawing.Size(610, 216);
pnlOptions.TabIndex = 10;
//
// lblRegistrySettingsUsedInfo

View File

@@ -89,7 +89,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages
* Properties.OptionsTabsPanelsPage.Default.AlwaysShowConnectionTabs nerver used
*/
//Properties.OptionsTabsPanelsPage.Default.AlwaysShowConnectionTabs = chkAlwaysShowConnectionTabs.Checked;
FrmMain.Default.ShowHidePanelTabs();
// Defer the ShowHidePanelTabs call to avoid corrupting the Options window
// This ensures the call happens after the Options window is closed
FrmMain.Default.BeginInvoke(new System.Windows.Forms.MethodInvoker(() => FrmMain.Default.ShowHidePanelTabs()));
/*
* Comment added: June 16, 2024

View File

@@ -18,6 +18,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
private readonly ThemeManager _themeManager;
private readonly bool _oriActiveTheming;
private ThemeInfo _oriActiveTheme;
private readonly List<ThemeInfo> modifiedThemes = [];
#endregion
@@ -65,6 +66,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages
// ReSharper disable once CoVariantArrayConversion
cboTheme.Items.AddRange(_themeManager.LoadThemes().OrderBy(x => x.Name).ToArray());
cboTheme.SelectedItem = _themeManager.ActiveTheme;
// Store the original active theme for reverting
_oriActiveTheme = _themeManager.ActiveTheme;
cboTheme_SelectionChangeCommitted(this, new EventArgs());
cboTheme.DisplayMember = "Name";
@@ -107,6 +110,20 @@ namespace mRemoteNG.UI.Forms.OptionsPages
{
base.RevertSettings();
_themeManager.ThemingActive = _oriActiveTheming;
// Clear the modified themes list without saving
modifiedThemes.Clear();
// Restore the original theme selection
if (_oriActiveTheme != null)
{
_themeManager.ActiveTheme = _oriActiveTheme;
// Reload the theme list to reflect the original state
cboTheme.Items.Clear();
cboTheme.Items.AddRange(_themeManager.LoadThemes().OrderBy(x => x.Name).ToArray());
cboTheme.SelectedItem = _oriActiveTheme;
cboTheme_SelectionChangeCommitted(this, new EventArgs());
}
}
#region Private Methods

View File

@@ -215,9 +215,14 @@ namespace mRemoteNG.UI.Forms.OptionsPages
InitialiseCheckForUpdatesOnStartupComboBox();
}
private void btnUpdateCheckNow_Click(object sender, EventArgs e)
private async void btnUpdateCheckNow_Click(object sender, EventArgs e)
{
App.Windows.Show(WindowType.Update);
var updateWindow = App.Windows.UpdateForm;
if (updateWindow != null && !updateWindow.IsDisposed)
{
await updateWindow.PerformUpdateCheckAsync();
}
}
private void chkUseProxyForAutomaticUpdates_CheckedChanged(object sender, EventArgs e)

View File

@@ -470,7 +470,7 @@ namespace mRemoteNG.UI.Forms
DialogResult result = CTaskDialog.MessageBox(this, Application.ProductName, Language.ConfirmExitMainInstruction, "", "", "", Language.CheckboxDoNotShowThisMessageAgain, ETaskDialogButtons.YesNo, ESysIcons.Question, ESysIcons.Question);
if (CTaskDialog.VerificationChecked)
{
Properties.Settings.Default.ConfirmCloseConnection--; //--?
Properties.Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
}
if (result == DialogResult.No)

View File

@@ -22,6 +22,8 @@ namespace mRemoteNG.UI.Forms
private string _pageName;
private readonly DisplayProperties _display = new();
private readonly List<string> _optionPageObjectNames;
private bool _isLoading = true;
private bool _isInitialized = false; // Add this field to the FrmOptions class
public FrmOptions() : this(Language.StartupExit)
{
@@ -57,6 +59,13 @@ namespace mRemoteNG.UI.Forms
private void FrmOptions_Load(object sender, EventArgs e)
{
// Only initialize once to prevent multiple event subscriptions and page reloading
if (_isInitialized)
{
this.Visible = true;
return;
}
this.Visible = true;
FontOverrider.FontOverride(this);
SetActivatedPage();
@@ -71,6 +80,23 @@ namespace mRemoteNG.UI.Forms
//ThemeManager.getInstance().ThemeChanged += ApplyTheme;
lstOptionPages.SelectedIndexChanged += LstOptionPages_SelectedIndexChanged;
lstOptionPages.SelectedIndex = 0;
// Handle visibility changes to ensure panel is populated when form is shown
this.VisibleChanged += FrmOptions_VisibleChanged;
// Mark as initialized
_isInitialized = true;
}
private void FrmOptions_VisibleChanged(object sender, EventArgs e)
{
// When the form becomes visible, ensure the panel is populated with the selected page
if (this.Visible && pnlMain.Controls.Count == 0)
{
OptionsPage page = (OptionsPage)lstOptionPages.SelectedObject;
if (page != null)
pnlMain.Controls.Add(page);
}
}
private void ApplyTheme()
@@ -105,6 +131,8 @@ namespace mRemoteNG.UI.Forms
if (_currentIndex >= _optionPageObjectNames.Count)
{
Application.Idle -= new EventHandler(Application_Idle);
// All pages loaded, now start tracking changes
_isLoading = false;
}
else
{
@@ -210,6 +238,9 @@ namespace mRemoteNG.UI.Forms
page.LoadSettings();
_optionPages.Add(page);
lstOptionPages.AddObject(page);
// Track changes in all controls on the page
TrackChangesInControls(page);
}
private object ImageGetter(object rowobject)
@@ -238,12 +269,16 @@ namespace mRemoteNG.UI.Forms
private void BtnOK_Click(object sender, EventArgs e)
{
SaveOptions();
// Clear change flags after saving
ClearChangeFlags();
this.Visible = false;
}
private void BtnApply_Click(object sender, EventArgs e)
{
SaveOptions();
// Clear change flags after applying
ClearChangeFlags();
}
private void SaveOptions()
@@ -269,13 +304,113 @@ namespace mRemoteNG.UI.Forms
private void BtnCancel_Click(object sender, EventArgs e)
{
// When Cancel is clicked, we don't check for changes
// The user explicitly wants to cancel
this.Visible = false;
}
private void FrmOptions_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Visible = false;
// Check if any page has unsaved changes
bool hasChanges = _optionPages.Any(page => page.HasChanges);
if (hasChanges)
{
DialogResult result = MessageBox.Show(
Language.SaveOptionsBeforeClosing,
Language.Options,
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question);
switch (result)
{
case DialogResult.Yes:
SaveOptions();
ClearChangeFlags();
e.Cancel = true;
this.Visible = false;
break;
case DialogResult.No:
// Discard changes
ClearChangeFlags();
e.Cancel = true;
this.Visible = false;
break;
case DialogResult.Cancel:
// Cancel closing - keep the dialog open
e.Cancel = true;
break;
}
}
else
{
e.Cancel = true;
this.Visible = false;
}
}
private void TrackChangesInControls(Control control)
{
foreach (Control childControl in control.Controls)
{
// Track changes for common input controls
if (childControl is TextBox textBox)
{
textBox.TextChanged += (s, e) => MarkPageAsChanged(control);
}
else if (childControl is CheckBox checkBox)
{
checkBox.CheckedChanged += (s, e) => MarkPageAsChanged(control);
}
else if (childControl is RadioButton radioButton)
{
radioButton.CheckedChanged += (s, e) => MarkPageAsChanged(control);
}
else if (childControl is ComboBox comboBox)
{
comboBox.SelectedIndexChanged += (s, e) => MarkPageAsChanged(control);
}
else if (childControl is NumericUpDown numericUpDown)
{
numericUpDown.ValueChanged += (s, e) => MarkPageAsChanged(control);
}
else if (childControl is ListBox listBox)
{
listBox.SelectedIndexChanged += (s, e) => MarkPageAsChanged(control);
}
// Recursively track changes in nested controls
if (childControl.Controls.Count > 0)
{
TrackChangesInControls(childControl);
}
}
}
private void MarkPageAsChanged(Control control)
{
// Don't track changes during initial loading
if (_isLoading) return;
// Find the parent OptionsPage
Control current = control;
while (current != null && !(current is OptionsPage))
{
current = current.Parent;
}
if (current is OptionsPage page)
{
page.HasChanges = true;
}
}
private void ClearChangeFlags()
{
foreach (OptionsPage page in _optionPages)
{
page.HasChanges = false;
}
}
}
}

View File

@@ -13,16 +13,19 @@ namespace mRemoteNG.UI.Menu
[SupportedOSPlatform("windows")]
public class HelpMenu : ToolStripMenuItem
{
private ToolStripMenuItem _mMenInfoHelp;
private ToolStripMenuItem _mMenInfoWebsite;
private ToolStripSeparator _mMenInfoSep1;
private ToolStripMenuItem _mMenInfoAbout;
private ToolStripMenuItem _mMenInfoDonate;
private ToolStripSeparator _mMenInfoSep2;
private ToolStripSeparator _mMenInfoSep3;
private ToolStripSeparator _mMenInfoSep4;
private ToolStripMenuItem _mMenInfoForum;
private ToolStripMenuItem _mMenToolsUpdate;
private ToolStripMenuItem _mMenInfoHelp = null!;
private ToolStripMenuItem _mMenInfoWebsite = null!;
private ToolStripSeparator _mMenInfoSep1 = null!;
private ToolStripMenuItem _mMenInfoAbout = null!;
private ToolStripMenuItem _mMenInfoDonate = null!;
private ToolStripSeparator _mMenInfoSep2 = null!;
private ToolStripSeparator _mMenInfoSep3 = null!;
private ToolStripSeparator _mMenInfoSep4 = null!;
private ToolStripMenuItem _mMenInfoForum = null!;
private ToolStripMenuItem _mMenInfoChat = null!;
private ToolStripMenuItem _mMenInfoCommunity = null!;
private ToolStripMenuItem _mMenInfoBug = null!;
private ToolStripMenuItem _mMenToolsUpdate = null!;
public HelpMenu()
{
@@ -36,6 +39,9 @@ namespace mRemoteNG.UI.Menu
_mMenInfoWebsite = new ToolStripMenuItem();
_mMenInfoDonate = new ToolStripMenuItem();
_mMenInfoForum = new ToolStripMenuItem();
_mMenInfoChat = new ToolStripMenuItem();
_mMenInfoCommunity = new ToolStripMenuItem();
_mMenInfoBug = new ToolStripMenuItem();
_mMenToolsUpdate = new ToolStripMenuItem();
_mMenInfoSep2 = new ToolStripSeparator();
_mMenInfoSep3 = new ToolStripSeparator();
@@ -51,6 +57,9 @@ namespace mRemoteNG.UI.Menu
_mMenInfoSep1,
_mMenInfoWebsite,
_mMenInfoForum,
_mMenInfoChat,
_mMenInfoCommunity,
_mMenInfoBug,
_mMenInfoSep2,
_mMenToolsUpdate,
_mMenInfoSep3,
@@ -69,7 +78,7 @@ namespace mRemoteNG.UI.Menu
_mMenInfoHelp.Name = "mMenInfoHelp";
_mMenInfoHelp.ShortcutKeys = Keys.F1;
_mMenInfoHelp.Size = new System.Drawing.Size(190, 22);
_mMenInfoHelp.Text = Language.HelpContents;
_mMenInfoHelp.Text = Language.MenuItem_HelpContents;
_mMenInfoHelp.Click += mMenInfoHelp_Click;
//
// mMenToolsUpdate
@@ -77,7 +86,7 @@ namespace mRemoteNG.UI.Menu
_mMenToolsUpdate.Image = Properties.Resources.RunUpdate_16x;
_mMenToolsUpdate.Name = "mMenToolsUpdate";
_mMenToolsUpdate.Size = new System.Drawing.Size(190, 22);
_mMenToolsUpdate.Text = Language.CheckForUpdates;
_mMenToolsUpdate.Text = Language.MenuItem_CheckForUpdates;
_mMenToolsUpdate.Click += mMenToolsUpdate_Click;
_mMenToolsUpdate.Enabled = CommonRegistrySettings.AllowCheckForUpdates
&& CommonRegistrySettings.AllowCheckForUpdatesManual;
@@ -91,23 +100,44 @@ namespace mRemoteNG.UI.Menu
//
_mMenInfoWebsite.Name = "mMenInfoWebsite";
_mMenInfoWebsite.Size = new System.Drawing.Size(190, 22);
_mMenInfoWebsite.Text = Language.Website;
_mMenInfoWebsite.Text = Language.MenuItem_Website;
_mMenInfoWebsite.Click += mMenInfoWebsite_Click;
//
// mMenInfoDonate
//
_mMenInfoDonate.Name = "mMenInfoDonate";
_mMenInfoDonate.Size = new System.Drawing.Size(190, 22);
_mMenInfoDonate.Text = Language.Donate;
_mMenInfoDonate.Text = Language.MenuItem_Donate;
_mMenInfoDonate.Click += mMenInfoDonate_Click;
//
// mMenInfoForum
//
_mMenInfoForum.Name = "mMenInfoForum";
_mMenInfoForum.Size = new System.Drawing.Size(190, 22);
_mMenInfoForum.Text = Language.SupportForum;
_mMenInfoForum.Text = Language.MenuItem_SupportForum;
_mMenInfoForum.Click += mMenInfoForum_Click;
//
// mMenInfoChat
//
_mMenInfoChat.Name = "mMenInfoChat";
_mMenInfoChat.Size = new System.Drawing.Size(190, 22);
_mMenInfoChat.Text = Language.MenuItem_Chat;
_mMenInfoChat.Click += mMenInfoChat_Click;
//
// mMenInfoCommunity
//
_mMenInfoCommunity.Name = "mMenInfoCommunity";
_mMenInfoCommunity.Size = new System.Drawing.Size(190, 22);
_mMenInfoCommunity.Text = Language.MenuItem_Community;
_mMenInfoCommunity.Click += mMenInfoCommunity_Click;
//
// mMenInfoBug
//
_mMenInfoBug.Name = "mMenInfoBug";
_mMenInfoBug.Size = new System.Drawing.Size(190, 22);
_mMenInfoBug.Text = Language.MenuItem_ReportIssue;
_mMenInfoBug.Click += mMenInfoBug_Click;
//
// mMenInfoSep2
//
_mMenInfoSep2.Name = "mMenInfoSep2";
@@ -128,34 +158,56 @@ namespace mRemoteNG.UI.Menu
_mMenInfoAbout.Image = Properties.Resources.UIAboutBox_16x;
_mMenInfoAbout.Name = "mMenInfoAbout";
_mMenInfoAbout.Size = new System.Drawing.Size(190, 22);
_mMenInfoAbout.Text = Language.About;
_mMenInfoAbout.Text = Language.MenuItem_About;
_mMenInfoAbout.Click += mMenInfoAbout_Click;
}
public void ApplyLanguage()
{
Text = Language._Help;
_mMenInfoHelp.Text = Language.HelpContents;
_mMenInfoWebsite.Text = Language.Website;
_mMenInfoDonate.Text = Language.Donate;
_mMenInfoForum.Text = Language.SupportForum;
_mMenInfoAbout.Text = Language.About;
_mMenToolsUpdate.Text = Language.CheckForUpdates;
_mMenInfoHelp.Text = Language.MenuItem_HelpContents;
_mMenInfoWebsite.Text = Language.MenuItem_Website;
_mMenInfoDonate.Text = Language.MenuItem_Donate;
_mMenInfoForum.Text = Language.MenuItem_SupportForum;
_mMenInfoChat.Text = Language.MenuItem_Chat;
_mMenInfoCommunity.Text = Language.MenuItem_Community;
_mMenInfoBug.Text = Language.MenuItem_ReportIssue;
_mMenInfoAbout.Text = Language.MenuItem_About;
_mMenToolsUpdate.Text = Language.MenuItem_CheckForUpdates;
}
#region Info
private void mMenToolsUpdate_Click(object sender, EventArgs e) => App.Windows.Show(WindowType.Update);
private async void mMenToolsUpdate_Click(object sender, EventArgs e)
{
App.Windows.Show(WindowType.Update);
var updateWindow = App.Windows.UpdateForm;
if (updateWindow != null && !updateWindow.IsDisposed)
{
await updateWindow.PerformUpdateCheckAsync();
}
}
private void mMenInfoHelp_Click(object sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlDocumentation);
private void mMenInfoHelp_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlDocumentation);
private void mMenInfoForum_Click(object sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlForum);
private void mMenInfoForum_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlForum);
private void mMenInfoWebsite_Click(object sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlHome);
private void mMenInfoChat_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlChat);
private void mMenInfoDonate_Click(object sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlDonate);
private void mMenInfoCommunity_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlCommunity);
private void mMenInfoAbout_Click(object sender, EventArgs e) => frmAbout.Instance.Show();
private void mMenInfoBug_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlBugs);
private void mMenInfoWebsite_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlHome);
private void mMenInfoDonate_Click(object? sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlDonate);
private void mMenInfoAbout_Click(object? sender, EventArgs e)
{
if (frmAbout.Instance == null || frmAbout.Instance.IsDisposed)
frmAbout.Instance = new frmAbout();
frmAbout.Instance.Show(FrmMain.Default.pnlDock);
}
#endregion
}

View File

@@ -15,14 +15,17 @@ namespace mRemoteNG.UI.Panels
[SupportedOSPlatform("windows")]
public class PanelAdder
{
public ConnectionWindow AddPanel(string title = "")
public ConnectionWindow AddPanel(string title = "", bool showImmediately = true)
{
try
{
ConnectionWindow connectionForm = new(new DockContent());
BuildConnectionWindowContextMenu(connectionForm);
SetConnectionWindowTitle(title, connectionForm);
ShowConnectionWindow(connectionForm);
// Only show immediately if requested (for user-created empty panels)
// When opening connections, we defer showing until first tab is added
if (showImmediately)
ShowConnectionWindow(connectionForm);
PrepareTabSupport(connectionForm);
return connectionForm;
}

View File

@@ -55,7 +55,8 @@ namespace mRemoteNG.UI.Tabs
ESysIcons.Question);
if (CTaskDialog.VerificationChecked)
{
Settings.Default.ConfirmCloseConnection--;
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
Settings.Default.Save();
}
if (result == DialogResult.No)

View File

@@ -991,8 +991,11 @@ namespace mRemoteNG.UI.Tabs
rectText = DrawHelper.RtlTransform(this, rectText);
rectIcon = DrawHelper.RtlTransform(this, rectIcon);
Color activeColor = DockPane.DockPanel.Theme.ColorPalette.TabSelectedActive.Background;
Color lostFocusColor = DockPane.DockPanel.Theme.ColorPalette.TabSelectedInactive.Background;
// Get custom tab color if available
Color? customTabColor = GetCustomTabColor(tab.Content);
Color activeColor = customTabColor ?? DockPane.DockPanel.Theme.ColorPalette.TabSelectedActive.Background;
Color lostFocusColor = customTabColor ?? DockPane.DockPanel.Theme.ColorPalette.TabSelectedInactive.Background;
Color inactiveColor = DockPane.DockPanel.Theme.ColorPalette.MainWindowActive.Background;
Color mouseHoverColor = DockPane.DockPanel.Theme.ColorPalette.TabUnselectedHovered.Background;
@@ -1056,6 +1059,31 @@ namespace mRemoteNG.UI.Tabs
g.DrawIcon(tab.Content.DockHandler.Icon, rectIcon);
}
private Color? GetCustomTabColor(IDockContent content)
{
try
{
if (content is ConnectionTab connectionTab)
{
InterfaceControl interfaceControl = InterfaceControl.FindInterfaceControl(connectionTab);
if (interfaceControl?.Info != null)
{
string tabColorStr = interfaceControl.Info.TabColor;
if (!string.IsNullOrEmpty(tabColorStr))
{
ColorConverter converter = new ColorConverter();
return (Color)converter.ConvertFromString(tabColorStr);
}
}
}
}
catch
{
// If there's any error parsing the color, just return null to use default
}
return null;
}
private bool m_isMouseDown;
protected bool IsMouseDown

View File

@@ -143,6 +143,13 @@ namespace mRemoteNG.UI.Window
// TODO: See if we can make this work with DPS...
//TabController.HideTabsMode = TabControl.HideTabsModes.HideAlways;
// Ensure the ConnectionWindow is visible before adding the tab
// This prevents visibility issues when the window was created but not yet shown
// Check DockState instead of Visible to properly detect if window is shown in DockPanel
if (DockState == DockState.Unknown || DockState == DockState.Hidden || !Visible)
{
Show(FrmMain.Default.pnlDock, DockState.Document);
}
//Show the tab
conTab.Show(connDock, DockState.Document);
@@ -288,16 +295,11 @@ namespace mRemoteNG.UI.Window
Settings.Default.ConfirmCloseConnection == (int)ConfirmCloseEnum.Multiple &
connDock.Documents.Count() > 1))
{
DialogResult result = CTaskDialog.MessageBox(this, GeneralAppInfo.ProductName,
string
.Format(Language.ConfirmCloseConnectionPanelMainInstruction,
Text), "", "", "",
Language.CheckboxDoNotShowThisMessageAgain,
ETaskDialogButtons.YesNo, ESysIcons.Question,
ESysIcons.Question);
DialogResult result = CTaskDialog.MessageBox(this, GeneralAppInfo.ProductName, string.Format(Language.ConfirmCloseConnectionPanelMainInstruction, Text), "", "", "", Language.CheckboxDoNotShowThisMessageAgain, ETaskDialogButtons.YesNo, ESysIcons.Question, ESysIcons.Question);
if (CTaskDialog.VerificationChecked)
{
Settings.Default.ConfirmCloseConnection--;
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
Settings.Default.Save();
}
if (result == DialogResult.No)
@@ -662,7 +664,8 @@ namespace mRemoteNG.UI.Window
ESysIcons.Question);
if (CTaskDialog.VerificationChecked)
{
Settings.Default.ConfirmCloseConnection--;
Settings.Default.ConfirmCloseConnection = (int)ConfirmCloseEnum.Never;
Settings.Default.Save();
}
if (result == DialogResult.No)
@@ -776,6 +779,7 @@ namespace mRemoteNG.UI.Window
ProtocolBase protocolBase = sender as ProtocolBase;
if (!(protocolBase?.InterfaceControl.Parent is ConnectionTab tabPage)) return;
if (tabPage.Disposing || tabPage.IsDisposed) return;
if (IsDisposed || Disposing) return;
tabPage.protocolClose = true;
Invoke(new Action(() => tabPage.Close()));
}

View File

@@ -12,6 +12,7 @@ namespace mRemoteNG.UI.Window
public partial class OptionsWindow : BaseWindow
{
private FrmOptions _optionsForm;
private bool _isInitialized = false;
#region Public Methods
@@ -34,8 +35,14 @@ namespace mRemoteNG.UI.Window
private void Options_Load(object sender, EventArgs e)
{
// Only subscribe to ThemeChanged once to prevent multiple subscriptions
if (!_isInitialized)
{
ThemeManager.getInstance().ThemeChanged += ApplyTheme;
_isInitialized = true;
}
ApplyTheme();
ThemeManager.getInstance().ThemeChanged += ApplyTheme;
ApplyLanguage();
LoadOptionsForm();
}
@@ -77,15 +84,22 @@ namespace mRemoteNG.UI.Window
protected override void OnFormClosing(FormClosingEventArgs e)
{
// Detach the FrmOptions form so it can be reused
if (_optionsForm != null)
{
_optionsForm.VisibleChanged -= OptionsForm_VisibleChanged;
Controls.Remove(_optionsForm);
}
// With HideOnClose = true, we don't dispose the window
// so we keep the embedded form in Controls for reuse
base.OnFormClosing(e);
}
protected override void OnVisibleChanged(EventArgs e)
{
base.OnVisibleChanged(e);
// When the window becomes visible, ensure the embedded form is also shown
if (Visible && _optionsForm != null && !_optionsForm.Visible)
{
_optionsForm.Show();
}
}
public void SetActivatedPage(string pageName)
{
_optionsForm?.SetActivatedPage(pageName);
@@ -100,6 +114,7 @@ namespace mRemoteNG.UI.Window
// OptionsWindow
//
ClientSize = new System.Drawing.Size(800, 600);
HideOnClose = true;
Name = "OptionsWindow";
Text = Language.Options;
TabText = Language.Options;

View File

@@ -1,16 +1,18 @@
using System;
using mRemoteNG.App;
using mRemoteNG.App.Update;
using mRemoteNG.Messages;
using mRemoteNG.Resources.Language;
using mRemoteNG.Themes;
using System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using mRemoteNG.App;
using mRemoteNG.App.Update;
using mRemoteNG.Messages;
using mRemoteNG.Themes;
using WeifenLuo.WinFormsUI.Docking;
using mRemoteNG.Resources.Language;
using System.Threading.Tasks;
using System.Runtime.Versioning;
using System.Threading.Tasks;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
namespace mRemoteNG.UI.Window
{
@@ -35,6 +37,15 @@ namespace mRemoteNG.UI.Window
FontOverrider.FontOverride(this);
}
/// <summary>
/// Checks for updates and displays the results in the window.
/// Call this method when you want to trigger an update check.
/// </summary>
public async Task PerformUpdateCheckAsync()
{
await CheckForUpdateAsync();
}
#endregion
#region Form Stuff
@@ -44,7 +55,6 @@ namespace mRemoteNG.UI.Window
ApplyTheme();
ThemeManager.getInstance().ThemeChanged += ApplyTheme;
ApplyLanguage();
await CheckForUpdateAsync();
}
private new void ApplyTheme()
@@ -58,8 +68,8 @@ namespace mRemoteNG.UI.Window
private void ApplyLanguage()
{
Text = Language.CheckForUpdates;
TabText = Language.CheckForUpdates;
Text = Language.MenuItem_CheckForUpdates;
TabText = Language.MenuItem_CheckForUpdates;
btnCheckForUpdate.Text = Language.CheckAgain;
btnDownload.Text = Runtime.IsPortableEdition
? Language.Download
@@ -108,7 +118,7 @@ namespace mRemoteNG.UI.Window
return;
}
lblStatus.Text = Language.CheckForUpdates;
lblStatus.Text = Language.MenuItem_CheckForUpdates;
lblStatus.ForeColor = SystemColors.WindowText;
lblLatestVersionLabel.Visible = false;
lblInstalledVersion.Visible = false;
@@ -205,11 +215,11 @@ namespace mRemoteNG.UI.Window
prgbDownload.Visible = false;
if (Runtime.IsPortableEdition)
MessageBox.Show(Language.UpdatePortableDownloadComplete, Language.CheckForUpdates,
MessageBox.Show(Language.UpdatePortableDownloadComplete, Language.MenuItem_CheckForUpdates,
MessageBoxButtons.OK, MessageBoxIcon.Information);
else
{
if (MessageBox.Show(Language.UpdateDownloadComplete, Language.CheckForUpdates,
if (MessageBox.Show(Language.UpdateDownloadComplete, Language.MenuItem_CheckForUpdates,
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
Shutdown.Quit(_appUpdate.CurrentUpdateInfo.UpdateFilePath);

View File

@@ -57,3 +57,22 @@ 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.
Color Property
==============
You can set a color for each connection or folder in the connections list.
This makes things clearer when you have many connections.
To set a color:
1. Select a connection or folder in the connections tree
2. In the properties panel, find the **Color** property under the Display category
3. Click on the color value and select a color from the color picker
When you set a color on a folder, all connections under that folder can inherit the same color
if their Color inheritance is enabled. This provides a visual way to group and identify
related connections in the tree view.
.. note::
The Color property can be inherited just like other properties. Enable inheritance
in the inheritance view to have connections automatically use their parent folder's color.

View File

@@ -87,6 +87,26 @@ Icon
The icon indicates the visual identifier for the connection.
Clicking the icon will let you set a different icon for the connection.
Tab Color
---------
.. note::
The Tab Color property is available in the Display category of the connection properties.
You can set a custom color for connection tabs to help distinguish between different environments (e.g., Development, Testing, Production).
This can be especially useful when working with critical systems like Live servers, where you want a clear visual reminder.
To set a tab color:
1. Select your connection in the Connections panel
2. In the Config panel, expand the **Display** category
3. Find the **Tab Color** property
4. Enter a color name (e.g., "Red", "Green", "Blue") or a hex color code (e.g., "#FF0000", "#00FF00")
5. Leave empty to use the default theme color
The tab color will be applied when you open the connection. You can use inheritance to set the same color for multiple connections in a folder.
Status
------

View File

@@ -97,6 +97,36 @@ public class XmlRootNodeSerializerTests
Assert.That(attributeValuePlainText, Is.EqualTo(expectedPlainText));
}
[Test]
public void ProtectedStringSerializedWhenPasswordPropertySetDirectly()
{
// Simulate edge case where Password property is set to true directly
// without setting PasswordString (leaving _customPassword empty)
_rootNodeInfo.Password = true;
var element = _rootNodeSerializer.SerializeRootNodeInfo(_rootNodeInfo, _cryptographyProvider, _version);
var attributeValue = element.Attribute(XName.Get("Protected"))?.Value;
// Should use default password and serialize as "ThisIsNotProtected"
var attributeValuePlainText =
_cryptographyProvider.Decrypt(attributeValue, _rootNodeInfo.PasswordString.ConvertToSecureString());
Assert.That(attributeValuePlainText, Is.EqualTo("ThisIsNotProtected"));
}
[Test]
public void FullFileEncryptionWorksWithPasswordPropertySetDirectly()
{
// Simulate edge case where Password property is set to true directly
// This should not cause encryption to fail
_rootNodeInfo.Password = true;
var element = _rootNodeSerializer.SerializeRootNodeInfo(_rootNodeInfo, _cryptographyProvider, _version, fullFileEncryption: true);
var fullFileEncryptionValue = element.Attribute(XName.Get("FullFileEncryption"))?.Value;
Assert.That(bool.Parse(fullFileEncryptionValue), Is.True);
// Verify Protected attribute can be decrypted successfully
var protectedValue = element.Attribute(XName.Get("Protected"))?.Value;
Assert.That(protectedValue, Is.Not.Null.And.Not.Empty);
var decryptedProtected = _cryptographyProvider.Decrypt(protectedValue, _rootNodeInfo.PasswordString.ConvertToSecureString());
Assert.That(decryptedProtected, Is.EqualTo("ThisIsNotProtected"));
}
[Test]
public void ConfVersionSerialized()
{

View File

@@ -0,0 +1,94 @@
using System;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using mRemoteNG.Connection;
using mRemoteNG.Tools;
using NUnit.Framework;
namespace mRemoteNGTests.Connection
{
[TestFixture]
public class ColorPropertyAttributeTests
{
[Test]
public void ColorPropertyHasTabColorConverter()
{
// Get the Color property
var propertyInfo = typeof(ConnectionInfo).GetProperty("Color");
Assert.That(propertyInfo, Is.Not.Null, "Color property should exist");
// Get the TypeConverter attribute
var typeConverterAttr = propertyInfo.GetCustomAttributes(typeof(TypeConverterAttribute), true)
.FirstOrDefault() as TypeConverterAttribute;
Assert.That(typeConverterAttr, Is.Not.Null, "Color property should have TypeConverter attribute");
Assert.That(typeConverterAttr.ConverterTypeName, Does.Contain("TabColorConverter"),
"Color property should use TabColorConverter");
}
[Test]
public void TabColorPropertyHasTabColorConverter()
{
// Get the TabColor property
var propertyInfo = typeof(ConnectionInfo).GetProperty("TabColor");
Assert.That(propertyInfo, Is.Not.Null, "TabColor property should exist");
// Get the TypeConverter attribute
var typeConverterAttr = propertyInfo.GetCustomAttributes(typeof(TypeConverterAttribute), true)
.FirstOrDefault() as TypeConverterAttribute;
Assert.That(typeConverterAttr, Is.Not.Null, "TabColor property should have TypeConverter attribute");
Assert.That(typeConverterAttr.ConverterTypeName, Does.Contain("TabColorConverter"),
"TabColor property should use TabColorConverter");
}
[Test]
public void ColorPropertyHasCategoryAttribute()
{
var propertyInfo = typeof(ConnectionInfo).GetProperty("Color");
Assert.That(propertyInfo, Is.Not.Null);
var categoryAttr = propertyInfo.GetCustomAttributes(typeof(CategoryAttribute), true)
.FirstOrDefault() as CategoryAttribute;
Assert.That(categoryAttr, Is.Not.Null, "Color property should have Category attribute");
}
[Test]
public void TabColorPropertyHasCategoryAttribute()
{
var propertyInfo = typeof(ConnectionInfo).GetProperty("TabColor");
Assert.That(propertyInfo, Is.Not.Null);
var categoryAttr = propertyInfo.GetCustomAttributes(typeof(CategoryAttribute), true)
.FirstOrDefault() as CategoryAttribute;
Assert.That(categoryAttr, Is.Not.Null, "TabColor property should have Category attribute");
}
[Test]
public void ColorInheritancePropertyHasCategoryAttribute()
{
var propertyInfo = typeof(ConnectionInfoInheritance).GetProperty("Color");
Assert.That(propertyInfo, Is.Not.Null);
var categoryAttr = propertyInfo.GetCustomAttributes(typeof(CategoryAttribute), true)
.FirstOrDefault() as CategoryAttribute;
Assert.That(categoryAttr, Is.Not.Null, "Color inheritance property should have Category attribute");
}
[Test]
public void TabColorInheritancePropertyHasCategoryAttribute()
{
var propertyInfo = typeof(ConnectionInfoInheritance).GetProperty("TabColor");
Assert.That(propertyInfo, Is.Not.Null);
var categoryAttr = propertyInfo.GetCustomAttributes(typeof(CategoryAttribute), true)
.FirstOrDefault() as CategoryAttribute;
Assert.That(categoryAttr, Is.Not.Null, "TabColor inheritance property should have Category attribute");
}
}
}

View File

@@ -115,6 +115,7 @@ namespace mRemoteNGTests.Connection
[TestCase(ProtocolType.SSH2, ExpectedResult = 22)]
[TestCase(ProtocolType.Telnet, ExpectedResult = 23)]
[TestCase(ProtocolType.VNC, ExpectedResult = 5900)]
[TestCase(ProtocolType.ARD, ExpectedResult = 5900)]
public int GetDefaultPortReturnsCorrectPortForProtocol(ProtocolType protocolType)
{
_connectionInfo.Protocol = protocolType;

View File

@@ -68,5 +68,29 @@ namespace mRemoteNGTests.IntegrationTests
folder3.AddChild(connection);
Assert.That(connection.Icon, Is.EqualTo(folder1.Icon));
}
[Test]
public void ConnectionInheritsColorFromFolder()
{
var folder = new ContainerInfo { Color = "Red" };
var connection = new ConnectionInfo { Inheritance = { Color = true } };
_rootNode.AddChild(folder);
folder.AddChild(connection);
Assert.That(connection.Color, Is.EqualTo(folder.Color));
}
[Test]
public void CanInheritColorThroughMultipleFolderLevels()
{
var folder1 = new ContainerInfo { Color = "Blue" };
var folder2 = new ContainerInfo { Inheritance = { Color = true } };
var folder3 = new ContainerInfo { Inheritance = { Color = true } };
var connection = new ConnectionInfo { Inheritance = { Color = true } };
_rootNode.AddChild(folder1);
folder1.AddChild(folder2);
folder2.AddChild(folder3);
folder3.AddChild(connection);
Assert.That(connection.Color, Is.EqualTo(folder1.Color));
}
}
}

View File

@@ -0,0 +1,115 @@
using System.Diagnostics;
using System.Reflection;
using mRemoteNG.Connection;
using mRemoteNG.Tools;
using NUnit.Framework;
namespace mRemoteNGTests.Tools
{
[TestFixture]
public class ExternalToolTests
{
[Test]
public void PasswordWithEqualsSignIsPassedCorrectly()
{
// Arrange
var connectionInfo = new ConnectionInfo
{
Password = "Z-3=Wv99/Aq",
Hostname = "testhost",
Username = "testuser"
};
var externalTool = new ExternalTool
{
DisplayName = "Test Tool",
FileName = "test.exe",
Arguments = "-u %USERNAME% -p %PASSWORD% -h %HOSTNAME%"
};
// Act
var process = new Process();
var setProcessPropertiesMethod = typeof(ExternalTool).GetMethod(
"SetProcessProperties",
BindingFlags.NonPublic | BindingFlags.Instance
);
setProcessPropertiesMethod?.Invoke(externalTool, new object[] { process, connectionInfo });
// Assert
// The arguments should contain the password with the equals sign
// It may be escaped (e.g., Z-3^=Wv99/Aq), but should not be split
Assert.That(process.StartInfo.Arguments, Does.Contain("Z-3"));
Assert.That(process.StartInfo.Arguments, Does.Contain("Wv99/Aq"));
// The equals sign should be present (possibly escaped as ^=)
Assert.That(process.StartInfo.Arguments, Does.Match("Z-3.=Wv99/Aq"));
}
[Test]
public void PasswordWithSpecialCharactersIsPassedCorrectly()
{
// Arrange
var connectionInfo = new ConnectionInfo
{
Password = "P@ss=W0rd!",
Hostname = "testhost",
Username = "testuser"
};
var externalTool = new ExternalTool
{
DisplayName = "Test Tool",
FileName = "test.exe",
Arguments = "-p %PASSWORD%"
};
// Act
var process = new Process();
var setProcessPropertiesMethod = typeof(ExternalTool).GetMethod(
"SetProcessProperties",
BindingFlags.NonPublic | BindingFlags.Instance
);
setProcessPropertiesMethod?.Invoke(externalTool, new object[] { process, connectionInfo });
// Assert
// The password should be present in the arguments (possibly escaped)
Assert.That(process.StartInfo.Arguments, Does.Contain("P@ss"));
Assert.That(process.StartInfo.Arguments, Does.Contain("W0rd"));
}
[Test]
public void MultipleArgumentsAreParsedCorrectly()
{
// Arrange
var connectionInfo = new ConnectionInfo
{
Password = "TestPass=123",
Hostname = "myhost.com",
Username = "admin",
Port = 8080
};
var externalTool = new ExternalTool
{
DisplayName = "Test Tool",
FileName = "app.exe",
Arguments = "--host %HOSTNAME% --port %PORT% --user %USERNAME% --pass %PASSWORD%"
};
// Act
var process = new Process();
var setProcessPropertiesMethod = typeof(ExternalTool).GetMethod(
"SetProcessProperties",
BindingFlags.NonPublic | BindingFlags.Instance
);
setProcessPropertiesMethod?.Invoke(externalTool, new object[] { process, connectionInfo });
// Assert
var arguments = process.StartInfo.Arguments;
Assert.That(arguments, Does.Contain("myhost.com"));
Assert.That(arguments, Does.Contain("8080"));
Assert.That(arguments, Does.Contain("admin"));
Assert.That(arguments, Does.Contain("TestPass"));
Assert.That(arguments, Does.Contain("123"));
}
}
}

View File

@@ -0,0 +1,166 @@
using System.Drawing;
using mRemoteNG.Tools;
using NUnit.Framework;
namespace mRemoteNGTests.Tools
{
public class TabColorConverterTests
{
private MiscTools.TabColorConverter _converter;
[SetUp]
public void Setup()
{
_converter = new MiscTools.TabColorConverter();
}
[TestCase(typeof(string), true)]
[TestCase(typeof(Color), true)]
public void CanConvertFrom(Type typeToConvertFrom, bool expectedOutcome)
{
var actualOutcome = _converter.CanConvertFrom(typeToConvertFrom);
Assert.That(actualOutcome, Is.EqualTo(expectedOutcome));
}
[TestCase(typeof(string), true)]
[TestCase(typeof(Color), true)]
public void CanConvertTo(Type typeToConvertTo, bool expectedOutcome)
{
var actualOutcome = _converter.CanConvertTo(typeToConvertTo);
Assert.That(actualOutcome, Is.EqualTo(expectedOutcome));
}
[Test]
public void ConvertFromColorToStringNamedColor()
{
var color = Color.Red;
var result = _converter.ConvertFrom(color);
Assert.That(result, Is.EqualTo("Red"));
}
[Test]
public void ConvertFromColorToStringCustomColor()
{
var color = Color.FromArgb(255, 128, 64, 32);
var result = _converter.ConvertFrom(color);
Assert.That(result, Is.EqualTo("#80401F"));
}
[Test]
public void ConvertFromColorToStringCustomColorWithAlpha()
{
var color = Color.FromArgb(128, 255, 0, 0);
var result = _converter.ConvertFrom(color);
Assert.That(result, Is.EqualTo("#80FF0000"));
}
[Test]
public void ConvertFromStringReturnsString()
{
var colorString = "Blue";
var result = _converter.ConvertFrom(colorString);
Assert.That(result, Is.EqualTo("Blue"));
}
[Test]
public void ConvertFromHexStringReturnsString()
{
var colorString = "#FF0000";
var result = _converter.ConvertFrom(colorString);
Assert.That(result, Is.EqualTo("#FF0000"));
}
[Test]
public void ConvertFromNullReturnsEmptyString()
{
var result = _converter.ConvertFrom(null);
Assert.That(result, Is.EqualTo(string.Empty));
}
[Test]
public void ConvertFromEmptyStringReturnsEmptyString()
{
var result = _converter.ConvertFrom("");
Assert.That(result, Is.EqualTo(string.Empty));
}
[Test]
public void ConvertToStringFromString()
{
var colorString = "Green";
var result = _converter.ConvertTo(colorString, typeof(string));
Assert.That(result, Is.EqualTo("Green"));
}
[Test]
public void ConvertToColorFromNamedString()
{
var colorString = "Red";
var result = _converter.ConvertTo(colorString, typeof(Color));
Assert.That(result, Is.EqualTo(Color.Red));
}
[Test]
public void ConvertToColorFromHexString()
{
var colorString = "#FF0000";
var result = _converter.ConvertTo(colorString, typeof(Color));
var expectedColor = Color.FromArgb(255, 255, 0, 0);
Assert.That(result, Is.EqualTo(expectedColor));
}
[Test]
public void ConvertToColorFromEmptyStringReturnsEmpty()
{
var result = _converter.ConvertTo("", typeof(Color));
Assert.That(result, Is.EqualTo(Color.Empty));
}
[Test]
public void ConvertToColorFromNullReturnsEmpty()
{
var result = _converter.ConvertTo(null, typeof(Color));
Assert.That(result, Is.EqualTo(Color.Empty));
}
[Test]
public void GetStandardValuesSupportedReturnsTrue()
{
var result = _converter.GetStandardValuesSupported(null);
Assert.That(result, Is.True);
}
[Test]
public void GetStandardValuesReturnsColorList()
{
var result = _converter.GetStandardValues(null);
Assert.That(result, Is.Not.Null);
Assert.That(result.Count, Is.GreaterThan(0));
}
[Test]
public void GetStandardValuesExclusiveReturnsFalse()
{
var result = _converter.GetStandardValuesExclusive(null);
Assert.That(result, Is.False);
}
[Test]
public void ConvertFromColorObjectDoesNotThrowException()
{
// This test verifies the fix for the "Object of type 'System.Drawing.Color' cannot be converted to type 'System.String'" error
var color = Color.FromArgb(255, 100, 150, 200);
Assert.DoesNotThrow(() => _converter.ConvertFrom(color));
}
[Test]
public void ColorPropertyUsesTabColorConverter()
{
// This test verifies that the Color property can properly handle Color objects
// by using TabColorConverter instead of System.Drawing.ColorConverter
var color = Color.Blue;
var result = _converter.ConvertFrom(color);
Assert.That(result, Is.EqualTo("Blue"));
}
}
}

View File

@@ -48,6 +48,14 @@ namespace mRemoteNGTests.Tree
Assert.That(_rootNodeInfo.PasswordString, Is.EqualTo(password));
}
[Test]
public void PasswordStringReturnsDefaultWhenPasswordPropertySetWithoutPasswordString()
{
// Edge case: Password property set to true directly without setting PasswordString
_rootNodeInfo.Password = true;
Assert.That(_rootNodeInfo.PasswordString, Is.EqualTo(_rootNodeInfo.DefaultPassword));
}
[TestCase(RootNodeType.Connection, TreeNodeType.Root)]
[TestCase(RootNodeType.PuttySessions, TreeNodeType.PuttyRoot)]
public void RootNodeHasCorrectTreeNodeType(RootNodeType rootNodeType, TreeNodeType expectedTreeNodeType)

View File

@@ -2,6 +2,7 @@
using System.Threading;
using System.Windows.Forms;
using mRemoteNGTests.TestHelpers;
using System.Linq;
namespace mRemoteNGTests.UI.Forms
{
@@ -33,5 +34,37 @@ namespace mRemoteNGTests.UI.Forms
ListViewTester listViewTester = new("lstOptionPages", _optionsForm);
Assert.That(listViewTester.Items.Count, Is.EqualTo(12));
}
[Test]
public void ChangingOptionMarksPageAsChanged()
{
// Wait for all pages to load
System.Threading.Thread.Sleep(500);
Application.DoEvents();
// Get the options panel
var pnlMain = _optionsForm.FindControl<Panel>("pnlMain");
Assert.That(pnlMain, Is.Not.Null);
if (pnlMain.Controls.Count > 0)
{
var optionsPage = pnlMain.Controls[0] as mRemoteNG.UI.Forms.OptionsPages.OptionsPage;
Assert.That(optionsPage, Is.Not.Null);
// Find a checkbox in the options page
var checkBoxes = optionsPage.Controls.Find("", true).OfType<CheckBox>().ToList();
if (checkBoxes.Count > 0)
{
var checkBox = checkBoxes[0];
bool originalValue = checkBox.Checked;
checkBox.Checked = !originalValue;
Application.DoEvents();
// Verify the page is marked as changed
Assert.That(optionsPage.HasChanges, Is.True);
}
}
}
}
}

View File

@@ -45,5 +45,15 @@ namespace mRemoteNGTests.UI.Forms
cancelButton.PerformClick();
Assert.That(eventFired, Is.True);
}
[Test]
public void PasswordFieldHasAutofocus()
{
// Find the password textbox control
TextBox passwordTextBox = _passwordForm.FindControl<TextBox>("txtPassword");
// Verify that the password field has focus when the form is loaded
Assert.That(passwordTextBox.Focused, Is.True, "Password field should have autofocus when form loads");
}
}
}