diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index a9c01d6e2c..357a8da590 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -7,7 +7,7 @@ on: outputs: name: description: "The artifact name" - value: ${{ jobs.build_ubuntu.outputs.name }} + value: ${{ jobs.build_appimage.outputs.name }} env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_ar.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_ar.ts index 47657929ee..6836c623a6 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_ar.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_ar.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_ca.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_ca.ts index b0ad471381..4b56294b04 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_ca.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_ca.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_cs.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_cs.ts index c2e2143c7a..1ced6926ff 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_cs.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_cs.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_da.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_da.ts index eee5b19e64..1218e59b57 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_da.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_da.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_de.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_de.ts index dce04c369e..5e851c4db8 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_de.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_de.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_el.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_el.ts index d703776d31..4b29cac11a 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_el.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_el.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_en.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_en.ts index 674abf19ab..4d43c4bfaf 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_en.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_en.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_en_GB.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_en_GB.ts index 810094277f..1f3f1f5cd0 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_en_GB.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_en_GB.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_es.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_es.ts index c6f9235f5f..2f7223bd4a 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_es.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_es.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_et.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_et.ts index d9809b3f59..7defa06b2c 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_et.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_et.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_fi.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_fi.ts index 579bfe9a72..3996646a36 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_fi.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_fi.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_fr.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_fr.ts index c525118b7d..e47dfec717 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_fr.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_fr.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_gd.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_gd.ts index 524b9641de..2c0a548504 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_gd.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_gd.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_gl.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_gl.ts index ecf84a2d06..d9f07aea50 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_gl.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_gl.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_hu.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_hu.ts index 45cdebf0f0..e75d9a60fd 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_hu.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_hu.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_it.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_it.ts index 30164bc9e9..bcae1f410e 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_it.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_it.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_ja.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_ja.ts index 01593730e7..e8fc4883bf 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_ja.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_ja.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_ko.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_ko.ts index 6025796517..b7eaf7b84c 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_ko.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_ko.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_nb.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_nb.ts index 90d624470c..7884f0fd27 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_nb.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_nb.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_ne.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_ne.ts index faa33cc7cd..be6552b111 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_ne.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_ne.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_nl.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_nl.ts index 63f79cde18..405ee871d1 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_nl.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_nl.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_nn.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_nn.ts index 64f3a81ac9..fa100adb2d 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_nn.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_nn.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_oc.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_oc.ts index 1d24288f36..6412d75408 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_oc.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_oc.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_pl.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_pl.ts index f394f4f1ec..844f5fcd7d 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_pl.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_pl.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_pt_BR.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_pt_BR.ts index 3f0c2cb32e..e6447c910b 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_pt_BR.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_pt_BR.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_pt_PT.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_pt_PT.ts index 6eb85e4644..92118d148f 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_pt_PT.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_pt_PT.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_ro.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_ro.ts index 3491809e45..4c1b5f3fba 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_ro.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_ro.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_ru.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_ru.ts index 18d48d1a4d..f14fc14c07 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_ru.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_ru.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_sk.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_sk.ts index 5dbab18227..00d199687f 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_sk.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_sk.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_sl.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_sl.ts index 8adf8d1ec1..c89cc3827e 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_sl.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_sl.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_sv.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_sv.ts index 02cbbdf92b..a39a70cc2c 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_sv.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_sv.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_th.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_th.ts index 9110cdef52..3e408243d2 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_th.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_th.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_tr.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_tr.ts index 5719d42aaa..c1bef3c178 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_tr.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_tr.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_uk.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_uk.ts index eeb7a93513..492d49301f 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_uk.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_uk.ts @@ -103,7 +103,7 @@ - + Connect @@ -111,7 +111,7 @@ - + Edit and Connect @@ -127,7 +127,7 @@ - + Edit @@ -135,77 +135,84 @@ - + Copy - - + - + + Delete - - - - Refresh + + + Detail - - - - Close + + + + + Refresh + + Close + + + + + Tools - + Name - + Protocol - + Date - + ID - + File - - + + Warning - + File of connecter is exists. whether to overwrite it? File: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter @@ -491,7 +498,7 @@ - + Full screen(&F) @@ -500,9 +507,9 @@ - + Full screen @@ -512,7 +519,7 @@ - + Recently connected @@ -577,27 +584,27 @@ - + Connect - + Exit full screen(&E) - + Exit full screen - - + + Load file fail: @@ -605,62 +612,62 @@ - + Open rabbit remote control file - + ICE signal status - + Rabbit remote control Files (*.rrc);;All files(*.*) - + Connecting to - + Connected to - + ICE signal status: Connected - + ICE signal status: Disconnected - + Use message box to display information - + Hide menu bar - + The menu bar will be hidden, the tool bar must be showed. - + Hide tool bar - + The tool bar will be hidden, the menu bar must be showed. @@ -668,22 +675,22 @@ QObject - + Start - + Rabbit Remote Control - + Kang Lin Studio - + End diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_zh_CN.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_zh_CN.ts index 2f9216efe4..88399b1784 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_zh_CN.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_zh_CN.ts @@ -103,7 +103,7 @@ - + Connect 连接 @@ -111,7 +111,7 @@ - + Edit and Connect 编辑并连接 @@ -127,7 +127,7 @@ - + Edit 编辑 @@ -135,77 +135,84 @@ - + Copy 复制 - - + - + + Delete 删除 - - - + + + Detail + + + + + + + Refresh 刷新 - - - + + + Close 关闭 - - + + Tools 工具 - + Name 名称 - + Protocol 协议 - + Date 日期 - + ID - + File 文件 - - + + Warning 警告 - + File of connecter is exists. whether to overwrite it? File: %1 此连接文件已存在,是否覆盖它?文件: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter 此连接文件已存在,是否覆盖它?如果选择否,请修改连接的名称。 @@ -388,7 +395,7 @@ - + Full screen(&F) 全屏(&F) @@ -556,7 +563,7 @@ 连接(&C) - + Recently connected 最近连接 @@ -566,9 +573,9 @@ 断开连接(&D) - + Connect 连接 @@ -577,9 +584,9 @@ - + Full screen 全屏 @@ -588,20 +595,20 @@ ICE 信令状态 - + Exit full screen(&E) 退出全屏(&E) - + Exit full screen 退出全屏 - - + + Load file fail: 加载文件失败: @@ -609,12 +616,12 @@ - + Open rabbit remote control file 打开玉兔远程控制文件 - + ICE signal status ICE 信令状态 @@ -623,52 +630,52 @@ ### 插件 - + Rabbit remote control Files (*.rrc);;All files(*.*) 玉兔远程控制文件(*.rrc);;所有文件(*.*) - + Connecting to 正在连接 - + Connected to 连接到 - + ICE signal status: Connected ICE 信令状态:连接 - + ICE signal status: Disconnected ICE 信令状态:断开 - + Use message box to display information 使用消息框显示信息 - + Hide menu bar 隐藏菜单栏 - + The menu bar will be hidden, the tool bar must be showed. 将隐藏菜单栏,必须显示工具条。 - + Hide tool bar 隐藏工具条 - + The tool bar will be hidden, the menu bar must be showed. 将隐藏工具条,必须显示菜单栏。 @@ -676,22 +683,22 @@ QObject - + Start 开始 - + Rabbit Remote Control 玉兔远程控制 - + Kang Lin Studio 康林工作室 - + End 结束 diff --git a/App/Client/Resource/Translations/RabbitRemoteControlApp_zh_TW.ts b/App/Client/Resource/Translations/RabbitRemoteControlApp_zh_TW.ts index 8fca870cea..87c0fe2328 100644 --- a/App/Client/Resource/Translations/RabbitRemoteControlApp_zh_TW.ts +++ b/App/Client/Resource/Translations/RabbitRemoteControlApp_zh_TW.ts @@ -103,7 +103,7 @@ - + Connect 連接 @@ -111,7 +111,7 @@ - + Edit and Connect 編輯並連接 @@ -127,7 +127,7 @@ - + Edit 編輯 @@ -135,77 +135,84 @@ - + Copy 復製 - - + - + + Delete 刪除 - - - + + + Detail + + + + + + + Refresh 刷新 - - - + + + Close 關閉 - - + + Tools 工具 - + Name 名稱 - + Protocol 協議 - + Date 日期 - + ID - + File 文件 - - + + Warning 警告 - + File of connecter is exists. whether to overwrite it? File: %1 此連接文件已存在,是否覆蓋它?文件: %1 - + File of connecter is exists. whether to overwrite it? If select No, please modify the name of connecter 此連接文件已存在,是否覆蓋它?如果選擇否,請修改連接的名稱。 @@ -388,7 +395,7 @@ - + Full screen(&F) 全屏(&F) @@ -556,7 +563,7 @@ 連接(&C) - + Recently connected 最近連接 @@ -566,9 +573,9 @@ 斷開連接(&D) - + Connect 連接 @@ -577,9 +584,9 @@ - + Full screen 全屏 @@ -588,20 +595,20 @@ ICE 信令狀態 - + Exit full screen(&E) 退出全屏(&E) - + Exit full screen 退出全屏 - - + + Load file fail: 加載文件失敗: @@ -609,12 +616,12 @@ - + Open rabbit remote control file 打開玉兔遠程控製文件 - + ICE signal status ICE 信令狀態 @@ -623,52 +630,52 @@ ### 插件 - + Rabbit remote control Files (*.rrc);;All files(*.*) 玉兔遠程控製文件(*.rrc);;所有文件(*.*) - + Connecting to 正在連接 - + Connected to 連接到 - + ICE signal status: Connected ICE 信令狀態:連接 - + ICE signal status: Disconnected ICE 信令狀態:斷開 - + Use message box to display information 使用消息框顯示信息 - + Hide menu bar 隱藏菜單欄 - + The menu bar will be hidden, the tool bar must be showed. 將隱藏菜單欄,必須顯示工具條。 - + Hide tool bar 隱藏工具條 - + The tool bar will be hidden, the menu bar must be showed. 將隱藏工具條,必須顯示菜單欄。 @@ -676,22 +683,22 @@ QObject - + Start 開始 - + Rabbit Remote Control 玉兔遠程控製 - + Kang Lin Studio 康林工作室 - + End 結束 diff --git a/App/Client/mainwindow.cpp b/App/Client/mainwindow.cpp index 1ef01a4781..0f59ccc574 100644 --- a/App/Client/mainwindow.cpp +++ b/App/Client/mainwindow.cpp @@ -1102,7 +1102,8 @@ void MainWindow::slotSystemTrayIconTypeChanged() if(m_TrayIcon) m_TrayIcon.reset(); - m_TrayIcon = QSharedPointer(new QSystemTrayIcon(this)); + m_TrayIcon = QSharedPointer( + new QSystemTrayIcon(this->windowIcon(), this)); if(QSystemTrayIcon::isSystemTrayAvailable()) { bool check = connect( diff --git a/ChangeLog.md b/ChangeLog.md index eebd0e58a2..5fb10c651e 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,5 +1,9 @@ ## Change Log +### v0.0.34 +- FreeRDP + - Add remote application + ### v0.0.33 - Remove donate bitcoin - VNC: modify mouse. add back button diff --git a/ChangeLog_zh_CN.md b/ChangeLog_zh_CN.md index 178b640f56..7ffc3a7930 100644 --- a/ChangeLog_zh_CN.md +++ b/ChangeLog_zh_CN.md @@ -1,5 +1,9 @@ ## 修改日志 +### v0.0.34 +- FreeRDP + - 增加远程应用 + ### v0.0.33 - 移除捐赠比特币 - VNC: 修改鼠标,增加后退按钮 diff --git a/Client/ConnectDesktop.h b/Client/ConnectDesktop.h index 27110ff10f..7d14573108 100644 --- a/Client/ConnectDesktop.h +++ b/Client/ConnectDesktop.h @@ -70,7 +70,7 @@ public Q_SLOTS: */ virtual void slotClipBoardChanged() = 0; -private: +protected: int SetConnecter(CConnecter* pConnecter); int SetViewer(CFrmViewer* pView, bool bDirectConnection); diff --git a/Client/FrmScroll.cpp b/Client/FrmScroll.cpp index 9953bb0193..e80d056ae5 100644 --- a/Client/FrmScroll.cpp +++ b/Client/FrmScroll.cpp @@ -60,6 +60,7 @@ CFrmViewer* CFrmScroll::GetViewer() return qobject_cast(widget()); } +//! When the mouse is moved to the edge, scroll the scrollbar void CFrmScroll::slotMouseMoveEvent(QMouseEvent *event) { int area = 10; diff --git a/Client/FrmViewer.cpp b/Client/FrmViewer.cpp index c783cd7d37..504d1c8f45 100644 --- a/Client/FrmViewer.cpp +++ b/Client/FrmViewer.cpp @@ -42,8 +42,10 @@ CFrmViewer::CFrmViewer(QWidget *parent) setFocus(); // When the connecter is not connected, don't accept keyboard and mouse event - // When the CConnecter::sigConnected() set true. accept keyboard and mouse event - // \see CConnecter::sigConnected() + // When the CConnect::sigConnected() set true. accept keyboard and mouse event + // \see CConnect::sigConnected() + // CConnectDesktop::SetViewer + // CFrmViewer::slotConnected() setEnabled(false); } @@ -181,8 +183,9 @@ void CFrmViewer::mousePressEvent(QMouseEvent *event) if(TranslationMousePoint(pos, pos)) return; // event->buttons() 产生事件时,按键的状态 // event->button() 触发当前事件的按键 + /* qDebug(logMouse) << "CFrmViewer::mousePressEvent" - << event << event->button() << event->buttons() << pos; + << event << event->button() << event->buttons() << pos;//*/ emit sigMousePressEvent(event, QPoint(pos.x(), pos.y())); event->accept(); } @@ -198,8 +201,9 @@ void CFrmViewer::mouseReleaseEvent(QMouseEvent *event) if(TranslationMousePoint(pos, pos)) return; // event->buttons() 产生事件时,按键的状态 // event->button() 触发当前事件的按键 + /* qDebug(logMouse) << "CFrmViewer::mouseReleaseEvent" - << event << event->button() << event->buttons() << pos; + << event << event->button() << event->buttons() << pos;//*/ emit sigMouseReleaseEvent(event, QPoint(pos.x(), pos.y())); event->accept(); } @@ -215,8 +219,9 @@ void CFrmViewer::mouseMoveEvent(QMouseEvent *event) if(TranslationMousePoint(pos, pos)) return; // event->buttons() 产生事件时,按键的状态 // event->button() 触发当前事件的按键 + /* qDebug(logMouse) << "CFrmViewer::mouseMoveEvent" - << event->button() << event->buttons() << pos; + << event->button() << event->buttons() << pos;//*/ emit sigMouseMoveEvent(event, QPoint(pos.x(), pos.y())); emit sigMouseMoveEvent(event); event->accept(); @@ -231,22 +236,23 @@ void CFrmViewer::wheelEvent(QWheelEvent *event) event->pos(); #endif if(TranslationMousePoint(pos, pos)) return; + /* qDebug(logMouse) << "CFrmViewer::wheelEvent" - << event->buttons() << event->angleDelta() << pos; + << event->buttons() << event->angleDelta() << pos;//*/ emit sigWheelEvent(event, QPoint(pos.x(), pos.y())); event->accept(); } void CFrmViewer::keyPressEvent(QKeyEvent *event) { - qDebug(logKey) << "CFrmViewer::keyPressEvent" << event; + //qDebug(logKey) << "CFrmViewer::keyPressEvent" << event; emit sigKeyPressEvent(event); event->accept(); } void CFrmViewer::keyReleaseEvent(QKeyEvent *event) { - qDebug(logKey) << "CFrmViewer::keyReleaseEvent" << event; + //qDebug(logKey) << "CFrmViewer::keyReleaseEvent" << event; emit sigKeyReleaseEvent(event); event->accept(); } diff --git a/Client/FrmViewer.h b/Client/FrmViewer.h index c8d0430135..08581e47c3 100644 --- a/Client/FrmViewer.h +++ b/Client/FrmViewer.h @@ -96,7 +96,8 @@ class CLIENT_EXPORT CFrmViewer : public QWidget Q_ENUM(LED_STATE) public Q_SLOTS: - void slotSetAdaptWindows(CFrmViewer::ADAPT_WINDOWS aw = ADAPT_WINDOWS::Original); + void slotSetAdaptWindows( + CFrmViewer::ADAPT_WINDOWS aw = ADAPT_WINDOWS::Original); int slotSetZoomFactor(double newZoomFactor); /*================== Internal calls ==================*/ @@ -137,6 +138,7 @@ public Q_SLOTS: void sigMousePressEvent(QMouseEvent* event, QPoint pos); void sigMouseReleaseEvent(QMouseEvent* event, QPoint pos); void sigMouseMoveEvent(QMouseEvent* event, QPoint pos); + //! \see CFrmScroll::CFrmScroll void sigMouseMoveEvent(QMouseEvent* event); void sigWheelEvent(QWheelEvent *event, QPoint pos); void sigKeyPressEvent(QKeyEvent *event); @@ -165,7 +167,7 @@ public Q_SLOTS: int ReSize(int width, int height); void paintDesktop(); - int TranslationMousePoint(QPointF inPos, QPointF &outPos); + virtual int TranslationMousePoint(QPointF inPos, QPointF &outPos); QRectF GetAspectRationRect(); public: diff --git a/Client/Resource/Translations/Client_ar.ts b/Client/Resource/Translations/Client_ar.ts index d261bb7158..545d80ce5b 100644 --- a/Client/Resource/Translations/Client_ar.ts +++ b/Client/Resource/Translations/Client_ar.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_ca.ts b/Client/Resource/Translations/Client_ca.ts index 3889cbdbfd..850dfca402 100644 --- a/Client/Resource/Translations/Client_ca.ts +++ b/Client/Resource/Translations/Client_ca.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_cs.ts b/Client/Resource/Translations/Client_cs.ts index 32c0c5625e..15713d34e0 100644 --- a/Client/Resource/Translations/Client_cs.ts +++ b/Client/Resource/Translations/Client_cs.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_da.ts b/Client/Resource/Translations/Client_da.ts index dfe3a260ab..7f78778ebb 100644 --- a/Client/Resource/Translations/Client_da.ts +++ b/Client/Resource/Translations/Client_da.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_de.ts b/Client/Resource/Translations/Client_de.ts index 2b6d62ae1d..b063ad22f8 100644 --- a/Client/Resource/Translations/Client_de.ts +++ b/Client/Resource/Translations/Client_de.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_el.ts b/Client/Resource/Translations/Client_el.ts index 1b1a373d14..062862eb5f 100644 --- a/Client/Resource/Translations/Client_el.ts +++ b/Client/Resource/Translations/Client_el.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_en.ts b/Client/Resource/Translations/Client_en.ts index 5a10085dc5..b85424275f 100644 --- a/Client/Resource/Translations/Client_en.ts +++ b/Client/Resource/Translations/Client_en.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_en_GB.ts b/Client/Resource/Translations/Client_en_GB.ts index 65f350ff87..bbd048ef43 100644 --- a/Client/Resource/Translations/Client_en_GB.ts +++ b/Client/Resource/Translations/Client_en_GB.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_es.ts b/Client/Resource/Translations/Client_es.ts index 0184196214..3369312005 100644 --- a/Client/Resource/Translations/Client_es.ts +++ b/Client/Resource/Translations/Client_es.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_et.ts b/Client/Resource/Translations/Client_et.ts index a8bbb53a2a..68cb3c215d 100644 --- a/Client/Resource/Translations/Client_et.ts +++ b/Client/Resource/Translations/Client_et.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_fi.ts b/Client/Resource/Translations/Client_fi.ts index a9793159bf..00a72c4a2b 100644 --- a/Client/Resource/Translations/Client_fi.ts +++ b/Client/Resource/Translations/Client_fi.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_fr.ts b/Client/Resource/Translations/Client_fr.ts index 0cd5bdcee2..401eec6413 100644 --- a/Client/Resource/Translations/Client_fr.ts +++ b/Client/Resource/Translations/Client_fr.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_gd.ts b/Client/Resource/Translations/Client_gd.ts index e8be310b88..e21141e5d8 100644 --- a/Client/Resource/Translations/Client_gd.ts +++ b/Client/Resource/Translations/Client_gd.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_gl.ts b/Client/Resource/Translations/Client_gl.ts index c73c583ca2..011cce069e 100644 --- a/Client/Resource/Translations/Client_gl.ts +++ b/Client/Resource/Translations/Client_gl.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_hu.ts b/Client/Resource/Translations/Client_hu.ts index 3912fc3358..0b7706f3b3 100644 --- a/Client/Resource/Translations/Client_hu.ts +++ b/Client/Resource/Translations/Client_hu.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_it.ts b/Client/Resource/Translations/Client_it.ts index d2077fe51f..90e91a18cb 100644 --- a/Client/Resource/Translations/Client_it.ts +++ b/Client/Resource/Translations/Client_it.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_ja.ts b/Client/Resource/Translations/Client_ja.ts index a014e374ea..77b8e7ebb5 100644 --- a/Client/Resource/Translations/Client_ja.ts +++ b/Client/Resource/Translations/Client_ja.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_ko.ts b/Client/Resource/Translations/Client_ko.ts index f8a061e6d9..d28a7d8aa4 100644 --- a/Client/Resource/Translations/Client_ko.ts +++ b/Client/Resource/Translations/Client_ko.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_nb.ts b/Client/Resource/Translations/Client_nb.ts index 63cc63309a..7122034d89 100644 --- a/Client/Resource/Translations/Client_nb.ts +++ b/Client/Resource/Translations/Client_nb.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_ne.ts b/Client/Resource/Translations/Client_ne.ts index 32ce56c8ff..1c41b9a553 100644 --- a/Client/Resource/Translations/Client_ne.ts +++ b/Client/Resource/Translations/Client_ne.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_nl.ts b/Client/Resource/Translations/Client_nl.ts index e7aa3a406d..4c37aaff85 100644 --- a/Client/Resource/Translations/Client_nl.ts +++ b/Client/Resource/Translations/Client_nl.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_nn.ts b/Client/Resource/Translations/Client_nn.ts index b139cbc392..dbad230e3c 100644 --- a/Client/Resource/Translations/Client_nn.ts +++ b/Client/Resource/Translations/Client_nn.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_oc.ts b/Client/Resource/Translations/Client_oc.ts index 011bcd1de1..24f6643542 100644 --- a/Client/Resource/Translations/Client_oc.ts +++ b/Client/Resource/Translations/Client_oc.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_pl.ts b/Client/Resource/Translations/Client_pl.ts index 23def50e07..f0384fb9af 100644 --- a/Client/Resource/Translations/Client_pl.ts +++ b/Client/Resource/Translations/Client_pl.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_pt_BR.ts b/Client/Resource/Translations/Client_pt_BR.ts index c61dbf24a7..37eb801a0b 100644 --- a/Client/Resource/Translations/Client_pt_BR.ts +++ b/Client/Resource/Translations/Client_pt_BR.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_pt_PT.ts b/Client/Resource/Translations/Client_pt_PT.ts index 82d92a2122..8b6b531bb1 100644 --- a/Client/Resource/Translations/Client_pt_PT.ts +++ b/Client/Resource/Translations/Client_pt_PT.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_ro.ts b/Client/Resource/Translations/Client_ro.ts index 9283ec4746..d4ca40ddc8 100644 --- a/Client/Resource/Translations/Client_ro.ts +++ b/Client/Resource/Translations/Client_ro.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_ru.ts b/Client/Resource/Translations/Client_ru.ts index 52aa11cf60..97d8c6f665 100644 --- a/Client/Resource/Translations/Client_ru.ts +++ b/Client/Resource/Translations/Client_ru.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_sk.ts b/Client/Resource/Translations/Client_sk.ts index 94a074cdc8..689bfb5e01 100644 --- a/Client/Resource/Translations/Client_sk.ts +++ b/Client/Resource/Translations/Client_sk.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_sl.ts b/Client/Resource/Translations/Client_sl.ts index 097ee101a2..c7131b029b 100644 --- a/Client/Resource/Translations/Client_sl.ts +++ b/Client/Resource/Translations/Client_sl.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_sv.ts b/Client/Resource/Translations/Client_sv.ts index a7f01c2045..76692d21c8 100644 --- a/Client/Resource/Translations/Client_sv.ts +++ b/Client/Resource/Translations/Client_sv.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_th.ts b/Client/Resource/Translations/Client_th.ts index 24a4392958..9fb27ce89d 100644 --- a/Client/Resource/Translations/Client_th.ts +++ b/Client/Resource/Translations/Client_th.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_tr.ts b/Client/Resource/Translations/Client_tr.ts index 1665679d67..ef1ee2bfa6 100644 --- a/Client/Resource/Translations/Client_tr.ts +++ b/Client/Resource/Translations/Client_tr.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_uk.ts b/Client/Resource/Translations/Client_uk.ts index 1ed8a62bfd..30b7cec0cd 100644 --- a/Client/Resource/Translations/Client_uk.ts +++ b/Client/Resource/Translations/Client_uk.ts @@ -113,12 +113,12 @@ - + Stop record - + Start record @@ -251,22 +251,22 @@ - + Original - + Zoom - + Zoom to window - + Keep desktop aspectration adapt to windows @@ -274,7 +274,7 @@ CFrmViewer - + Failed to update keyboard LED state @@ -400,7 +400,7 @@ - + Record @@ -491,7 +491,7 @@ - + Open path diff --git a/Client/Resource/Translations/Client_zh_CN.ts b/Client/Resource/Translations/Client_zh_CN.ts index 698bea6c18..a31901d413 100644 --- a/Client/Resource/Translations/Client_zh_CN.ts +++ b/Client/Resource/Translations/Client_zh_CN.ts @@ -117,12 +117,12 @@ 暂停录制 - + Stop record 停止录制 - + Start record 开始录制 @@ -255,22 +255,22 @@ 提示类型 - + Original 原始 - + Zoom 缩放 - + Zoom to window 缩放到窗口大小 - + Keep desktop aspectration adapt to windows 保持桌面的高宽比缩放到窗口大小 @@ -278,7 +278,7 @@ CFrmViewer - + Failed to update keyboard LED state 更新键盘 LED 状态失败 @@ -404,7 +404,7 @@ - + Record 录制 @@ -495,7 +495,7 @@ 打开文件 - + Open path 打开文件夹 diff --git a/Client/Resource/Translations/Client_zh_TW.ts b/Client/Resource/Translations/Client_zh_TW.ts index 6d7c44dd77..bff6e5e7de 100644 --- a/Client/Resource/Translations/Client_zh_TW.ts +++ b/Client/Resource/Translations/Client_zh_TW.ts @@ -117,12 +117,12 @@ 暫停錄製 - + Stop record 停止錄製 - + Start record 開始錄製 @@ -255,22 +255,22 @@ 提示類型 - + Original 原始 - + Zoom 縮放 - + Zoom to window 縮放到窗口大小 - + Keep desktop aspectration adapt to windows 保持桌面的高寬比縮放到窗口大小 @@ -278,7 +278,7 @@ CFrmViewer - + Failed to update keyboard LED state 更新鍵盤 LED 狀態失敗 @@ -404,7 +404,7 @@ - + Record 錄製 @@ -495,7 +495,7 @@ 打開文件 - + Open path 打開文件夾 diff --git a/Plugins/FreeRDP/Client/CMakeLists.txt b/Plugins/FreeRDP/Client/CMakeLists.txt index e27fd0a5e7..187e1f65db 100644 --- a/Plugins/FreeRDP/Client/CMakeLists.txt +++ b/Plugins/FreeRDP/Client/CMakeLists.txt @@ -18,6 +18,10 @@ SET(FreeRDP_SOURCE_FILES ClipboardMimeData.cpp DlgGetUserPasswordFreeRDP.cpp DlgDesktopSize.cpp + RAIL.cpp + RAILWindow.cpp + RAILManageWindows.cpp + RAILEvent.cpp ) SET(FreeRDP_HEADER_FILES @@ -32,6 +36,10 @@ SET(FreeRDP_HEADER_FILES ClipboardMimeData.h DlgGetUserPasswordFreeRDP.h DlgDesktopSize.h + RAIL.h + RAILWindow.h + RAILManageWindows.h + RAILEvent.h ) SET(FreeRDP_UI_FILES @@ -71,4 +79,3 @@ ADD_PLUGIN_TARGET(NAME PluginClient${PROJECT_NAME} INSTALL_RPATH ${INSTALL_RPATH} VERSION ${RabbitRemoteControl_VERSION} ) - diff --git a/Plugins/FreeRDP/Client/ClipboardFreeRDP.cpp b/Plugins/FreeRDP/Client/ClipboardFreeRDP.cpp index 9f7cf566df..74f483346c 100644 --- a/Plugins/FreeRDP/Client/ClipboardFreeRDP.cpp +++ b/Plugins/FreeRDP/Client/ClipboardFreeRDP.cpp @@ -80,7 +80,7 @@ int CClipboardFreeRDP::Init(CliprdrClientContext *context, bool bEnable) return 0; } -int CClipboardFreeRDP::UnInit(CliprdrClientContext *context, bool bEnable) +int CClipboardFreeRDP::Clean(CliprdrClientContext *context, bool bEnable) { context->custom = nullptr; m_pCliprdrClientContext = nullptr; diff --git a/Plugins/FreeRDP/Client/ClipboardFreeRDP.h b/Plugins/FreeRDP/Client/ClipboardFreeRDP.h index 79ef1c72c3..15e4a0ae70 100644 --- a/Plugins/FreeRDP/Client/ClipboardFreeRDP.h +++ b/Plugins/FreeRDP/Client/ClipboardFreeRDP.h @@ -20,7 +20,7 @@ class CClipboardFreeRDP : public QObject virtual ~CClipboardFreeRDP(); int Init(CliprdrClientContext *context, bool bEnable); - int UnInit(CliprdrClientContext* context, bool bEnable); + int Clean(CliprdrClientContext* context, bool bEnable); static UINT cb_cliprdr_server_capabilities(CliprdrClientContext* context, const CLIPRDR_CAPABILITIES* capabilities); diff --git a/Plugins/FreeRDP/Client/ConnectFreeRDP.cpp b/Plugins/FreeRDP/Client/ConnectFreeRDP.cpp index ce65b991ba..42a5eb2278 100644 --- a/Plugins/FreeRDP/Client/ConnectFreeRDP.cpp +++ b/Plugins/FreeRDP/Client/ConnectFreeRDP.cpp @@ -1,7 +1,13 @@ // Author: Kang Lin -// https://learn.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/welcome-to-rds -// X.509 Public Key Certificates: https://learn.microsoft.com/zh-cn/windows/win32/seccertenroll/about-x-509-public-key-certificates -// Cryptography: https://learn.microsoft.com/zh-cn/windows/win32/seccrypto/cryptography-portal + +/*! + * - [Technical Documents](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-winprotlp/e36c976a-6263-42a8-b119-7a3cc41ddd2a) + * - [[MS-RDPBCGR]: Remote Desktop Protocol: Basic Connectivity and Graphics Remoting](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/5073f4ed-1e93-45e1-b039-6e30c385867c) + * + * - https://learn.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/welcome-to-rds + * - X.509 Public Key Certificates: https://learn.microsoft.com/zh-cn/windows/win32/seccertenroll/about-x-509-public-key-certificates + * - Cryptography: https://learn.microsoft.com/zh-cn/windows/win32/seccrypto/cryptography-portal +*/ #include "ConnectFreeRDP.h" @@ -45,12 +51,13 @@ static Q_LOGGING_CATEGORY(log, "FreeRDP.Connect") static Q_LOGGING_CATEGORY(logKey, "FreeRDP.Connect.Key") static Q_LOGGING_CATEGORY(logMouse, "FreeRDP.Connect.Mouse") - + CConnectFreeRDP::CConnectFreeRDP(CConnecterFreeRDP *pConnecter) : CConnectDesktop(pConnecter), m_pContext(nullptr), m_pParameter(nullptr), m_ClipBoard(this), + m_pRail(nullptr), m_Cursor(this), m_writeEvent(nullptr) #ifdef HAVE_LIBSSH @@ -60,11 +67,18 @@ CConnectFreeRDP::CConnectFreeRDP(CConnecterFreeRDP *pConnecter) qDebug(log) << Q_FUNC_INFO; m_pParameter = qobject_cast(pConnecter->GetParameter()); Q_ASSERT(m_pParameter); + + m_pRailManageWindows = &pConnecter->m_RailManageWindows; + pConnecter->m_RailManageWindows.m_pConnect = this; } CConnectFreeRDP::~CConnectFreeRDP() { qDebug(log) << Q_FUNC_INFO; + if(m_pRail) { + delete m_pRail; + m_pRail = nullptr; + } } /* @@ -167,6 +181,10 @@ CConnect::OnInitReturnValue CConnectFreeRDP::OnInit() freerdp_settings_set_bool( settings, FreeRDP_AutoReconnectionEnabled, false); + nRet = InitRAIL(); + if(nRet) + return OnInitReturnValue::Fail; + //*Load channel RedirectionSound(); RedirectionMicrophone(); @@ -410,6 +428,25 @@ void CConnectFreeRDP::slotClipBoardChanged() m_ClipBoard.slotClipBoardChanged(); } +rdpContext* CConnectFreeRDP::GetContext() +{ + return (rdpContext*)m_pContext; +} + +rdpSettings* CConnectFreeRDP::GetSettings() +{ + if(GetContext()) + return GetContext()->settings; + return nullptr; +} + +CConnectFreeRDP* CConnectFreeRDP::GetConnectFreeRDP(rdpContext* context) +{ + if(context) + return ((ClientContext*)context)->pThis; + return nullptr; +} + BOOL CConnectFreeRDP::cbGlobalInit() { qDebug(log) << Q_FUNC_INFO; @@ -421,6 +458,7 @@ void CConnectFreeRDP::cbGlobalUninit() qDebug(log) << Q_FUNC_INFO; } +//! [[MS-RDPBCGR] 1.3.1.1 Connection Sequence](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/023f1e69-cfe8-4ee6-9ee0-7e759fb4e4ee) BOOL CConnectFreeRDP::cbClientNew(freerdp *instance, rdpContext *context) { qDebug(log) << Q_FUNC_INFO; @@ -461,7 +499,7 @@ int CConnectFreeRDP::cbClientStart(rdpContext *context) freerdp* instance = freerdp_client_get_instance(context); if(!instance) return -2; - CConnectFreeRDP* pThis = ((ClientContext*)context)->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(context); auto settings = context->settings; QString szHost; @@ -594,14 +632,15 @@ BOOL CConnectFreeRDP::cb_pre_connect(freerdp* instance) qDebug(log) << Q_FUNC_INFO; rdpChannels* channels = nullptr; rdpSettings* settings = nullptr; - rdpContext* context = instance->context; + rdpContext* context = nullptr; if (!instance || !instance->context || !instance->context->settings) { return FALSE; } - CConnectFreeRDP* pThis = ((ClientContext*)context)->pThis; + context = instance->context; + CConnectFreeRDP* pThis = GetConnectFreeRDP(context); if(!pThis) return FALSE; settings = instance->context->settings; channels = context->channels; @@ -718,7 +757,7 @@ const char* CConnectFreeRDP::GetTitle(freerdp* instance) BOOL addPort; const char* name = nullptr; - CConnectFreeRDP* pThis = ((ClientContext*)instance->context)->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(instance->context); rdpSettings* settings = instance->context->settings; if (!settings) @@ -760,7 +799,7 @@ BOOL CConnectFreeRDP::cb_post_connect(freerdp* instance) rdpContext* context = instance->context; rdpSettings* settings = instance->context->settings; rdpUpdate* update = instance->context->update; - CConnectFreeRDP* pThis = ((ClientContext*)instance->context)->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(instance->context); const char* pWindowTitle = GetTitle(instance); if(pWindowTitle) @@ -848,12 +887,26 @@ void CConnectFreeRDP::OnChannelConnectedEventHandler(void *context, ChannelConnectedEventArgs *e) { rdpContext* pContext = (rdpContext*)context; - CConnectFreeRDP* pThis = ((ClientContext*)context)->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(pContext); if (strcmp(e->name, CLIPRDR_SVC_CHANNEL_NAME) == 0) { qDebug(log) << "channel" << e->name << "connected"; pThis->m_ClipBoard.Init((CliprdrClientContext*)e->pInterface, pThis->m_pParameter->GetClipboard()); } + else if (strcmp(e->name, RAIL_SVC_CHANNEL_NAME) == 0) + { + if(!pThis->m_pRail) + { + pThis->m_pRail = new CRAIL(pThis); + pThis->m_pRailManageWindows->Connect(pThis->m_pRail); + auto settings = pContext->settings; + int width = freerdp_settings_get_uint32(settings, FreeRDP_DesktopWidth); + int height = freerdp_settings_get_uint32(settings, FreeRDP_DesktopHeight); + pThis->m_pRailManageWindows->slotSetDesktopSize(width, height); + } + if(pThis->m_pRail) + pThis->m_pRail->Init((RailClientContext*)e->pInterface); + } #if FreeRDP_VERSION_MAJOR >= 3 else freerdp_client_OnChannelConnectedEventHandler(pContext, e); @@ -887,13 +940,21 @@ void CConnectFreeRDP::OnChannelDisconnectedEventHandler(void *context, ChannelDisconnectedEventArgs *e) { rdpContext* pContext = (rdpContext*)context; - CConnectFreeRDP* pThis = ((ClientContext*)context)->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(pContext); if (strcmp(e->name, CLIPRDR_SVC_CHANNEL_NAME) == 0) { qDebug(log) << "channel" << e->name << "disconnected"; - pThis->m_ClipBoard.UnInit((CliprdrClientContext*)e->pInterface, + pThis->m_ClipBoard.Clean((CliprdrClientContext*)e->pInterface, pThis->m_pParameter->GetClipboard()); } + else if (strcmp(e->name, RAIL_SVC_CHANNEL_NAME) == 0) + { + if(pThis->m_pRail) { + pThis->m_pRail->Clean((RailClientContext*)e->pInterface); + delete pThis->m_pRail; + pThis->m_pRail = nullptr; + } + } #if FreeRDP_VERSION_MAJOR >= 3 else freerdp_client_OnChannelDisconnectedEventHandler(pContext, e); @@ -942,8 +1003,7 @@ UINT32 CConnectFreeRDP::GetImageFormat() BOOL CConnectFreeRDP::CreateImage(rdpContext *context) { Q_ASSERT(context); - ClientContext* pContext = (ClientContext*)context; - CConnectFreeRDP* pThis = pContext->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(context); rdpGdi* gdi = context->gdi; Q_ASSERT(pThis && gdi); pThis->m_Image = QImage(gdi->primary_buffer, @@ -1158,8 +1218,8 @@ BOOL CConnectFreeRDP::cb_authenticate(freerdp* instance, char** username, qDebug(log) << Q_FUNC_INFO; if(!instance) return FALSE; - rdpContext* pContext = (rdpContext*)instance->context; - CConnectFreeRDP* pThis = ((ClientContext*)pContext)->pThis; + + CConnectFreeRDP* pThis = GetConnectFreeRDP(instance->context); if(!username || !password || !domain) return FALSE; if(*username && *password ) return TRUE; @@ -1190,8 +1250,7 @@ BOOL CConnectFreeRDP::cb_GatewayAuthenticate(freerdp *instance, if(!instance) return FALSE; - rdpContext* pContext = (rdpContext*)instance->context; - CConnectFreeRDP* pThis = ((ClientContext*)pContext)->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(instance->context); if(!username || !password || !domain) return FALSE; if(*username && *password ) return TRUE; @@ -1256,9 +1315,7 @@ DWORD CConnectFreeRDP::cb_verify_certificate_ex(freerdp *instance, { qDebug(log) << Q_FUNC_INFO; - rdpContext* pContext = (rdpContext*)instance->context; - Q_ASSERT(pContext); - CConnectFreeRDP* pThis = ((ClientContext*)pContext)->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(instance->context); Q_ASSERT(pThis); if(common_name) { @@ -1354,8 +1411,7 @@ DWORD CConnectFreeRDP::cb_verify_changed_certificate_ex(freerdp *instance, const char *old_fingerprint, DWORD flags) { qDebug(log) << Q_FUNC_INFO; - rdpContext* pContext = (rdpContext*)instance->context; - CConnectFreeRDP* pThis = ((ClientContext*)pContext)->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(instance->context); if(common_name) emit pThis->sigServerName(common_name); @@ -1486,28 +1542,30 @@ BOOL CConnectFreeRDP::cb_begin_paint(rdpContext *context) return TRUE; } -BOOL CConnectFreeRDP::UpdateBuffer(INT32 x, INT32 y, INT32 w, INT32 h) +BOOL CConnectFreeRDP::UpdateBuffer(QRect rect) +{ + QImage img = GetImage(rect); + emit sigUpdateRect(rect, img); + return TRUE; +} + +QImage CConnectFreeRDP::GetImage(QRect r) { - if(x > m_Image.width() || y > m_Image.height()) { + QImage img; + if(!m_Image.rect().contains(r)) { qCritical(log) << "The width and height out of range." - << "Image width:" << m_Image.width() - << "Image height:" << m_Image.height() - << "w:" << w << "h:" << h; - return FALSE; + << "Image:" << m_Image.rect() + << r; + return img; } - QRect rect(x, y, w, h); - QImage img = m_Image.copy(rect); - //qDebug(log) << "Image:" << rect << img.rect() << img; - emit sigUpdateRect(rect, img); - return TRUE; + return m_Image.copy(r); } BOOL CConnectFreeRDP::cb_end_paint(rdpContext *context) { //qDebug(log) << Q_FUNC_INFO; - ClientContext* pContext = (ClientContext*)context; - CConnectFreeRDP* pThis = pContext->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(context); INT32 ninvalid; HGDI_RGN cinvalid; REGION16 invalidRegion; @@ -1556,10 +1614,11 @@ BOOL CConnectFreeRDP::cb_end_paint(rdpContext *context) { extents = region16_extents(&invalidRegion); //qDebug(log) << extents->left << extents->top << extents->right << extents->bottom; - pThis->UpdateBuffer(extents->left, - extents->top, - extents->right - extents->left, - extents->bottom - extents->top); + QRect rect(extents->left, + extents->top, + extents->right - extents->left, + extents->bottom - extents->top); + pThis->UpdateBuffer(rect); } region16_uninit(&invalidRegion); @@ -1570,8 +1629,7 @@ BOOL CConnectFreeRDP::cb_end_paint(rdpContext *context) BOOL CConnectFreeRDP::cb_desktop_resize(rdpContext* context) { qDebug(log) << Q_FUNC_INFO; - ClientContext* pContext = (ClientContext*)context; - CConnectFreeRDP* pThis = pContext->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(context); rdpSettings* settings; if (!context || !context->settings) return FALSE; @@ -1585,15 +1643,13 @@ BOOL CConnectFreeRDP::cb_desktop_resize(rdpContext* context) return FALSE; emit pThis->sigSetDesktopSize(desktopWidth, desktopHeight); - pThis->UpdateBuffer(0, 0, desktopWidth, desktopHeight); + pThis->UpdateBuffer(QRect(0, 0, desktopWidth, desktopHeight)); return TRUE; } BOOL CConnectFreeRDP::cb_play_bell_sound(rdpContext *context, const PLAY_SOUND_UPDATE *play_sound) { qDebug(log) << Q_FUNC_INFO; - ClientContext* pContext = (ClientContext*)context; - CConnectFreeRDP* pThis = pContext->pThis; WINPR_UNUSED(play_sound); QApplication::beep(); return TRUE; @@ -1615,8 +1671,7 @@ BOOL CConnectFreeRDP::cb_play_bell_sound(rdpContext *context, const PLAY_SOUND_U BOOL CConnectFreeRDP::cb_keyboard_set_indicators(rdpContext *context, UINT16 led_flags) { qDebug(log) << Q_FUNC_INFO; - ClientContext* pContext = (ClientContext*)context; - CConnectFreeRDP* pThis = pContext->pThis; + CConnectFreeRDP* pThis = GetConnectFreeRDP(context); int state = CFrmViewer::LED_STATE::Unknown; @@ -1653,23 +1708,26 @@ int CConnectFreeRDP::WakeUp() return 0; } -// https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/2c1ced34-340a-46cd-be6e-fc8cab7c3b17 +// [[MS-RDPBCGR]: Remote Desktop Protocol: Basic Connectivity and Graphics Remoting](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/5073f4ed-1e93-45e1-b039-6e30c385867c) +// [2.2.8.1.1.3.1.1.3 Mouse Event (TS_POINTER_EVENT)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/2c1ced34-340a-46cd-be6e-fc8cab7c3b17) bool CConnectFreeRDP::SendMouseEvent(UINT16 flags, QPoint pos, bool isExtended) { if(m_pParameter && m_pParameter->GetOnlyView()) return true; if(!m_pContext) return false; #if FreeRDP_VERSION_MAJOR >= 3 + rdpClientContext* pClientContext = (rdpClientContext*)m_pContext; if(isExtended) freerdp_client_send_extended_button_event( - &m_pContext->Context, FALSE, flags, pos.x(), pos.y()); + pClientContext, FALSE, flags, pos.x(), pos.y()); else freerdp_client_send_button_event( - &m_pContext->Context, FALSE, flags, pos.x(), pos.y()); + pClientContext, FALSE, flags, pos.x(), pos.y()); #else - if(!m_pContext->Context.input) return false; + rdpContext* pContext = (rdpContext*)m_pContext; + if(!pContext->input) return false; return freerdp_input_send_mouse_event( - m_pContext->Context.input, flags, pos.x(), pos.y()); + pContext->input, flags, pos.x(), pos.y()); #endif return true; } @@ -1706,17 +1764,19 @@ void CConnectFreeRDP::wheelEvent(QWheelEvent *event) flags |= PTR_FLAGS_HWHEEL | p.x(); } #if FreeRDP_VERSION_MAJOR >= 3 - freerdp_client_send_wheel_event(&m_pContext->Context, flags); + rdpClientContext* pClientContext = (rdpClientContext*)m_pContext; + freerdp_client_send_wheel_event(pClientContext, flags); /* freerdp_client_send_button_event( &m_pContext->Context, FALSE, flags, pos.x(), pos.y());//*/ #else + rdpContext* pContext = (rdpContext*)m_pContext; freerdp_input_send_mouse_event( - m_pContext->Context.input, flags, pos.x(), pos.y()); + pContext->input, flags, pos.x(), pos.y()); #endif } -// https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/2c1ced34-340a-46cd-be6e-fc8cab7c3b17 +// [2.2.8.1.1.3.1.1.3 Mouse Event (TS_POINTER_EVENT)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/2c1ced34-340a-46cd-be6e-fc8cab7c3b17) void CConnectFreeRDP::mouseMoveEvent(QMouseEvent *event) { qDebug(logMouse) << Q_FUNC_INFO << event << event->buttons() << event->button(); @@ -1807,14 +1867,16 @@ void CConnectFreeRDP::keyPressEvent(QKeyEvent *event) if(m_pParameter && m_pParameter->GetOnlyView()) return; // Convert to rdp scan code freerdp/scancode.h UINT32 k = CConvertKeyCode::QtToScanCode(event->key(), event->modifiers()); - if(RDP_SCANCODE_UNKNOWN != k) + if(RDP_SCANCODE_UNKNOWN != k) { + rdpContext* pContext = (rdpContext*)m_pContext; #if FreeRDP_VERSION_MAJOR >= 3 freerdp_input_send_keyboard_event_ex( - m_pContext->Context.context.input, true, true, k); + pContext->input, true, true, k); #else freerdp_input_send_keyboard_event_ex( - m_pContext->Context.input, true, k); + pContext->input, true, k); #endif + } } void CConnectFreeRDP::keyReleaseEvent(QKeyEvent *event) @@ -1823,14 +1885,16 @@ void CConnectFreeRDP::keyReleaseEvent(QKeyEvent *event) if(!m_pContext) return; if(m_pParameter && m_pParameter->GetOnlyView()) return; UINT32 k = CConvertKeyCode::QtToScanCode(event->key(), event->modifiers()); - if(RDP_SCANCODE_UNKNOWN != k) + if(RDP_SCANCODE_UNKNOWN != k) { + rdpContext* pContext = (rdpContext*)m_pContext; #if FreeRDP_VERSION_MAJOR >= 3 freerdp_input_send_keyboard_event_ex( - m_pContext->Context.context.input, false, false, k); + pContext->input, false, false, k); #else freerdp_input_send_keyboard_event_ex( - m_pContext->Context.input, false, k); + pContext->input, false, k); #endif + } } int CConnectFreeRDP::RedirectionSound() @@ -2074,3 +2138,68 @@ void CConnectFreeRDP::slotConnectProxyServer(QString szHost, quint16 nPort) } qDebug(log) << "CConnectFreeRDP::slotConnectProxyServer end"; } + +int CConnectFreeRDP::InitRAIL() +{ + int nRet = 0; + + if(!m_pParameter || !m_pParameter->GetRemoteApplicationMode() + || m_pParameter->GetRemoteApplicationProgram().isEmpty()) + return nRet; + + rdpContext* pContext = (rdpContext*)m_pContext; + rdpSettings* settings = pContext->settings; +#if FreeRDP_VERSION_MAJOR >= 3 + const FreeRDP_Settings_Keys_Bool ids[] = +#else + const size_t ids[] = +#endif + { + FreeRDP_RemoteApplicationMode, + FreeRDP_RemoteAppLanguageBarSupported, + FreeRDP_Workarea, + FreeRDP_DisableWallpaper, + FreeRDP_DisableFullWindowDrag }; + + if (!freerdp_settings_set_string( + settings, + FreeRDP_RemoteApplicationProgram, + m_pParameter->GetRemoteApplicationProgram().toStdString().c_str())) + return -1; + + for (size_t y = 0; y < ARRAYSIZE(ids); y++) + { + if (!freerdp_settings_set_bool(settings, ids[y], TRUE)) + return -2; + } + + if (!freerdp_settings_set_string( + settings, + FreeRDP_RemoteApplicationWorkingDir, + m_pParameter->GetRemoteApplicationWorkingDir().toStdString().c_str())) + return -3; + + if (!freerdp_settings_set_string( + settings, + FreeRDP_RemoteApplicationCmdLine, + m_pParameter->GetRemoteApplicationCmdLine().toStdString().c_str())) + return -4; + + qDebug(log) << "Remote app:" << m_pParameter->GetRemoteApplicationProgram() + << m_pParameter->GetRemoteApplicationCmdLine() + << "Working dir:" + << m_pParameter->GetRemoteApplicationWorkingDir(); + return nRet; +} + +int CConnectFreeRDP::SetRAILViewer(CFrmViewer *pView) +{ + int nRet = CConnectDesktop::SetViewer(pView, true); + bool check = disconnect(this, SIGNAL(sigUpdateRect(QRect,QImage)), + pView, SLOT(slotUpdateRect(QRect,QImage))); + Q_ASSERT(check); + check = disconnect(this, SIGNAL(sigUpdateRect(QImage)), + pView, SLOT(slotUpdateRect(QImage))); + Q_ASSERT(check); + return nRet; +} diff --git a/Plugins/FreeRDP/Client/ConnectFreeRDP.h b/Plugins/FreeRDP/Client/ConnectFreeRDP.h index 588119578a..f6461f4567 100644 --- a/Plugins/FreeRDP/Client/ConnectFreeRDP.h +++ b/Plugins/FreeRDP/Client/ConnectFreeRDP.h @@ -6,6 +6,7 @@ #include "ConnectDesktop.h" #include "freerdp/freerdp.h" #include "ClipboardFreeRDP.h" +#include "RAIL.h" #include "ConnecterFreeRDP.h" #include "CursorFreeRDP.h" #include @@ -119,7 +120,8 @@ class CConnectFreeRDP : public CConnectDesktop private: UINT32 GetImageFormat(); BOOL CreateImage(rdpContext* context); - BOOL UpdateBuffer(INT32 x, INT32 y, INT32 w, INT32 h); + BOOL UpdateBuffer(QRect rect); + QImage GetImage(QRect r); int RedirectionSound(); int RedirectionMicrophone(); @@ -150,24 +152,26 @@ public Q_SLOTS: private: struct ClientContext{ - #if FreeRDP_VERSION_MAJOR >= 3 - rdpClientContext Context; - #else - rdpContext Context; - #endif + rdpClientContext clientContext; CConnectFreeRDP* pThis; }; ClientContext* m_pContext; +public: + rdpContext* GetContext(); + rdpSettings* GetSettings(); + static CConnectFreeRDP* GetConnectFreeRDP(rdpContext *context); + +private: CParameterFreeRDP* m_pParameter; RDP_CLIENT_ENTRY_POINTS m_ClientEntryPoints; QImage m_Image; - - CClipboardFreeRDP m_ClipBoard; CCursorFreeRDP m_Cursor; friend class CCursorFreeRDP; - + + CClipboardFreeRDP m_ClipBoard; + HANDLE m_writeEvent; #ifdef HAVE_LIBSSH @@ -175,6 +179,14 @@ public Q_SLOTS: #endif private Q_SLOTS: void slotConnectProxyServer(QString szHost, quint16 nPort); + +private: + CRAIL* m_pRail; + CRAILManageWindows* m_pRailManageWindows; + friend class CRAIL; + friend class CRAILManageWindows; + int InitRAIL(); + int SetRAILViewer(CFrmViewer* pView); }; #endif // CCONNECTFREERDP_H diff --git a/Plugins/FreeRDP/Client/ConnecterFreeRDP.cpp b/Plugins/FreeRDP/Client/ConnecterFreeRDP.cpp index de99142eb8..728e339f22 100644 --- a/Plugins/FreeRDP/Client/ConnecterFreeRDP.cpp +++ b/Plugins/FreeRDP/Client/ConnecterFreeRDP.cpp @@ -7,6 +7,7 @@ #include static Q_LOGGING_CATEGORY(log, "FreeRDP.Connecter") + //! [Set the parameter] CConnecterFreeRDP::CConnecterFreeRDP(CPluginClient *plugin) : CConnecterThread(plugin) @@ -43,6 +44,7 @@ int CConnecterFreeRDP::Clean() { qDebug(log) << Q_FUNC_INFO; int nRet = 0; + m_RailManageWindows.slotClean(); nRet = CConnecterThread::Clean(); return nRet; } diff --git a/Plugins/FreeRDP/Client/ConnecterFreeRDP.h b/Plugins/FreeRDP/Client/ConnecterFreeRDP.h index c703611f76..93c330c0a6 100644 --- a/Plugins/FreeRDP/Client/ConnecterFreeRDP.h +++ b/Plugins/FreeRDP/Client/ConnecterFreeRDP.h @@ -6,6 +6,8 @@ #include "ConnecterThread.h" #include "ParameterFreeRDP.h" +#include "RAILManageWindows.h" + class CConnecterFreeRDP : public CConnecterThread { Q_OBJECT @@ -13,8 +15,11 @@ class CConnecterFreeRDP : public CConnecterThread explicit CConnecterFreeRDP(CPluginClient *plugin); virtual ~CConnecterFreeRDP() override; + CRAILManageWindows m_RailManageWindows; + public: virtual qint16 Version() override; + protected: virtual QDialog *OnOpenDialogSettings(QWidget *parent) override; virtual CConnect *InstanceConnect() override; diff --git a/Plugins/FreeRDP/Client/DlgSetFreeRDP.cpp b/Plugins/FreeRDP/Client/DlgSetFreeRDP.cpp index 2fb1d242cc..31cbe2075f 100644 --- a/Plugins/FreeRDP/Client/DlgSetFreeRDP.cpp +++ b/Plugins/FreeRDP/Client/DlgSetFreeRDP.cpp @@ -48,6 +48,12 @@ CDlgSetFreeRDP::CDlgSetFreeRDP(CParameterFreeRDP *pSettings, QWidget *parent) : m_pRecordUI->SetParameter(&m_pSettings->m_Record); ui->tabWidget->addTab(m_pRecordUI, m_pRecordUI->windowIcon(), tr("Record")); + // Remote application + ui->gbRemoteApplication->setChecked(m_pSettings->GetRemoteApplicationMode()); + ui->leProgram->setText(m_pSettings->GetRemoteApplicationProgram()); + ui->leCmdLine->setText(m_pSettings->GetRemoteApplicationCmdLine()); + ui->leWorkingDir->setText(m_pSettings->GetRemoteApplicationWorkingDir()); + // Display // It has to be the first. GetScreenGeometry depends on it ui->cbAllMonitor->setChecked(m_pSettings->GetUseMultimon()); @@ -194,16 +200,30 @@ void CDlgSetFreeRDP::on_pbOk_clicked() m_pSettings->SetClipboard(ui->cbClipboard->isChecked()); m_pSettings->SetShowServerName(ui->cbShowServerName->isChecked()); + // Remote application + m_pSettings->SetRemoteApplicationMode(ui->gbRemoteApplication->isChecked()); + m_pSettings->SetRemoteApplicationProgram(ui->leProgram->text()); + m_pSettings->SetRemoteApplicationCmdLine(ui->leCmdLine->text()); + m_pSettings->SetRemoteApplicationWorkingDir(ui->leWorkingDir->text()); + // Display m_pSettings->SetUseMultimon(ui->cbAllMonitor->isChecked()); - QString szSize = ui->cbDesktopSize->currentText(); - int index = szSize.indexOf("×"); - if(-1 < index) + if(ui->rbLocalScreen->isChecked()) { - UINT32 width = szSize.left(index).toInt(); - UINT32 height = szSize.right(szSize.length() - index - 1).toInt(); + int width = GetScreenGeometry().width(); + int height = GetScreenGeometry().height(); m_pSettings->SetDesktopWidth(width); m_pSettings->SetDesktopHeight(height); + } else { + QString szSize = ui->cbDesktopSize->currentText(); + int index = szSize.indexOf("×"); + if(-1 < index) + { + UINT32 width = szSize.left(index).toInt(); + UINT32 height = szSize.right(szSize.length() - index - 1).toInt(); + m_pSettings->SetDesktopWidth(width); + m_pSettings->SetDesktopHeight(height); + } } m_pSettings->SetColorDepth(ui->cbColorDepth->currentData().toInt()); m_pSettings->SetReconnectInterval(ui->sbReconnect->value()); @@ -254,6 +274,11 @@ void CDlgSetFreeRDP::on_pbCancel_clicked() reject(); } +void CDlgSetFreeRDP::on_rbLocalScreen_toggled(bool checked) +{ + on_rbLocalScreen_clicked(checked); +} + void CDlgSetFreeRDP::on_rbLocalScreen_clicked(bool checked) { if(!checked) return; @@ -404,7 +429,6 @@ int CDlgSetFreeRDP::InsertDesktopSize(int width, int height) return 0; } - void CDlgSetFreeRDP::on_rbAudioDisable_toggled(bool checked) { ui->leRdpSnd->setEnabled(!checked); @@ -482,3 +506,18 @@ void CDlgSetFreeRDP::on_cbAllMonitor_stateChanged(int arg1) { on_rbLocalScreen_clicked(true); } + +void CDlgSetFreeRDP::on_gbRemoteApplication_clicked(bool checked) +{ + if(checked) + ui->rbLocalScreen->setChecked(true); + EnableDesktopSize(!checked); +} + +int CDlgSetFreeRDP::EnableDesktopSize(bool bEnable) +{ + ui->rbSelect->setEnabled(bEnable); + ui->cbDesktopSize->setEnabled(bEnable); + ui->pbSizeEdit->setEnabled(bEnable); + return 0; +} diff --git a/Plugins/FreeRDP/Client/DlgSetFreeRDP.h b/Plugins/FreeRDP/Client/DlgSetFreeRDP.h index 52a5fcf102..55aff19c07 100644 --- a/Plugins/FreeRDP/Client/DlgSetFreeRDP.h +++ b/Plugins/FreeRDP/Client/DlgSetFreeRDP.h @@ -18,30 +18,34 @@ class CDlgSetFreeRDP; class CDlgSetFreeRDP : public QDialog { Q_OBJECT - + public: explicit CDlgSetFreeRDP(CParameterFreeRDP* pSettings, QWidget *parent = nullptr); ~CDlgSetFreeRDP(); - + private slots: void on_pbOk_clicked(); void on_pbCancel_clicked(); void on_rbLocalScreen_clicked(bool checked); + void on_rbLocalScreen_toggled(bool checked); void on_rbAudioDisable_toggled(bool checked); void on_rbAudioLocal_toggled(bool checked); void on_rbAudioRemote_toggled(bool checked); - + void on_pbSizeEdit_clicked(); - + void on_pbDriveClearAll_clicked(); void slotSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected); - + void on_cbAllMonitor_stateChanged(int arg1); - + + void on_gbRemoteApplication_clicked(bool checked); + private: QRect GetScreenGeometry(); + int EnableDesktopSize(bool bEnable); int UpdateDesktopSize(); int InsertDesktopSize(QString szSize); int InsertDesktopSize(int width, int height); diff --git a/Plugins/FreeRDP/Client/DlgSetFreeRDP.ui b/Plugins/FreeRDP/Client/DlgSetFreeRDP.ui index 37fb5cfc06..9e757c524c 100644 --- a/Plugins/FreeRDP/Client/DlgSetFreeRDP.ui +++ b/Plugins/FreeRDP/Client/DlgSetFreeRDP.ui @@ -7,7 +7,7 @@ 0 0 532 - 573 + 579 @@ -17,38 +17,7 @@ :/image/App:/image/App - - - - - - - Qt::Orientation::Horizontal - - - - 40 - 20 - - - - - - - - OK(&O) - - - - - - - Cancel(&C) - - - - - + @@ -61,44 +30,43 @@ Server - - - + + + - - - - 0 - 0 - - + - Reconnect count: + Name: - - - - 0 - 0 - - + - <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> + Connecter name - Reconnect count + Connecter name - <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> + Connecter name - - 99999 + + + + + + + + + + Domain: + + + @@ -122,45 +90,103 @@ - - + + - - - Domain: + + + + 0 + 0 + - - - - - - - - - - - - Name: + Reconnect count: - + + + + 0 + 0 + + - Connecter name + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - Connecter name + Reconnect count - Connecter name + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> + + + 99999 + + + Remote application + + + true + + + false + + + + + + + + Program: + + + + + + + + + + + + + + Parameters + + + + + + + + + + + + + + Working directory: + + + + + + + + + + + + Qt::Orientation::Vertical @@ -281,25 +307,6 @@ Local resource - - - - Printer: Redirection the local printers to the remote computer - - - Printer: Redirection the local printers to the remote computer - - - Printer: Redirection the local printers to the remote computer - - - Printer: Redirection the local printers to the remote computer - - - true - - - @@ -316,55 +323,6 @@ - - - - Redirect the following selected drives to the remote computer - - - Redirect the following selected drives to the remote computer - - - Redirect the following selected drives to the remote computer - - - Drive: Redirect the following selected drives to the remote computer - - - - - - QAbstractItemView::SelectionMode::MultiSelection - - - - - - - - - - 0 - 0 - - - - Selected: - - - - - - - Clear all - - - - - - - - @@ -432,10 +390,122 @@ + + + + Redirect the following selected drives to the remote computer + + + Redirect the following selected drives to the remote computer + + + Redirect the following selected drives to the remote computer + + + Drive: Redirect the following selected drives to the remote computer + + + + + + QAbstractItemView::SelectionMode::MultiSelection + + + + + + + + + + 0 + 0 + + + + Selected: + + + + + + + Clear all + + + + + + + + + + + + Printer: Redirection the local printers to the remote computer + + + Printer: Redirection the local printers to the remote computer + + + Printer: Redirection the local printers to the remote computer + + + Printer: Redirection the local printers to the remote computer + + + true + + + + + + + Qt::Orientation::Vertical + + + + 20 + 40 + + + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + OK(&O) + + + + + + + Cancel(&C) + + + + + diff --git a/Plugins/FreeRDP/Client/ParameterFreeRDP.cpp b/Plugins/FreeRDP/Client/ParameterFreeRDP.cpp index b35c750d4c..fdde882821 100644 --- a/Plugins/FreeRDP/Client/ParameterFreeRDP.cpp +++ b/Plugins/FreeRDP/Client/ParameterFreeRDP.cpp @@ -1,21 +1,28 @@ #include "ParameterFreeRDP.h" #include +#include +#include CParameterFreeRDP::CParameterFreeRDP(QObject *parent) - : CParameterBase(parent), - m_nWidth(1024), - m_nHeight(768), - m_nColorDepth(32), - m_bUseMultimon(false), - m_nReconnectInterval(0), - m_bShowVerifyDiaglog(true), - m_bRedirectionPrinter(false), - m_nRedirectionSound(RedirecionSoundType::Disable), - m_bRedirectionMicrophone(false), - m_Proxy(this) + : CParameterBase(parent) + , m_nWidth(1024) + , m_nHeight(768) + , m_nColorDepth(32) + , m_bUseMultimon(false) + , m_nReconnectInterval(0) + , m_bShowVerifyDiaglog(true) + , m_bRedirectionPrinter(false) + , m_nRedirectionSound(RedirecionSoundType::Disable) + , m_bRedirectionMicrophone(false) + , m_RemoteApplicationMode(false) + , m_Proxy(this) { m_Net.SetPort(3389); + QScreen* screen = QApplication::primaryScreen(); + m_nWidth = screen->virtualGeometry().width(); + m_nHeight = screen->virtualGeometry().height(); + m_Proxy.SetType( QList() << CParameterProxy::TYPE::None << CParameterProxy::TYPE::SSHTunnel); @@ -61,6 +68,18 @@ int CParameterFreeRDP::OnLoad(QSettings &set) SetRedirectionMicrophoneParameters(set.value("Redirection/Microphone/Parameters", GetRedirectionMicrophoneParameters()).toString()); SetRedirectionDrives(set.value("Redirection/Drive").toStringList()); + + set.beginGroup("RemoteApplication"); + SetRemoteApplicationMode(set.value("Mode", GetRemoteApplicationMode()).toBool()); + SetRemoteApplicationProgram(set.value("Program", GetRemoteApplicationProgram()).toString()); + SetRemoteApplicationName(set.value("Name", GetRemoteApplicationName()).toString()); + SetRemoteApplicationIcon(set.value("Icon", GetRemoteApplicationIcon()).toString()); + SetRemoteApplicationFile(set.value("File", GetRemoteApplicationFile()).toString()); + SetRemoteApplicationGuid(set.value("Guid", GetRemoteApplicationGuid()).toString()); + SetRemoteApplicationCmdLine(set.value("CmdLine", GetRemoteApplicationCmdLine()).toString()); + SetRemoteApplicationWorkingDir(set.value("WorkDir", GetRemoteApplicationWorkingDir()).toString()); + set.endGroup(); + set.endGroup(); return 0; @@ -86,6 +105,18 @@ int CParameterFreeRDP::OnSave(QSettings &set) set.setValue("Redirection/Microphone", GetRedirectionMicrophone()); set.setValue("Redirection/Microphone/Parameters", GetRedirectionMicrophoneParameters()); set.setValue("Redirection/Drive", GetRedirectionDrives()); + + set.beginGroup("RemoteApplication"); + set.setValue("Mode", GetRemoteApplicationMode()); + set.setValue("Program", GetRemoteApplicationProgram()); + set.setValue("Name", GetRemoteApplicationName()); + set.setValue("Icon", GetRemoteApplicationIcon()); + set.setValue("File", GetRemoteApplicationFile()); + set.setValue("Guid", GetRemoteApplicationGuid()); + set.setValue("CmdLine", GetRemoteApplicationCmdLine()); + set.setValue("WorkDir", GetRemoteApplicationWorkingDir()); + set.endGroup(); + set.endGroup(); return 0; @@ -259,6 +290,86 @@ void CParameterFreeRDP::SetRedirectionMicrophoneParameters(const QString &newRed emit sigRedirectionMicrophoneParametersChanged(); } +bool CParameterFreeRDP::GetRemoteApplicationMode() const +{ + return m_RemoteApplicationMode; +} + +void CParameterFreeRDP::SetRemoteApplicationMode(bool newRemoteApplicationMode) +{ + m_RemoteApplicationMode = newRemoteApplicationMode; +} + +QString CParameterFreeRDP::GetRemoteApplicationProgram() const +{ + return m_RemoteApplicationProgram; +} + +void CParameterFreeRDP::SetRemoteApplicationProgram(const QString &newRemoteApplicationProgram) +{ + m_RemoteApplicationProgram = newRemoteApplicationProgram; +} + +QString CParameterFreeRDP::GetRemoteApplicationName() const +{ + return m_RemoteApplicationName; +} + +void CParameterFreeRDP::SetRemoteApplicationName(const QString &newRemoteApplicationName) +{ + m_RemoteApplicationName = newRemoteApplicationName; +} + +QString CParameterFreeRDP::GetRemoteApplicationIcon() const +{ + return m_RemoteApplicationIcon; +} + +void CParameterFreeRDP::SetRemoteApplicationIcon(const QString &newRemoteApplicationIcon) +{ + m_RemoteApplicationIcon = newRemoteApplicationIcon; +} + +QString CParameterFreeRDP::GetRemoteApplicationFile() const +{ + return m_RemoteApplicationFile; +} + +void CParameterFreeRDP::SetRemoteApplicationFile(const QString &newRemoteApplicationFile) +{ + m_RemoteApplicationFile = newRemoteApplicationFile; +} + +QString CParameterFreeRDP::GetRemoteApplicationGuid() const +{ + return m_RemoteApplicationGuid; +} + +void CParameterFreeRDP::SetRemoteApplicationGuid(const QString &newRemoteApplicationGuid) +{ + m_RemoteApplicationGuid = newRemoteApplicationGuid; +} + +QString CParameterFreeRDP::GetRemoteApplicationCmdLine() const +{ + return m_RemoteApplicationCmdLine; +} + +void CParameterFreeRDP::SetRemoteApplicationCmdLine(const QString &newRemoteApplicationCmdLine) +{ + m_RemoteApplicationCmdLine = newRemoteApplicationCmdLine; +} + +QString CParameterFreeRDP::GetRemoteApplicationWorkingDir() const +{ + return m_RemoteApplicationWorkingDir; +} + +void CParameterFreeRDP::SetRemoteApplicationWorkingDir(const QString &newRemoteApplicationWorkingDir) +{ + m_RemoteApplicationWorkingDir = newRemoteApplicationWorkingDir; +} + void CParameterFreeRDP::SetDomain(const QString& szDomain) { if(m_szDomain == szDomain) diff --git a/Plugins/FreeRDP/Client/ParameterFreeRDP.h b/Plugins/FreeRDP/Client/ParameterFreeRDP.h index 413ee35c5e..954eb5d5b4 100644 --- a/Plugins/FreeRDP/Client/ParameterFreeRDP.h +++ b/Plugins/FreeRDP/Client/ParameterFreeRDP.h @@ -70,6 +70,23 @@ class CParameterFreeRDP : public CParameterBase CParameterProxy m_Proxy; + bool GetRemoteApplicationMode() const; + void SetRemoteApplicationMode(bool newRemoteApplicationMode); + QString GetRemoteApplicationProgram() const; + void SetRemoteApplicationProgram(const QString &newRemoteApplicationProgram); + QString GetRemoteApplicationName() const; + void SetRemoteApplicationName(const QString &newRemoteApplicationName); + QString GetRemoteApplicationIcon() const; + void SetRemoteApplicationIcon(const QString &newRemoteApplicationIcon); + QString GetRemoteApplicationFile() const; + void SetRemoteApplicationFile(const QString &newRemoteApplicationFile); + QString GetRemoteApplicationGuid() const; + void SetRemoteApplicationGuid(const QString &newRemoteApplicationGuid); + QString GetRemoteApplicationCmdLine() const; + void SetRemoteApplicationCmdLine(const QString &newRemoteApplicationCmdLine); + QString GetRemoteApplicationWorkingDir() const; + void SetRemoteApplicationWorkingDir(const QString &newRemoteApplicationWorkingDir); + signals: void sigReconnectIntervalChanged(); @@ -99,7 +116,16 @@ class CParameterFreeRDP : public CParameterBase QString m_szRedirectionMicrophoneParameters; QStringList m_lstRedirectionDrives; Q_PROPERTY(QString RedirectionMicrophoneParameters READ GetRedirectionMicrophoneParameters WRITE SetRedirectionMicrophoneParameters NOTIFY sigRedirectionMicrophoneParametersChanged) - + + bool m_RemoteApplicationMode; + QString m_RemoteApplicationProgram; + QString m_RemoteApplicationName; + QString m_RemoteApplicationIcon; + QString m_RemoteApplicationFile; + QString m_RemoteApplicationGuid; + QString m_RemoteApplicationCmdLine; + QString m_RemoteApplicationWorkingDir; + }; #endif // CPARAMETERFREERDP_H diff --git a/Plugins/FreeRDP/Client/RAIL.cpp b/Plugins/FreeRDP/Client/RAIL.cpp new file mode 100644 index 0000000000..64bff8340c --- /dev/null +++ b/Plugins/FreeRDP/Client/RAIL.cpp @@ -0,0 +1,919 @@ +// Author: Kang Lin + +/*! See: + * - [[MS-RDPERP]: Remote Desktop Protocol: Remote Programs Virtual Channel Extension](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/83275957-2d0e-4c52-88d1-1b4c998c6bec) + * - [2.2.1.3.1.2.1 New or Existing Window](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/2d36758d-3fb5-4823-8c4b-9b81a9c8ff3e) + * - [2.2.1.3.1.2.2 Window Icon](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/6e2ee1eb-33d1-4ad9-a3c2-cc6fb2e4ad4e) + * - [2.2.1.3.2.2.1 New or Existing Notification Icons](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/54be5b64-200a-4b7d-a57a-20e523bcf3ab) + * - [3.1.1.1 Server State Machine](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/247135fb-6f7e-43b8-a988-f88ccdac12e7) + * + * - Overview of RemoteApp: https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc755055(v=ws.11)?redirectedfrom=MSDN + * - RAIL exec error: execResult=RAIL_EXEC_E_NOT_IN_ALLOWLIST NtError=0x15. + * See: https://github.com/FreeRDP/FreeRDP/issues/998 + * this is a configuration problem on your server see #595 on how to add a command to the allow list or + * set "fAllowUnlistedRemotePrograms" to 1 in "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" to allow all commands. + */ + +#include "winpr/string.h" +#include "RAIL.h" +#include "RAILEvent.h" + +#include "ConnectFreeRDP.h" + +#include +#include + +static Q_LOGGING_CATEGORY(log, "FreeRDP.Rail") +static Q_LOGGING_CATEGORY(logInfoWin, "FreeRDP.Rail.Info.Window") +static Q_LOGGING_CATEGORY(logInfoIcon, "FreeRDP.Rail.Info.Icon") + +int g_CRailInfo = qRegisterMetaType("CRailInfo"); +int g_QSharedPointer_CRailInfo = qRegisterMetaType >("QSharedPointer"); + +QString GetString(RAIL_UNICODE_STRING s) +{ + QString szText; + const WCHAR* str = (const WCHAR*)s.string; + char* pText = NULL; + + if (s.length == 0) + { + return szText; + } +#if FreeRDP_VERSION_MAJOR >= 3 + pText = ConvertWCharNToUtf8Alloc( + str, s.length / sizeof(WCHAR), NULL); +#else + if(ConvertFromUnicode( + CP_UTF8, 0, str, + s.length / 2, &pText, 0, NULL, + NULL) < 1) { + qCritical(log) << "failed to convert window title"; + return szText; + } +#endif + if(pText) { + szText = pText; + free(pText); + } else + qCritical(log) << "failed to convert string"; + + return szText; +} + +typedef struct +{ + UINT32 style; + const char* name; + BOOL multi; +} WINDOW_STYLE; + +static const WINDOW_STYLE WINDOW_STYLES[] = { + { WS_BORDER, "WS_BORDER", FALSE }, + { WS_CAPTION, "WS_CAPTION", FALSE }, + { WS_CHILD, "WS_CHILD", FALSE }, + { WS_CLIPCHILDREN, "WS_CLIPCHILDREN", FALSE }, + { WS_CLIPSIBLINGS, "WS_CLIPSIBLINGS", FALSE }, + { WS_DISABLED, "WS_DISABLED", FALSE }, + { WS_DLGFRAME, "WS_DLGFRAME", FALSE }, + { WS_GROUP, "WS_GROUP", FALSE }, + { WS_HSCROLL, "WS_HSCROLL", FALSE }, + { WS_ICONIC, "WS_ICONIC", FALSE }, + { WS_MAXIMIZE, "WS_MAXIMIZE", FALSE }, + { WS_MAXIMIZEBOX, "WS_MAXIMIZEBOX", FALSE }, + { WS_MINIMIZE, "WS_MINIMIZE", FALSE }, + { WS_MINIMIZEBOX, "WS_MINIMIZEBOX", FALSE }, + { WS_OVERLAPPED, "WS_OVERLAPPED", FALSE }, + { WS_OVERLAPPEDWINDOW, "WS_OVERLAPPEDWINDOW", TRUE }, + { WS_POPUP, "WS_POPUP", FALSE }, + { WS_POPUPWINDOW, "WS_POPUPWINDOW", TRUE }, + { WS_SIZEBOX, "WS_SIZEBOX", FALSE }, + { WS_SYSMENU, "WS_SYSMENU", FALSE }, + { WS_TABSTOP, "WS_TABSTOP", FALSE }, + { WS_THICKFRAME, "WS_THICKFRAME", FALSE }, + { WS_VISIBLE, "WS_VISIBLE", FALSE } }; + +static const WINDOW_STYLE EXTENDED_WINDOW_STYLES[] = { + { WS_EX_ACCEPTFILES, "WS_EX_ACCEPTFILES", FALSE }, + { WS_EX_APPWINDOW, "WS_EX_APPWINDOW", FALSE }, + { WS_EX_CLIENTEDGE, "WS_EX_CLIENTEDGE", FALSE }, + { WS_EX_COMPOSITED, "WS_EX_COMPOSITED", FALSE }, + { WS_EX_CONTEXTHELP, "WS_EX_CONTEXTHELP", FALSE }, + { WS_EX_CONTROLPARENT, "WS_EX_CONTROLPARENT", FALSE }, + { WS_EX_DLGMODALFRAME, "WS_EX_DLGMODALFRAME", FALSE }, + { WS_EX_LAYERED, "WS_EX_LAYERED", FALSE }, + { WS_EX_LAYOUTRTL, "WS_EX_LAYOUTRTL", FALSE }, + { WS_EX_LEFT, "WS_EX_LEFT", FALSE }, + { WS_EX_LEFTSCROLLBAR, "WS_EX_LEFTSCROLLBAR", FALSE }, + { WS_EX_LTRREADING, "WS_EX_LTRREADING", FALSE }, + { WS_EX_MDICHILD, "WS_EX_MDICHILD", FALSE }, + { WS_EX_NOACTIVATE, "WS_EX_NOACTIVATE", FALSE }, + { WS_EX_NOINHERITLAYOUT, "WS_EX_NOINHERITLAYOUT", FALSE }, + { WS_EX_NOPARENTNOTIFY, "WS_EX_NOPARENTNOTIFY", FALSE }, + { WS_EX_OVERLAPPEDWINDOW, "WS_EX_OVERLAPPEDWINDOW", TRUE }, + { WS_EX_PALETTEWINDOW, "WS_EX_PALETTEWINDOW", TRUE }, + { WS_EX_RIGHT, "WS_EX_RIGHT", FALSE }, + { WS_EX_RIGHTSCROLLBAR, "WS_EX_RIGHTSCROLLBAR", FALSE }, + { WS_EX_RTLREADING, "WS_EX_RTLREADING", FALSE }, + { WS_EX_STATICEDGE, "WS_EX_STATICEDGE", FALSE }, + { WS_EX_TOOLWINDOW, "WS_EX_TOOLWINDOW", FALSE }, + { WS_EX_TOPMOST, "WS_EX_TOPMOST", FALSE }, + { WS_EX_TRANSPARENT, "WS_EX_TRANSPARENT", FALSE }, + { WS_EX_WINDOWEDGE, "WS_EX_WINDOWEDGE", FALSE } +}; + +static void PrintWindowStyles(UINT32 style) +{ + qDebug(logInfoWin, "\tWindow Styles: {"); + + for (size_t i = 0; i < ARRAYSIZE(WINDOW_STYLES); i++) + { + if (style & WINDOW_STYLES[i].style) + { + if (WINDOW_STYLES[i].multi) + { + if ((style & WINDOW_STYLES[i].style) != WINDOW_STYLES[i].style) + continue; + } + + qDebug(logInfoWin, "\t\t%s", WINDOW_STYLES[i].name); + } + } + + qDebug(logInfoWin, "\t}"); +} + +static void PrintExtendedWindowStyles(UINT32 style) +{ + qDebug(logInfoWin, "\tExtended Window Styles: {"); + for (size_t i = 0; i < ARRAYSIZE(EXTENDED_WINDOW_STYLES); i++) + { + if (style & EXTENDED_WINDOW_STYLES[i].style) + { + if (EXTENDED_WINDOW_STYLES[i].multi) + { + if ((style & EXTENDED_WINDOW_STYLES[i].style) != EXTENDED_WINDOW_STYLES[i].style) + continue; + } + + qDebug(logInfoWin, "\t\t%s", EXTENDED_WINDOW_STYLES[i].name); + } + } + qDebug(logInfoWin, "\t}"); +} + +static void PrintRailWindowState(const WINDOW_ORDER_INFO* orderInfo, + const WINDOW_STATE_ORDER* windowState) +{ + if (orderInfo->fieldFlags & WINDOW_ORDER_STATE_NEW) + qDebug(logInfoWin, "WindowCreate: WindowId: 0x%08X", orderInfo->windowId); + else + qDebug(logInfoWin, "WindowUpdate: WindowId: 0x%08X", orderInfo->windowId); + + qDebug(logInfoWin, "{"); + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_OWNER) + { + qDebug(logInfoWin, "\tOwnerWindowId: 0x%08X", windowState->ownerWindowId); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_STYLE) + { + qDebug(logInfoWin, "\tStyle: 0x%08X ExtendedStyle: 0x%08X", + windowState->style, windowState->extendedStyle); + PrintWindowStyles(windowState->style); + PrintExtendedWindowStyles(windowState->extendedStyle); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_SHOW) + { + qDebug(logInfoWin, "\tShowState: %u", windowState->showState); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_TITLE) + { + QString szTitle = GetString(windowState->titleInfo); + qDebug(logInfoWin, "\tTitleInfo: %s (length = %hu)", + szTitle.toStdString().c_str(), + windowState->titleInfo.length); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_CLIENT_AREA_OFFSET) + { + qDebug(logInfoWin, "\tClientOffsetX: %d ClientOffsetY: %d", + windowState->clientOffsetX, windowState->clientOffsetY); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_CLIENT_AREA_SIZE) + { + qDebug(logInfoWin, "\tClientAreaWidth: %u ClientAreaHeight: %u", + windowState->clientAreaWidth, windowState->clientAreaHeight); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_RP_CONTENT) + { + qDebug(logInfoWin, "\tRPContent: %u", windowState->RPContent); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_ROOT_PARENT) + { + qDebug(logInfoWin, "\tRootParentHandle: 0x%08X", + windowState->rootParentHandle); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_OFFSET) + { + qDebug(logInfoWin, "\tWindowOffsetX: %d WindowOffsetY: %d", + windowState->windowOffsetX, windowState->windowOffsetY); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_CLIENT_DELTA) + { + qDebug(logInfoWin, "\tWindowClientDeltaX: %d WindowClientDeltaY: %d", + windowState->windowClientDeltaX, windowState->windowClientDeltaY); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_SIZE) + { + qDebug(logInfoWin, "\tWindowWidth: %u WindowHeight: %u", + windowState->windowWidth, windowState->windowHeight); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_RECTS) + { + RECTANGLE_16* rect; + qDebug(logInfoWin, "\tnumWindowRects: %u", windowState->numWindowRects); + + for (UINT32 index = 0; index < windowState->numWindowRects; index++) + { + rect = &windowState->windowRects[index]; + qDebug(logInfoWin, "\twindowRect[%u]: left: %hu top: %hu right: %hu bottom: %hu", index, + rect->left, rect->top, rect->right, rect->bottom); + } + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_VIS_OFFSET) + { + qDebug(logInfoWin, "\tvisibileOffsetX: %d visibleOffsetY: %d", + windowState->visibleOffsetX, windowState->visibleOffsetY); + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_VISIBILITY) + { + RECTANGLE_16* rect; + qDebug(logInfoWin, "\tnumVisibilityRects: %u", + windowState->numVisibilityRects); + + for (UINT32 index = 0; index < windowState->numVisibilityRects; index++) + { + rect = &windowState->visibilityRects[index]; + qDebug(logInfoWin, "\tvisibilityRect[%u]: left: %hu top: %hu right: %hu bottom: %hu", index, + rect->left, rect->top, rect->right, rect->bottom); + } + } + + qDebug(logInfoWin, "}"); +} + +//! - [2.2.1.3.1.2.2 Window Icon](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/6e2ee1eb-33d1-4ad9-a3c2-cc6fb2e4ad4e) +//! - [2.2.1.3.1.2.3 Cached Icon](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/4e42886d-b7e6-4f27-aad6-da2e297edf17) +//! - [2.2.1.3.2.2.1 New or Existing Notification Icons](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/54be5b64-200a-4b7d-a57a-20e523bcf3ab) +static void PrintRailIconInfo(const WINDOW_ORDER_INFO* orderInfo, const ICON_INFO* iconInfo) +{ + qDebug(logInfoIcon, "ICON_INFO"); + qDebug(logInfoIcon, "{"); + qDebug(logInfoIcon, "\tbigIcon: %s", + (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_ICON_BIG) ? "true" : "false"); + qDebug(logInfoIcon, "\tcacheEntry; 0x%08X", iconInfo->cacheEntry); + qDebug(logInfoIcon, "\tcacheId: 0x%08X", iconInfo->cacheId); + qDebug(logInfoIcon, "\tbpp: %u", iconInfo->bpp); + qDebug(logInfoIcon, "\twidth: %u", iconInfo->width); + qDebug(logInfoIcon, "\theight: %u", iconInfo->height); + qDebug(logInfoIcon, "\tcbColorTable: %u", iconInfo->cbColorTable); + qDebug(logInfoIcon, "\tcbBitsMask: %u", iconInfo->cbBitsMask); + qDebug(logInfoIcon, "\tcbBitsColor: %u", iconInfo->cbBitsColor); + qDebug(logInfoIcon, "\tcolorTable: %p", (void*)iconInfo->colorTable); + qDebug(logInfoIcon, "\tbitsMask: %p", (void*)iconInfo->bitsMask); + qDebug(logInfoIcon, "\tbitsColor: %p", (void*)iconInfo->bitsColor); + qDebug(logInfoIcon, "}"); +} + +CRAILInfo::CRAILInfo() + : m_WindowId(0) + , m_FieldFlags(0) + , m_NotifyIconId(0) + , m_OwnerWindowId(0) + , m_Style(0) + , m_ExtendedStyle(0) + , m_ShowState(0) + , m_WindowOffsetX(0) + , m_WindowOffsetY(0) + , m_WindowWidth(0) + , m_WindowHeight(0) + , m_VisibleOffsetX(0) + , m_VisibleOffsetY(0) + , m_TaskbarButton(0) + , m_AppBarState(0) + , m_AppBarEdge(0) +{ +} + +//! [2.2.1.3.1.2.1 New or Existing Window](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/2d36758d-3fb5-4823-8c4b-9b81a9c8ff3e) +CRAILInfo::CRAILInfo(const WINDOW_ORDER_INFO *orderInfo, + const WINDOW_STATE_ORDER *windowState) + : CRAILInfo() +{ + if(!orderInfo || !windowState) return; + + m_WindowId = orderInfo->windowId; + m_FieldFlags = orderInfo->fieldFlags; + m_NotifyIconId = orderInfo->notifyIconId; + if(WINDOW_ORDER_FIELD_OWNER & m_FieldFlags) + m_OwnerWindowId = windowState->ownerWindowId; + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_STYLE) { + m_Style = windowState->style; + m_ExtendedStyle = windowState->extendedStyle; + } + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_SHOW) + m_ShowState = windowState->showState; + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_TITLE) { + m_szTitle = GetString(windowState->titleInfo); + } + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_OFFSET) { + m_WindowOffsetX = windowState->windowOffsetX; + m_WindowOffsetY = windowState->windowOffsetY; + } + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_SIZE) { + m_WindowWidth = windowState->windowWidth; + m_WindowHeight = windowState->windowHeight; + } + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_RECTS) { + for(int i = 0; i < windowState->numWindowRects; i++) + { + RECTANGLE_16* p = &windowState->windowRects[i]; + QRect r(p->left, p->top, p->right - p->left, p->bottom - p->top); + m_Updates.push_back(r); + } + } + + if(WINDOW_ORDER_FIELD_VIS_OFFSET & orderInfo->fieldFlags) { + m_VisibleOffsetX = windowState->visibleOffsetX; + m_VisibleOffsetY = windowState->visibleOffsetY; + } + + if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_VISIBILITY) { + for(int i = 0; i < windowState->numVisibilityRects; i++) { + RECTANGLE_16* p = &windowState->visibilityRects[i]; + QRect r(p->left, p->top, p->right - p->left, p->bottom - p->top); + m_Visibilities.push_back(r); + } + } + + if(WINDOW_ORDER_FIELD_TASKBAR_BUTTON & orderInfo->fieldFlags) + m_TaskbarButton = windowState->TaskbarButton; + + if(WINDOW_ORDER_FIELD_APPBAR_STATE & orderInfo->fieldFlags) { + m_AppBarState = windowState->AppBarState; + } + + if(WINDOW_ORDER_FIELD_APPBAR_EDGE & orderInfo->fieldFlags) { + m_AppBarEdge = windowState->AppBarEdge; + } +} + +CRAILInfo::CRAILInfo(const WINDOW_ORDER_INFO *orderInfo) + : CRAILInfo() +{ + if(!orderInfo) return; + + m_WindowId = orderInfo->windowId; + m_FieldFlags = orderInfo->fieldFlags; + m_NotifyIconId = orderInfo->notifyIconId; +} + +CRAILInfo::CRAILInfo(const CRAILInfo &info) +{ + m_WindowId = info.m_WindowId; + m_FieldFlags = info.m_FieldFlags; + m_NotifyIconId = info.m_NotifyIconId; + m_OwnerWindowId = info.m_OwnerWindowId; + m_Style = info.m_Style; + m_ExtendedStyle = info.m_ExtendedStyle; + m_ShowState = info.m_ShowState; + m_szTitle = info.m_szTitle; + m_WindowOffsetX = info.m_WindowOffsetX; + m_WindowOffsetY = info.m_WindowOffsetY; + m_WindowWidth = info.m_WindowWidth; + m_WindowHeight = info.m_WindowHeight; + m_Updates = info.m_Updates; + m_VisibleOffsetX = info.m_VisibleOffsetX; + m_VisibleOffsetY = info.m_VisibleOffsetY; + m_Visibilities = info.m_Visibilities; + m_TaskbarButton = info.m_TaskbarButton; + m_AppBarState = info.m_AppBarState; + m_AppBarEdge = info.m_AppBarEdge; +} + +CRAIL::CRAIL(CConnectFreeRDP* pConnect, QObject *parent) + : QObject{parent} + , m_pConnect(pConnect) + , m_pContext(nullptr) + , m_nMaxIconCache(0) + , m_nMaxIconCacheEntry(0) +{ + qDebug(log) << "CRail::CRail()"; +} + +CRAIL::~CRAIL() +{ + qDebug(log) << "CRail::~CRail()"; +} + +int CRAIL::Init(RailClientContext *pContext) +{ + qDebug(log) << "CRail::Init()"; + if(!pContext) { + qCritical(log) << Q_FUNC_INFO << "The parameter is null"; + return 0; + } + m_pContext = pContext; + pContext->custom = this; + // [3.1.1.1 Server State Machine](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/247135fb-6f7e-43b8-a988-f88ccdac12e7) + pContext->ServerExecuteResult = cbServerExecuteResult; + pContext->ServerSystemParam = cbServerSystemParam; + pContext->ServerHandshake = cbServerHandshake; + pContext->ServerHandshakeEx = cbServerHandshakeEx; + pContext->ServerLocalMoveSize = cbServerLocalMoveSize; + pContext->ServerMinMaxInfo = cbServerMinMaxInfo; + pContext->ServerLanguageBarInfo = cbServerLanguageBarInfo; + pContext->ServerGetAppIdResponse = cbServerGetAppIdResponse; + + Q_ASSERT(m_pConnect && m_pConnect->m_pContext); + rdpContext* p = (rdpContext*)m_pConnect->m_pContext; + RegisterUpdateCallbacks(p->update); + auto settings = p->settings; + m_nMaxIconCache = freerdp_settings_get_uint32( + settings, FreeRDP_RemoteAppNumIconCaches); + m_nMaxIconCacheEntry = + freerdp_settings_get_uint32(settings, + FreeRDP_RemoteAppNumIconCacheEntries); + for(int i = 0; i < m_nMaxIconCacheEntry; i++) { + QVector image; + for(int j = 0; j < m_nMaxIconCache; j++) { + image.push_back(QImage()); + } + m_IconCacheEntry.push_back(image); + } + + return 0; +} + +int CRAIL::Clean(RailClientContext *pContext) +{ + qDebug(log) << "CRail::Clean()"; + disconnect(m_pConnect); + m_IconCacheEntry.clear(); + return 0; +} + +static const char* error_code_names[] = { "RAIL_EXEC_S_OK", + "RAIL_EXEC_E_HOOK_NOT_LOADED", + "RAIL_EXEC_E_DECODE_FAILED", + "RAIL_EXEC_E_NOT_IN_ALLOWLIST", + "RAIL_EXEC_E_FILE_NOT_FOUND", + "RAIL_EXEC_E_FAIL", + "RAIL_EXEC_E_SESSION_LOCKED" }; + + +UINT CRAIL::cbServerExecuteResult( + RailClientContext *context, + const RAIL_EXEC_RESULT_ORDER *execResult) +{ + qDebug(log) << Q_FUNC_INFO; + if(RAIL_EXEC_S_OK != execResult->execResult) + { + QString szErr = tr("Exec remote application fail") + " [" + + error_code_names[execResult->execResult] + + "(" + QString::number(execResult->rawResult) + + ")]: " + GetString(execResult->exeOrFile); + qCritical(log) << szErr << "flags:" << execResult->flags; + CRAIL* pRail = (CRAIL*)context->custom; + rdpContext* pContext = (rdpContext*)pRail->m_pConnect->m_pContext; +#if FreeRDP_VERSION_MAJOR >= 3 + freerdp_abort_connect_context(pContext); +#else + freerdp_abort_connect(pContext->instance); +#endif + emit pRail->m_pConnect->sigShowMessageBox( + tr("Exec remote application fail"), szErr, QMessageBox::Critical); + } + return CHANNEL_RC_OK; +} + +UINT CRAIL::cbServerSystemParam( + RailClientContext *context, + const RAIL_SYSPARAM_ORDER *sysparam) +{ + qDebug(log) << Q_FUNC_INFO; + return CHANNEL_RC_OK; +} + +//! [[MS-RDPERP] 2.2.2.3.1 Client Execute PDU (TS_RAIL_ORDER_EXEC)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/98a6e3c3-c2a9-42cc-ad91-0d9a6c211138) +UINT CRAIL::ServerStartCmd(RailClientContext* context) +{ + UINT status; + char argsAndFile[520] = { 0 }; + RAIL_EXEC_ORDER exec = { 0 }; + RAIL_SYSPARAM_ORDER sysparam = { 0 }; + RAIL_CLIENT_STATUS_ORDER clientStatus = { 0 }; + + rdpContext* pContext = (rdpContext*)m_pConnect->m_pContext; + rdpSettings* settings = pContext->settings; + + clientStatus.flags = TS_RAIL_CLIENTSTATUS_ALLOWLOCALMOVESIZE; + + if(freerdp_settings_get_bool(settings, FreeRDP_AutoReconnectionEnabled)) + clientStatus.flags |= TS_RAIL_CLIENTSTATUS_AUTORECONNECT; + + clientStatus.flags |= TS_RAIL_CLIENTSTATUS_ZORDER_SYNC; + clientStatus.flags |= TS_RAIL_CLIENTSTATUS_WINDOW_RESIZE_MARGIN_SUPPORTED; + clientStatus.flags |= TS_RAIL_CLIENTSTATUS_APPBAR_REMOTING_SUPPORTED; + clientStatus.flags |= TS_RAIL_CLIENTSTATUS_POWER_DISPLAY_REQUEST_SUPPORTED; + clientStatus.flags |= TS_RAIL_CLIENTSTATUS_BIDIRECTIONAL_CLOAK_SUPPORTED; + status = context->ClientInformation(context, &clientStatus); + + if (status != CHANNEL_RC_OK) + return status; + + if(freerdp_settings_get_bool(settings, + FreeRDP_RemoteAppLanguageBarSupported)) + { + RAIL_LANGBAR_INFO_ORDER langBarInfo; + langBarInfo.languageBarStatus = 0x00000008; /* TF_SFT_HIDDEN */ + status = context->ClientLanguageBarInfo(context, &langBarInfo); + + /* We want the language bar, but the server might not support it. */ + switch (status) + { + case CHANNEL_RC_OK: + case ERROR_BAD_CONFIGURATION: + break; + default: + return status; + } + } + + sysparam.params = 0; + sysparam.params |= SPI_MASK_SET_HIGH_CONTRAST; + sysparam.highContrast.colorScheme.string = NULL; + sysparam.highContrast.colorScheme.length = 0; + sysparam.highContrast.flags = 0x7E; + sysparam.params |= SPI_MASK_SET_MOUSE_BUTTON_SWAP; + sysparam.mouseButtonSwap = FALSE; + sysparam.params |= SPI_MASK_SET_KEYBOARD_PREF; + sysparam.keyboardPref = FALSE; + sysparam.params |= SPI_MASK_SET_DRAG_FULL_WINDOWS; + sysparam.dragFullWindows = FALSE; + sysparam.params |= SPI_MASK_SET_KEYBOARD_CUES; + sysparam.keyboardCues = FALSE; + sysparam.params |= SPI_MASK_SET_WORK_AREA; + sysparam.workArea.left = 0; + sysparam.workArea.top = 0; + sysparam.workArea.right = + freerdp_settings_get_uint32(settings, FreeRDP_DesktopWidth); + sysparam.workArea.bottom = + freerdp_settings_get_uint32(settings, FreeRDP_DesktopHeight); + sysparam.dragFullWindows = FALSE; + status = context->ClientSystemParam(context, &sysparam); + + if (status != CHANNEL_RC_OK) + return status; + + exec.RemoteApplicationProgram = (char*) + freerdp_settings_get_string(settings, FreeRDP_RemoteApplicationProgram); + exec.RemoteApplicationWorkingDir = (char*) + freerdp_settings_get_string(settings, FreeRDP_ShellWorkingDirectory); + const char* RemoteApplicationFile = + freerdp_settings_get_string(settings, FreeRDP_RemoteApplicationFile); + const char* RemoteApplicationCmdLine = + freerdp_settings_get_string(settings, FreeRDP_RemoteApplicationCmdLine); + if (RemoteApplicationFile && RemoteApplicationCmdLine) + { + (void)_snprintf(argsAndFile, ARRAYSIZE(argsAndFile), "%s %s", RemoteApplicationCmdLine, + RemoteApplicationFile); + exec.RemoteApplicationArguments = argsAndFile; + } + else if (RemoteApplicationFile) + exec.RemoteApplicationArguments = (char*)RemoteApplicationFile; + else + exec.RemoteApplicationArguments = (char*)RemoteApplicationCmdLine; + return context->ClientExecute(context, &exec); +} + +UINT CRAIL::cbServerHandshake( + RailClientContext *context, + const RAIL_HANDSHAKE_ORDER *handshake) +{ + qDebug(log) << Q_FUNC_INFO; +#if FreeRDP_VERSION_MAJOR >= 3 + return client_rail_server_start_cmd(context); +#else + CRAIL* pRail = (CRAIL*)context->custom; + return pRail->ServerStartCmd(context); +#endif +} + +UINT CRAIL::cbServerHandshakeEx( + RailClientContext *context, + const RAIL_HANDSHAKE_EX_ORDER *handshakeEx) +{ + qDebug(log) << Q_FUNC_INFO; +#if FreeRDP_VERSION_MAJOR >= 3 + return client_rail_server_start_cmd(context); +#else + CRAIL* pRail = (CRAIL*)context->custom; + return pRail->ServerStartCmd(context); +#endif +} + +UINT CRAIL::cbServerLocalMoveSize( + RailClientContext *context, + const RAIL_LOCALMOVESIZE_ORDER *localMoveSize) +{ + qDebug(log) << Q_FUNC_INFO << WINDOW_ID(localMoveSize->windowId) + << localMoveSize->isMoveSizeStart + << localMoveSize->moveSizeType + << localMoveSize->posX << localMoveSize->posY; + return CHANNEL_RC_OK; +} + +UINT CRAIL::cbServerMinMaxInfo( + RailClientContext *context, + const RAIL_MINMAXINFO_ORDER *minMaxInfo) +{ + qDebug(log) << Q_FUNC_INFO << WINDOW_ID(minMaxInfo->windowId) << "Max:" + << minMaxInfo->maxPosX << minMaxInfo->maxPosY + << minMaxInfo->maxWidth << minMaxInfo->maxHeight + << minMaxInfo->maxTrackWidth << minMaxInfo->maxTrackHeight + << "min:" << minMaxInfo->minTrackWidth << minMaxInfo->minTrackHeight; + return CHANNEL_RC_OK; +} + +UINT CRAIL::cbServerLanguageBarInfo( + RailClientContext *context, + const RAIL_LANGBAR_INFO_ORDER *langBarInfo) +{ + qDebug(log) << Q_FUNC_INFO << HEX(langBarInfo->languageBarStatus); + return CHANNEL_RC_OK; +} + +UINT CRAIL::cbServerGetAppIdResponse( + RailClientContext *context, + const RAIL_GET_APPID_RESP_ORDER *getAppIdResp) +{ + qDebug(log) << Q_FUNC_INFO + << WINDOW_ID(getAppIdResp->windowId); + return CHANNEL_RC_OK; +} + +void CRAIL::RegisterUpdateCallbacks(rdpUpdate* update) +{ + rdpWindowUpdate* window = update->window; + window->WindowCreate = cbWindowCreate; + window->WindowUpdate = cbWindowUpdate; + window->WindowDelete = cbWindowDelete; + window->WindowIcon = cbWindowIcon; + window->WindowCachedIcon = cbWindowCachedIcon; + window->NotifyIconCreate = cbNotifyIconCreate; + window->NotifyIconUpdate = cbNotifyIconUpdate; + window->NotifyIconDelete = cbNotifyIconDelete; + window->MonitoredDesktop = cbMonitoredDesktop; + window->NonMonitoredDesktop = cbNonMonitoredDesktop; +} + +CRAIL* CRAIL::GetRail(rdpContext *context) +{ + CConnectFreeRDP::ClientContext* pContext = + (CConnectFreeRDP::ClientContext*) context; + if(!pContext) + return nullptr; + CConnectFreeRDP* pConnect = pContext->pThis; + if(!pConnect) + return nullptr; + CRAIL* pRail = pConnect->m_pRail; + return pRail; +} + +BOOL CRAIL::cbWindowCreate(rdpContext *context, + const WINDOW_ORDER_INFO *orderInfo, + const WINDOW_STATE_ORDER *windowState) +{ + qDebug(log) << Q_FUNC_INFO; + PrintRailWindowState(orderInfo, windowState); + CRAIL* pRail = GetRail(context); + if(!pRail) { + qCritical(log) << "GetRail fail"; + return FALSE; + } + QSharedPointer info(new CRAILInfo(orderInfo, windowState)); + emit pRail->sigWindow(info); + return TRUE; +} + +BOOL CRAIL::cbWindowUpdate(rdpContext *context, + const WINDOW_ORDER_INFO *orderInfo, + const WINDOW_STATE_ORDER *windowState) +{ + qDebug(log) << Q_FUNC_INFO; + PrintRailWindowState(orderInfo, windowState); + CRAIL* pRail = GetRail(context); + if(!pRail) { + qCritical(log) << "GetRail fail"; + return FALSE; + } + QSharedPointer info(new CRAILInfo(orderInfo, windowState)); + emit pRail->sigWindow(info); + return TRUE; +} + +BOOL CRAIL::cbWindowDelete(rdpContext *context, + const WINDOW_ORDER_INFO *orderInfo) +{ + qDebug(log) << Q_FUNC_INFO; + CRAIL* pRail = GetRail(context); + if(!pRail) { + qCritical(log) << "GetRail fail"; + return FALSE; + } + QSharedPointer info(new CRAILInfo(orderInfo)); + emit pRail->sigWindowDelete(info); + return TRUE; +} + +QImage CRAIL::ConvertIcon(const ICON_INFO *iconInfo) +{ + QImage img(iconInfo->width, iconInfo->height, QImage::Format_ARGB32); + if (!freerdp_image_copy_from_icon_data( + img.bits(), PIXEL_FORMAT_BGRA32, 0, 0, 0, + iconInfo->width, + iconInfo->height, iconInfo->bitsColor, + iconInfo->cbBitsColor, iconInfo->bitsMask, + iconInfo->cbBitsMask, iconInfo->colorTable, + iconInfo->cbColorTable, iconInfo->bpp)) + qCritical(log) << "Copy icon fail"; + return img; +} + +BOOL CRAIL::cbWindowIcon(rdpContext *context, + const WINDOW_ORDER_INFO *orderInfo, + const WINDOW_ICON_ORDER *windowIcon) +{ + qDebug(log) << Q_FUNC_INFO; + PrintRailIconInfo(orderInfo, windowIcon->iconInfo); + CRAIL* pRail = GetRail(context); + if(!pRail) return TRUE; + QSharedPointer info(new CRAILInfo(orderInfo)); + QImage img = pRail->ConvertIcon(windowIcon->iconInfo); + if(!img.isNull()) { + if(windowIcon->iconInfo->cacheId < pRail->m_nMaxIconCache + && windowIcon->iconInfo->cacheEntry < pRail->m_nMaxIconCacheEntry) + pRail->m_IconCacheEntry[windowIcon->iconInfo->cacheEntry][windowIcon->iconInfo->cacheId] = img; + emit pRail->sigWindowIcon(info, img); + } + return TRUE; +} + +BOOL CRAIL::cbWindowCachedIcon( + rdpContext *context, + const WINDOW_ORDER_INFO *orderInfo, + const WINDOW_CACHED_ICON_ORDER *windowCachedIcon) +{ + qDebug(log) << Q_FUNC_INFO; + CRAIL* pRail = GetRail(context); + if(!pRail) return TRUE; + QSharedPointer info(new CRAILInfo(orderInfo)); + CACHED_ICON_INFO icon = windowCachedIcon->cachedIcon; + if(icon.cacheId < pRail->m_nMaxIconCache + && icon.cacheEntry < pRail->m_nMaxIconCacheEntry) { + QImage img = pRail->m_IconCacheEntry[icon.cacheEntry][icon.cacheId]; + if(!img.isNull()) + emit pRail->sigWindowIcon(info, img); + } else { + qCritical(log) << "The icon is in cache:" + << icon.cacheEntry << icon.cacheId + << pRail->m_IconCacheEntry << pRail->m_nMaxIconCache; + } + + return TRUE; +} + +BOOL CRAIL::cbNotifyIconCreate( + rdpContext* context, + const WINDOW_ORDER_INFO* orderInfo, + const NOTIFY_ICON_STATE_ORDER* notifyIconState) +{ + qDebug(log) << Q_FUNC_INFO; + const ICON_INFO* iconInfo = &(notifyIconState->icon); + PrintRailIconInfo(orderInfo, iconInfo); + return TRUE; +} + +BOOL CRAIL::cbNotifyIconUpdate( + rdpContext *context, + const WINDOW_ORDER_INFO *orderInfo, + const NOTIFY_ICON_STATE_ORDER *notifyIconState) +{ + qDebug(log) << Q_FUNC_INFO; + const ICON_INFO* iconInfo = &(notifyIconState->icon); + PrintRailIconInfo(orderInfo, iconInfo); + return TRUE; +} + +BOOL CRAIL::cbNotifyIconDelete( + rdpContext *context, + const WINDOW_ORDER_INFO *orderInfo) +{ + qDebug(log) << Q_FUNC_INFO; + return TRUE; +} + +BOOL CRAIL::cbMonitoredDesktop( + rdpContext *context, + const WINDOW_ORDER_INFO *orderInfo, + const MONITORED_DESKTOP_ORDER *monitoredDesktop) +{ + qDebug(log) << Q_FUNC_INFO; + return TRUE; +} + +BOOL CRAIL::cbNonMonitoredDesktop(rdpContext *context, + const WINDOW_ORDER_INFO *orderInfo) +{ + qDebug(log) << Q_FUNC_INFO; + return TRUE; +} + +bool CRAIL::event(QEvent *event) +{ + qDebug(log) << "CRAIL::event" << event; + CRAILEvent* e = static_cast(event); + switch (event->type()) { + case CRAILEvent::Activate: + onClientActivate(e->m_WindowId, e->m_bActivate); + break; + case CRAILEvent::SystemCommand: + onClientSystemCommand(e->m_WindowId, e->m_SystemCommand); + default: + return QObject::event(event); + } + + event->accept(); + return true; +} + +/*! + * - [MS-RDPERP 2.2.2.6.1 Client Activate PDU (TS_RAIL_ORDER_ACTIVATE)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/8765a613-1659-4423-beb3-a6cd3b4808d8) + */ +int CRAIL::onClientActivate(UINT32 windowId, bool bEnable) +{ + if (windowId > UINT32_MAX) + return -1; + RAIL_ACTIVATE_ORDER activate = { 0 }; + WINPR_ASSERT(windowId <= UINT32_MAX); + activate.windowId = windowId; + activate.enabled = bEnable; + m_pContext->ClientActivate(m_pContext, &activate); + return 0; +} + +void CRAIL::slotClientActivate(UINT32 windowId, bool bEnable) +{ + CRAILEvent *e = new CRAILEvent(CRAILEvent::Activate); + e->m_WindowId = windowId; + e->m_bActivate = bEnable; + QApplication::postEvent(this, e); + m_pConnect->WakeUp(); +} + +/*! + * - [MS-RDPERP 2.2.2.6.3 Client System Command PDU (TS_RAIL_ORDER_SYSCOMMAND)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/cdda9345-2f82-4e38-8814-1a932b934241) + */ +int CRAIL::onClientSystemCommand(UINT32 windowId, UINT16 command) +{ + if (windowId > UINT32_MAX) + return -1; + RAIL_SYSCOMMAND_ORDER syscommand = { 0 }; + syscommand.windowId = windowId; + syscommand.command = command; + m_pContext->ClientSystemCommand(m_pContext, &syscommand); + return 0; +} + +void CRAIL::slotClientSystemCommand(UINT32 windowId, UINT16 command) +{ + CRAILEvent *e = new CRAILEvent(CRAILEvent::SystemCommand); + e->m_WindowId = windowId; + e->m_SystemCommand = command; + QApplication::postEvent(this, e); + m_pConnect->WakeUp(); +} diff --git a/Plugins/FreeRDP/Client/RAIL.h b/Plugins/FreeRDP/Client/RAIL.h new file mode 100644 index 0000000000..15dfb1d4d5 --- /dev/null +++ b/Plugins/FreeRDP/Client/RAIL.h @@ -0,0 +1,236 @@ +// Author: Kang Lin + +#ifndef RAIL_H +#define RAIL_H + +#include +#include +#include + +#include +#include +#include +#include + +#define HEX(x) ("0x" + QString("%1").arg((x), 8, 16, QLatin1Char('0')).toUpper()) +#define WINDOW_ID(x) ("WindowId: 0x" + QString("%1").arg((x), 8, 16, QLatin1Char('0')).toUpper()) + +class CConnectFreeRDP; +class CRAILManageWindows; + +#if defined(_MSC_VER) + #include +#else + #define SW_HIDE 0 + #define SW_SHOWNORMAL 1 + #define SW_NORMAL 1 + #define SW_SHOWMINIMIZED 2 + #define SW_SHOWMAXIMIZED 3 + #define SW_MAXIMIZE 3 + #define SW_SHOWNOACTIVATE 4 + #define SW_SHOW 5 + #define SW_MINIMIZE 6 + #define SW_SHOWMINNOACTIVE 7 + #define SW_SHOWNA 8 + #define SW_RESTORE 9 + #define SW_SHOWDEFAULT 10 + #define SW_FORCEMINIMIZE 11 + #define SW_MAX 11 +#endif + +/*! + * \~chinese + * \brief 远程应用程序信息 + * + * \~englis + * \brief Remote application information + * + * \~ + * \see [2.2.1.3.1.2.1 New or Existing Window](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/2d36758d-3fb5-4823-8c4b-9b81a9c8ff3e) + */ +class CRAILInfo { + Q_GADGET +public: + CRAILInfo(); + CRAILInfo(const WINDOW_ORDER_INFO *orderInfo, + const WINDOW_STATE_ORDER *windowState); + CRAILInfo(const WINDOW_ORDER_INFO *orderInfo); + CRAILInfo(const CRAILInfo &info); + + UINT32 m_WindowId; + UINT32 m_FieldFlags; + UINT32 m_NotifyIconId; + + UINT32 m_OwnerWindowId; + UINT32 m_Style; + UINT32 m_ExtendedStyle; + /*! + * | Value | Meaning | + * |:------|:------------------------------------------------| + * | 0x00 |Do not show the window. | + * | 0x02 |Show the window minimized. | + * | 0x03 |Show the window maximized. | + * | 0x05 |Show the window in its current size and position.| + */ + UINT32 m_ShowState; + + QString m_szTitle; + INT32 m_WindowOffsetX; + INT32 m_WindowOffsetY; + UINT32 m_WindowWidth; + UINT32 m_WindowHeight; + + QVector m_Updates; + INT32 m_VisibleOffsetX; + INT32 m_VisibleOffsetY; + QVector m_Visibilities; + + /*! If this field is set to 0x00, + * then the client SHOULD add a tab to the taskbar button group for the window, + * if supported by the operating system, + * instead of adding a new taskbar button for the window. + * If this field is set to 0x01, then the client SHOULD remove the tab + * from the taskbar button group for the window. + */ + BYTE m_TaskbarButton; + + /*! If this field is set to 0x01, then the window SHOULD be registered as an application desktop toolbar. + * If this field is set to 0x00, then the application desktop toolbar SHOULD be deregistered. + */ + UINT8 m_AppBarState; + /*! The value of this field indicates the edge to which the application desktop toolbar SHOULD be anchored. + * This field MUST be set to one of the following possible values. + * | Value | Meaning | + * |:------|:-------------------------| + * | 0x00 |Anchor to the left edge. | + * | 0x02 |Anchor to the top edge. | + * | 0x03 |Anchor to the right edge. | + * | 0x05 |Anchor to the bottom edge.| + */ + UINT8 m_AppBarEdge; +}; + +/*! + * \~chinese 本地集成的远程应用程序(RAIL) + * \~english Remote applications integrated locally (RAIL) + */ +class CRAIL : public QObject +{ + Q_OBJECT + +public: + explicit CRAIL(CConnectFreeRDP* pConnect, QObject *parent = nullptr); + virtual ~CRAIL(); + + int Init(RailClientContext* pContext); + int Clean(RailClientContext* pContext); + + static CRAIL* GetRail(rdpContext *context); + +Q_SIGNALS: + void sigWindow(QSharedPointer info); + void sigWindowDelete(QSharedPointer info); + void sigWindowIcon(QSharedPointer info, QImage img); + +private: + static UINT cbServerExecuteResult( + RailClientContext* context, + const RAIL_EXEC_RESULT_ORDER* execResult); + static UINT cbServerSystemParam( + RailClientContext* context, + const RAIL_SYSPARAM_ORDER* sysparam + ); + static UINT cbServerHandshake( + RailClientContext* context, + const RAIL_HANDSHAKE_ORDER* handshake + ); + static UINT cbServerHandshakeEx( + RailClientContext* context, + const RAIL_HANDSHAKE_EX_ORDER* handshakeEx + ); + static UINT cbServerLocalMoveSize( + RailClientContext* context, + const RAIL_LOCALMOVESIZE_ORDER* localMoveSize + ); + static UINT cbServerMinMaxInfo( + RailClientContext* context, + const RAIL_MINMAXINFO_ORDER* minMaxInfo + ); + static UINT cbServerLanguageBarInfo( + RailClientContext* context, + const RAIL_LANGBAR_INFO_ORDER* langBarInfo + ); + static UINT cbServerGetAppIdResponse( + RailClientContext* context, + const RAIL_GET_APPID_RESP_ORDER* getAppIdResp + ); + + UINT ServerStartCmd(RailClientContext *context); + void RegisterUpdateCallbacks(rdpUpdate* update); + + QImage ConvertIcon(const ICON_INFO* iconInfo); + + static BOOL cbWindowCreate(rdpContext* context, + const WINDOW_ORDER_INFO* orderInfo, + const WINDOW_STATE_ORDER* windowState); + static BOOL cbWindowUpdate(rdpContext* context, + const WINDOW_ORDER_INFO* orderInfo, + const WINDOW_STATE_ORDER* windowState); + static BOOL cbWindowDelete(rdpContext* context, + const WINDOW_ORDER_INFO* orderInfo); + static BOOL cbWindowIcon(rdpContext* context, + const WINDOW_ORDER_INFO* orderInfo, + const WINDOW_ICON_ORDER* windowIcon); + static BOOL cbWindowCachedIcon( + rdpContext* context, + const WINDOW_ORDER_INFO* orderInfo, + const WINDOW_CACHED_ICON_ORDER* windowCachedIcon); + static BOOL cbNotifyIconCreate( + rdpContext* context, + const WINDOW_ORDER_INFO* orderInfo, + const NOTIFY_ICON_STATE_ORDER* notifyIconState); + static BOOL cbNotifyIconUpdate( + rdpContext* context, + const WINDOW_ORDER_INFO* orderInfo, + const NOTIFY_ICON_STATE_ORDER* notifyIconState); + static BOOL cbNotifyIconDelete( + rdpContext* context, const WINDOW_ORDER_INFO* orderInfo); + static BOOL cbMonitoredDesktop( + rdpContext* context, const WINDOW_ORDER_INFO* orderInfo, + const MONITORED_DESKTOP_ORDER* monitoredDesktop); + static BOOL cbNonMonitoredDesktop( + rdpContext* context, const WINDOW_ORDER_INFO* orderInfo); + +private: + CConnectFreeRDP* m_pConnect; + RailClientContext* m_pContext; + int m_nMaxIconCache; + int m_nMaxIconCacheEntry; + QVector > m_IconCacheEntry; + +public: + virtual bool event(QEvent *event) override; +public Q_SLOTS: + /*! + * - [MS-RDPERP 2.2.2.6.1 Client Activate PDU (TS_RAIL_ORDER_ACTIVATE)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/8765a613-1659-4423-beb3-a6cd3b4808d8) + */ + void slotClientActivate(UINT32 windowId, bool bEnable); + /*! + * - [MS-RDPERP 2.2.2.6.3 Client System Command PDU (TS_RAIL_ORDER_SYSCOMMAND)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/cdda9345-2f82-4e38-8814-1a932b934241) + * + * #define SC_SIZE 0xF000 + * #define SC_MOVE 0xF010 + * #define SC_MINIMIZE 0xF020 + * #define SC_MAXIMIZE 0xF030 + * #define SC_CLOSE 0xF060 + * #define SC_KEYMENU 0xF100 + * #define SC_RESTORE 0xF120 + * #define SC_DEFAULT 0xF160 + */ + void slotClientSystemCommand(UINT32 windowId, UINT16 command); +private: + int onClientActivate(UINT32 windowId, bool bEnable); + int onClientSystemCommand(UINT32 windowId, UINT16 command); +}; + +#endif // RAIL_H diff --git a/Plugins/FreeRDP/Client/RAILEvent.cpp b/Plugins/FreeRDP/Client/RAILEvent.cpp new file mode 100644 index 0000000000..065097e9ba --- /dev/null +++ b/Plugins/FreeRDP/Client/RAILEvent.cpp @@ -0,0 +1,10 @@ +// Author: Kang Lin + +#include "RAILEvent.h" + +CRAILEvent::CRAILEvent(RAIL_TYPE type) + : QEvent((Type)type) + , m_WindowId(0) + , m_bActivate(false) + , m_SystemCommand(0) +{} diff --git a/Plugins/FreeRDP/Client/RAILEvent.h b/Plugins/FreeRDP/Client/RAILEvent.h new file mode 100644 index 0000000000..5c8572a2ee --- /dev/null +++ b/Plugins/FreeRDP/Client/RAILEvent.h @@ -0,0 +1,25 @@ +// Author: Kang Lin + +#ifndef RAILEVENT_H +#define RAILEVENT_H + +#include +#include "RAIL.h" + +class CRAILEvent : public QEvent +{ +public: + enum RAIL_TYPE { + Activate = QEvent::User + 2, + SystemCommand, + }; + Q_ENUM(RAIL_TYPE) + + explicit CRAILEvent(RAIL_TYPE type); + + UINT32 m_WindowId; + bool m_bActivate; + UINT16 m_SystemCommand; +}; + +#endif // RAILEVENT_H diff --git a/Plugins/FreeRDP/Client/RAILManageWindows.cpp b/Plugins/FreeRDP/Client/RAILManageWindows.cpp new file mode 100644 index 0000000000..8929858266 --- /dev/null +++ b/Plugins/FreeRDP/Client/RAILManageWindows.cpp @@ -0,0 +1,320 @@ +// Author: Kang Lin + +#include "RAILManageWindows.h" +#include "ConnectFreeRDP.h" +#include +#include + +static Q_LOGGING_CATEGORY(log, "FreeRDP.Rail.ManageWindows") +static Q_LOGGING_CATEGORY(logWin, "FreeRDP.Rail.ManageWindows.Window") +static Q_LOGGING_CATEGORY(logUpdate, "FreeRDP.Rail.Update.Window") +static Q_LOGGING_CATEGORY(logInvalid, "FreeRDP.Rail.Update.Invalid") + +CRAILManageWindows::CRAILManageWindows(QObject *parent) + : QObject{parent} + , m_pRail(nullptr) +{} + +void CRAILManageWindows::slotClean() +{ + foreach(CRAILWindow* pWin, m_Windows) { + if(pWin) { + pWin->close(); + pWin->deleteLater(); + } + } + m_Windows.clear(); + disconnect(); + m_pRail = nullptr; + return; +} + +int CRAILManageWindows::Connect(CRAIL *pRail) +{ + bool check = false; + m_pRail = pRail; + Q_ASSERT(pRail && m_pConnect); + check = connect(pRail, &CRAIL::sigWindow, + this, &CRAILManageWindows::slotWindow); + Q_ASSERT(check); + check = connect(pRail, &CRAIL::sigWindowDelete, + this, &CRAILManageWindows::slotWindowDelete); + Q_ASSERT(check); + check = connect(pRail, &CRAIL::sigWindowIcon, + this, &CRAILManageWindows::slotWindowIcon); + Q_ASSERT(check); + check = connect(m_pConnect, SIGNAL(sigUpdateRect(const QRect&, const QImage&)), + this, SLOT(slotInvalidateRect(const QRect&, const QImage&))); + Q_ASSERT(check); + check = connect(m_pConnect, &CConnectFreeRDP::sigSetDesktopSize, + this, &CRAILManageWindows::slotSetDesktopSize); + Q_ASSERT(check); + return 0; +} + +/* + * [2.2.1.3.1.2.1 New or Existing Window](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/2d36758d-3fb5-4823-8c4b-9b81a9c8ff3e) + */ +void CRAILManageWindows::slotWindow(QSharedPointer info) +{ + qDebug(log) << Q_FUNC_INFO; + if(!m_pRail) return; + + UINT32 fieldFlags = info->m_FieldFlags; + UINT32 windowId = info->m_WindowId; + + CRAILWindow* pWin = nullptr; + auto it = m_Windows.find(windowId); + if(m_Windows.end() != it) + pWin = m_Windows.value(windowId); + if (!pWin && (fieldFlags & WINDOW_ORDER_STATE_NEW)) + { + qDebug(log) << "Create:" << WINDOW_ID(windowId) << "Owner:" << HEX(info->m_OwnerWindowId); + if(0 != info->m_OwnerWindowId) { + auto itParent = m_Windows.find(info->m_OwnerWindowId); + if(m_Windows.end() == it) + pWin = new CRAILWindow(); + else + pWin = new CRAILWindow(itParent.value()); + } else + pWin = new CRAILWindow(); + if(!pWin) { + qCritical(log) << "new CRailWindow() fail"; + return; + } + pWin->SetWindowId(windowId); + pWin->m_pRail = m_pRail; + pWin->m_pManage = this; + m_Windows.insert(windowId, pWin); + int nRet = 0; + if(m_pConnect) { + //qDebug(log) << "m_pConnect->SetRailViewer:" << pWin; + nRet = m_pConnect->SetRAILViewer(pWin); + if(nRet) { + qCritical(log) << "Connect SetViewer fail" << nRet; + return; + } + //TODO: + bool check = connect( + pWin, &CRAILWindow::destroyed, + this, [&](QObject * obj){ + CRAILWindow* pW = qobject_cast(obj); + if(pW) + WindowDelete(pW->GetWindowId()); + }); + Q_ASSERT(check); + } + } else { + qDebug(log) << "Update:" << WINDOW_ID(windowId) << "Owner:" << HEX(info->m_OwnerWindowId); + } + + if(!pWin) { + qCritical(log) << "Get window fail"; + return; + } + + /* Update Parameters */ + + if (fieldFlags & WINDOW_ORDER_FIELD_WND_SIZE) { + pWin->SetWindowWidth(info->m_WindowWidth); + pWin->SetWindowHeight(info->m_WindowHeight); + pWin->resize(pWin->GetWindowWidth(), pWin->GetWindowHeight()); + pWin->slotSetDesktopSize(pWin->GetWindowWidth(), pWin->GetWindowHeight()); + } + + if (fieldFlags & WINDOW_ORDER_FIELD_WND_OFFSET) { + pWin->SetWindowOffsetX(info->m_WindowOffsetX); + pWin->SetWindowOffsetY(info->m_WindowOffsetY); + + /* 现在很多 linux 用 wayland 作为桌面显示,这样会出现一个问题, + 由于没有坐标系统,导致无边框窗体无法拖动和定位(即 QWidge::move 失效)。 + (一般是 Qt6 开始强制默认优先用 wayland ,之前 Qt5 是默认有 xcb 则优先用 xcb), + 你需要在 main 函数最前面加一行 qputenv("QT_QPA_PLATFORM", "xcb"); + */ + pWin->move(pWin->GetWindowOffsetX(), pWin->GetWindowOffsetY()); + } + + if (fieldFlags & WINDOW_ORDER_FIELD_SHOW) + { + pWin->Show(info->m_ShowState); + } + + if (fieldFlags & WINDOW_ORDER_FIELD_RESIZE_MARGIN_X) + { + } + + if (fieldFlags & WINDOW_ORDER_FIELD_RESIZE_MARGIN_Y) + { + } + + if (fieldFlags & WINDOW_ORDER_FIELD_OWNER) + { + } + + // [Window Styles](https://learn.microsoft.com/windows/win32/winmsg/window-styles] + if (fieldFlags & WINDOW_ORDER_FIELD_STYLE) + { + } + + if (fieldFlags & WINDOW_ORDER_FIELD_TITLE) + { + pWin->setWindowTitle(info->m_szTitle); + } + + if (fieldFlags & WINDOW_ORDER_FIELD_CLIENT_AREA_OFFSET) + { + + } + + if (fieldFlags & WINDOW_ORDER_FIELD_CLIENT_AREA_SIZE) + { + + } + + if (fieldFlags & WINDOW_ORDER_FIELD_WND_CLIENT_DELTA) + { + + } + + if (fieldFlags & WINDOW_ORDER_FIELD_WND_RECTS) + { + UpdateWindow(pWin, info.data(), false); + } + + if (fieldFlags & WINDOW_ORDER_FIELD_VIS_OFFSET) + { + pWin->SetVisibleOffsetX(info->m_VisibleOffsetX); + pWin->SetVisibleOffsetY(info->m_VisibleOffsetY); + } + + if (fieldFlags & WINDOW_ORDER_FIELD_VISIBILITY) + { + //UpdateWindow(pWin, info.data(), true); + } +} + +void CRAILManageWindows::slotWindowDelete(QSharedPointer info) +{ + if(!m_pRail) return; + UINT32 windowId = info->m_WindowId; + WindowDelete(windowId); +} + +void CRAILManageWindows::WindowDelete(UINT32 windowId) +{ + auto it = m_Windows.find(windowId); + if(m_Windows.end() == it) + return; + CRAILWindow* pWin = it.value(); + m_Windows.remove(windowId); + if(pWin) { + pWin->SetServerExit(true); + pWin->close(); + pWin->deleteLater(); + } +} + +void CRAILManageWindows::slotWindowIcon(QSharedPointer info, QImage img) +{ + UINT32 flags = info->m_FieldFlags; + if(!(WINDOW_ORDER_ICON & flags)) + return; + + auto it = m_Windows.find(info->m_WindowId); + if(m_Windows.end() == it) + return; + CRAILWindow* pWin = it.value(); + if(pWin) + pWin->setWindowIcon(QIcon(QPixmap::fromImage(img))); +} + +int CRAILManageWindows::UpdateWindow( + CRAILWindow *pWin, CRAILInfo *info, bool bVisiable) +{ + if (info->m_Updates.isEmpty()) { + qDebug(logUpdate) << "UpdateWindow: the update rects is empty"; + return 0; + } + + if(SW_HIDE == pWin->GetShowState() + || SW_SHOWMINIMIZED == pWin->GetShowState()) { + qDebug(logUpdate) << WINDOW_ID(pWin->GetWindowId()) << "Widow is hide" + << pWin->GetShowState(); + return 0; + } + + QVector *rects; + if(bVisiable) + rects = &info->m_Visibilities; + else + rects = &info->m_Updates; + foreach (QRect ro, *rects) { + UINT32 x = info->m_WindowOffsetX; + UINT32 y = info->m_WindowOffsetY; + if(bVisiable) + { + x = info->m_VisibleOffsetX; + y = info->m_VisibleOffsetY; + } + QRect rImg(ro.x() + x, ro.y() + y, ro.width(), ro.height()); + QRect ri = rImg.intersected(QRect(m_Desktop)); + if(!ri.isValid()) { + qDebug(logUpdate) << WINDOW_ID(pWin->GetWindowId()) + << "intersecte invalid" << ri; + continue; + } + QImage img = m_pConnect->GetImage(ri); + QRect ru = QRect(ri.x() - x, ri.y() - y, ri.width(), ri.height()); + pWin->slotUpdateRect(ru, img); + qDebug(logUpdate) << WINDOW_ID(pWin->GetWindowId()) + << "Origin:" << ro << "Image:" << rImg + << "Intersecte:" << ri << "Update:" << ru; + } + return 0; +} + +void CRAILManageWindows::slotInvalidateRect(const QRect &rect, const QImage &img) +{ + if(!rect.isValid() || img.isNull()) { + qCritical(logInvalid) << "The parameters is null"; + return; + } + foreach(auto pWin, m_Windows) { + if(!pWin) { + qWarning(logInvalid) << "The window is null"; + continue; + } + if(SW_HIDE == pWin->GetShowState() + || SW_SHOWMINIMIZED == pWin->GetShowState()) { + qDebug(logInvalid) << WINDOW_ID(pWin->GetWindowId()) + << "Widow is hide" + << pWin->GetShowState(); + continue; + } + + QRect ri; + const QRect rw(pWin->GetWindowOffsetX(), pWin->GetWindowOffsetY(), + pWin->GetWindowWidth(), pWin->GetWindowHeight()); + ri = rw.intersected(m_Desktop); + if(ri.isValid()) + ri = ri.intersected(rect); + if(!ri.isValid()) { + qDebug(logInvalid) << WINDOW_ID(pWin->GetWindowId()) + << "intersecte invalid" << ri; + continue; + } + QRect r(ri.x() - rect.x(), ri.y() - rect.y(), ri.width(), ri.height()); + QImage cImg = img.copy(r); + QRect ru(ri.x() - rw.x(), ri.y() - rw.y(), ri.width(), ri.height()); + pWin->slotUpdateRect(ru, cImg); + qDebug(logInvalid) << WINDOW_ID(pWin->GetWindowId()) + << "Window:" << rw << "Invalid:" << rect + << "Intersected:" << ri << "update:" << ru; + } +} + +int CRAILManageWindows::slotSetDesktopSize(int width, int height) +{ + m_Desktop = QRect(0, 0, width, height); + return 0; +} diff --git a/Plugins/FreeRDP/Client/RAILManageWindows.h b/Plugins/FreeRDP/Client/RAILManageWindows.h new file mode 100644 index 0000000000..93d7231d1f --- /dev/null +++ b/Plugins/FreeRDP/Client/RAILManageWindows.h @@ -0,0 +1,45 @@ +// Author: Kang Lin + +#ifndef RAILMANAGEWINDOWS_H +#define RAILMANAGEWINDOWS_H + +#include "RAILWindow.h" +#include "RAIL.h" + +/*! + * \~chinese 管理远程应用程序窗口 + * \note 它运行在主线程中(UI线程) + * + * \~english Manage remote application window + * \note It is run on main thread(UI thread) + */ +class CRAILManageWindows : public QObject +{ + Q_OBJECT +public: + explicit CRAILManageWindows(QObject *parent = nullptr); + + int Connect(CRAIL* pRail); + + CConnectFreeRDP* m_pConnect; + + void WindowDelete(UINT32 windowId); + +public Q_SLOTS: + void slotWindow(QSharedPointer info); + void slotWindowDelete(QSharedPointer info); + void slotWindowIcon(QSharedPointer info, QImage img); + void slotInvalidateRect(const QRect& rect, const QImage& img); + int slotSetDesktopSize(int width, int height); + void slotClean(); + +private: + int UpdateWindow(CRAILWindow* pWin, CRAILInfo* info, bool bVisiable); + +private: + QMap m_Windows; + QRect m_Desktop; + CRAIL* m_pRail; +}; + +#endif // RAILMANAGEWINDOWS_H diff --git a/Plugins/FreeRDP/Client/RAILWindow.cpp b/Plugins/FreeRDP/Client/RAILWindow.cpp new file mode 100644 index 0000000000..17f7b03d0e --- /dev/null +++ b/Plugins/FreeRDP/Client/RAILWindow.cpp @@ -0,0 +1,286 @@ +// Author: Kang Lin + +#include +#include +#include "RAILManageWindows.h" +#include "RAILWindow.h" + +static Q_LOGGING_CATEGORY(log, "FreeRDP.Rail.Window") +static Q_LOGGING_CATEGORY(logMouse, "FreeRDP.Rail.Window.Mouse") + +CRAILWindow::CRAILWindow(QWidget *parent) + : CFrmViewer{parent} + , m_pRail(nullptr) + , m_pManage(nullptr) + , m_WindowId(0) + , m_ShowState(0) + , m_WindowOffsetX(0) + , m_WindowOffsetY(0) + , m_WindowWidth(0) + , m_WindowHeight(0) + , m_VisibleOffsetX(0) + , m_VisibleOffsetY(0) + , m_bServerExit(false) +{ + installEventFilter(this); + //qDebug(log) << "CRailWindow origin flags:" << windowFlags(); + setWindowFlags(Qt::FramelessWindowHint); + //qDebug(log) << "CRailWindow initial flags:" << windowFlags(); + slotSetAdaptWindows(ADAPT_WINDOWS::Original); + setEnabled(true); + setVisible(false); +} + +bool CRAILWindow::eventFilter(QObject *watched, QEvent *event) +{ + //qDebug(log) << WINDOW_ID(GetWindowId()) << Q_FUNC_INFO << event << WINDOW_ID(GetWindowId()); + switch(event->type()) { + case QEvent::WindowStateChange: + { + QWindowStateChangeEvent * stateEvent = dynamic_cast(event); + if(!stateEvent) break; + if(Qt::WindowMinimized == stateEvent->oldState() && m_pRail) + m_pRail->slotClientSystemCommand(GetWindowId(), SC_RESTORE); + break; + } + case QEvent::WindowDeactivate: + { + // if(m_pRail) + // m_pRail->slotClientActivate(GetWindowId(), false); + break; + } + case QEvent::WindowActivate: { + // if(m_pRail) + // m_pRail->slotClientActivate(GetWindowId(), true); + break; + } + default: + break; + } + return false ; +} + +/*! + * [2.2.1.3.1.2.1 New or Existing Window](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/2d36758d-3fb5-4823-8c4b-9b81a9c8ff3e) + * + * | Value | Meaning | + * |:------|:------------------------------------------------| + * | 0x00 |Do not show the window. | + * | 0x02 |Show the window minimized. | + * | 0x03 |Show the window maximized. | + * | 0x05 |Show the window in its current size and position.| +*/ +int CRAILWindow::Show(UINT32 state) +{ + qDebug(log) << WINDOW_ID(GetWindowId()) << "Show state:" << state; + m_ShowState = state; + switch(state){ + case SW_HIDE: + hide(); + break; + case SW_SHOWMINIMIZED: + showMinimized(); + break; + case SW_SHOWMAXIMIZED: + showMaximized(); + break; + case SW_SHOW: + show(); + break; + default: + qWarning(log) << WINDOW_ID(GetWindowId()) << "Don't support show state:" << state + << "See: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdperp/2d36758d-3fb5-4823-8c4b-9b81a9c8ff3e"; + break; + } + return 0; +} + +void CRAILWindow::SetServerExit(bool bExit) +{ + m_bServerExit = bExit; +} + +void CRAILWindow::mousePressEvent(QMouseEvent *event) +{ + QPointF pos = +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + event->position(); +#else + event->pos(); +#endif + + if(TranslationMousePoint(pos, pos)) return; + // event->buttons() 产生事件时,按键的状态 + // event->button() 触发当前事件的按键 + /* + qDebug(logMouse) << WINDOW_ID(GetWindowId()) << "CRailWindow::mousePressEvent" + << event << event->button() << event->buttons() << pos;//*/ + emit sigMousePressEvent(event, QPoint(pos.x(), pos.y())); + event->accept(); +} + +void CRAILWindow::mouseReleaseEvent(QMouseEvent *event) +{ + QPointF pos = +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + event->position(); +#else + event->pos(); +#endif + if(TranslationMousePoint(pos, pos)) return; + // event->buttons() 产生事件时,按键的状态 + // event->button() 触发当前事件的按键 + /* + qDebug(logMouse) << WINDOW_ID(GetWindowId()) << "CRailWindow::mouseReleaseEvent" + << event << event->button() << event->buttons() << pos;//*/ + emit sigMouseReleaseEvent(event, QPoint(pos.x(), pos.y())); + event->accept(); +} + +void CRAILWindow::mouseMoveEvent(QMouseEvent *event) +{ + QPointF pos = +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + event->position(); +#else + event->pos(); +#endif + if(TranslationMousePoint(pos, pos)) return; + // event->buttons() 产生事件时,按键的状态 + // event->button() 触发当前事件的按键 + /* + qDebug(logMouse) << WINDOW_ID(GetWindowId()) << "CRailWindow::mouseMoveEvent" + << event->button() << event->buttons() << pos;//*/ + emit sigMouseMoveEvent(event, QPoint(pos.x(), pos.y())); + event->accept(); +} + +void CRAILWindow::wheelEvent(QWheelEvent *event) +{ + QPointF pos = +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + event->position(); +#else + event->pos(); +#endif + if(TranslationMousePoint(pos, pos)) return; + /* + qDebug(logMouse) << WINDOW_ID(GetWindowId()) << "CRailWindow::wheelEvent" + << event->buttons() << event->angleDelta() << pos;//*/ + emit sigWheelEvent(event, QPoint(pos.x(), pos.y())); + event->accept(); +} + +int CRAILWindow::TranslationMousePoint(QPointF inPos, QPointF &outPos) +{ + outPos.setX(GetWindowOffsetX() + inPos.x()); + outPos.setY(GetWindowOffsetY() + inPos.y()); + return 0; +} + +void CRAILWindow::closeEvent(QCloseEvent *event) +{ + qDebug(log) << WINDOW_ID(GetWindowId()) << Q_FUNC_INFO << event; + if(m_pManage) + m_pManage->WindowDelete(GetWindowId()); + if(m_pRail && !m_bServerExit) + m_pRail->slotClientSystemCommand(GetWindowId(), SC_CLOSE); +} + +void CRAILWindow::focusInEvent(QFocusEvent *event) +{ + //qDebug(log) << WINDOW_ID(GetWindowId()) << Q_FUNC_INFO << event; + // if(Qt::MouseFocusReason == event->reason()) + // return; + // if(m_pRail) + // m_pRail->slotClientActivate(GetWindowId(), true); +} + +void CRAILWindow::focusOutEvent(QFocusEvent *event) +{ + //qDebug(log) << WINDOW_ID(GetWindowId()) << Q_FUNC_INFO << event; + // if(Qt::MouseFocusReason == event->reason()) + // return; + // if(m_pRail) + // m_pRail->slotClientActivate(GetWindowId(), true); +} + +INT32 CRAILWindow::GetVisibleOffsetX() const +{ + return m_VisibleOffsetX; +} + +void CRAILWindow::SetVisibleOffsetX(INT32 newVisibleOffsetX) +{ + m_VisibleOffsetX = newVisibleOffsetX; +} + +INT32 CRAILWindow::GetVisibleOffsetY() const +{ + return m_VisibleOffsetY; +} + +void CRAILWindow::SetVisibleOffsetY(INT32 newVisibleOffsetY) +{ + m_VisibleOffsetY = newVisibleOffsetY; +} + +UINT32 CRAILWindow::GetShowState() const +{ + return m_ShowState; +} + +void CRAILWindow::SetShowState(UINT32 newShowState) +{ + m_ShowState = newShowState; +} + +UINT32 CRAILWindow::GetWindowId() const +{ + return m_WindowId; +} + +void CRAILWindow::SetWindowId(UINT32 newWindowId) +{ + m_WindowId = newWindowId; +} + +INT32 CRAILWindow::GetWindowOffsetX() const +{ + return m_WindowOffsetX; +} + +void CRAILWindow::SetWindowOffsetX(INT32 newWindowOffsetX) +{ + m_WindowOffsetX = newWindowOffsetX; +} + +INT32 CRAILWindow::GetWindowOffsetY() const +{ + return m_WindowOffsetY; +} + +void CRAILWindow::SetWindowOffsetY(INT32 newWindowOffsetY) +{ + m_WindowOffsetY = newWindowOffsetY; +} + +UINT32 CRAILWindow::GetWindowWidth() const +{ + return m_WindowWidth; +} + +void CRAILWindow::SetWindowWidth(UINT32 newWindowWidth) +{ + m_WindowWidth = newWindowWidth; +} + +UINT32 CRAILWindow::GetWindowHeight() const +{ + return m_WindowHeight; +} + +void CRAILWindow::SetWindowHeight(UINT32 newWindowHeight) +{ + m_WindowHeight = newWindowHeight; +} diff --git a/Plugins/FreeRDP/Client/RAILWindow.h b/Plugins/FreeRDP/Client/RAILWindow.h new file mode 100644 index 0000000000..5ebafa9cef --- /dev/null +++ b/Plugins/FreeRDP/Client/RAILWindow.h @@ -0,0 +1,80 @@ +// Author: Kang Lin + +#ifndef RAILWINDOW_H +#define RAILWINDOW_H + +#include "FrmViewer.h" +#include "RAIL.h" + +/*! + * \~chinese 远程应用程序窗口 + * \note 它运行在主线程中(UI线程) + * \~english Remote application window + * \note It is run on main thread(UI thread) + */ +class CRAILWindow : public CFrmViewer +{ + Q_OBJECT +public: + explicit CRAILWindow(QWidget *parent = nullptr); + + CRAIL* m_pRail; + CRAILManageWindows* m_pManage; + + int Show(UINT32 state); + + UINT32 GetWindowId() const; + void SetWindowId(UINT32 newWindowId); + INT32 GetWindowOffsetX() const; + void SetWindowOffsetX(INT32 newWindowOffsetX); + INT32 GetWindowOffsetY() const; + void SetWindowOffsetY(INT32 newWindowOffsetY); + UINT32 GetWindowWidth() const; + void SetWindowWidth(UINT32 newWindowWidth); + UINT32 GetWindowHeight() const; + void SetWindowHeight(UINT32 newWindowHeight); + UINT32 GetShowState() const; + void SetShowState(UINT32 newShowState); + + INT32 GetVisibleOffsetX() const; + void SetVisibleOffsetX(INT32 newVisibleOffsetX); + INT32 GetVisibleOffsetY() const; + void SetVisibleOffsetY(INT32 newVisibleOffsetY); + + void SetServerExit(bool bExit = true); + +protected: + virtual bool eventFilter(QObject *watched, QEvent *event) override; + virtual void closeEvent(QCloseEvent *event) override; + virtual void focusInEvent(QFocusEvent *event) override; + virtual void focusOutEvent(QFocusEvent *event) override; + + virtual void mousePressEvent(QMouseEvent *event) override; + virtual void mouseReleaseEvent(QMouseEvent *event) override; + virtual void mouseMoveEvent(QMouseEvent *event) override; + virtual void wheelEvent(QWheelEvent *event) override; + +private: + virtual int TranslationMousePoint(QPointF inPos, QPointF &outPos); + +private: + UINT32 m_WindowId; + /*! + * | Value | Meaning | + * |:------|:------------------------------------------------| + * | 0x00 |Do not show the window. | + * | 0x02 |Show the window minimized. | + * | 0x03 |Show the window maximized. | + * | 0x05 |Show the window in its current size and position.| + */ + UINT32 m_ShowState; + INT32 m_WindowOffsetX; + INT32 m_WindowOffsetY; + UINT32 m_WindowWidth; + UINT32 m_WindowHeight; + INT32 m_VisibleOffsetX; + INT32 m_VisibleOffsetY; + bool m_bServerExit; +}; + +#endif // RAILWINDOW_H diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ar.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ar.ts index 15935431a2..4e9022eedf 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ar.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ar.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ca.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ca.ts index 52f1a2c0ff..9e46552972 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ca.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ca.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_cs.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_cs.ts index e623670cdf..c910a656f8 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_cs.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_cs.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_da.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_da.ts index 2836e210a5..a3d96fb7c5 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_da.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_da.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_de.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_de.ts index f8b77037a5..0495f0e567 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_de.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_de.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_el.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_el.ts index fa2a9f463c..624a1593cb 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_el.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_el.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_en.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_en.ts index f9d69fa2f8..08d3e53504 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_en.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_en.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_en_GB.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_en_GB.ts index 0f61c252ac..58b3e8f378 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_en_GB.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_en_GB.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_es.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_es.ts index 008ddbbd84..0dbfc6d14c 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_es.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_es.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_et.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_et.ts index 26ebe08922..b953273581 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_et.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_et.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_fi.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_fi.ts index 2d2376a65d..2edb08f672 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_fi.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_fi.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_fr.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_fr.ts index 30f35000cc..f1e8fc9292 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_fr.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_fr.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_gd.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_gd.ts index 1bd4547259..c5c8413a09 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_gd.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_gd.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_gl.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_gl.ts index 0097b1e288..cd657f3619 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_gl.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_gl.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_hu.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_hu.ts index 736fd308a3..acc11ecd06 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_hu.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_hu.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_it.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_it.ts index c5267c11ea..d1347ff29d 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_it.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_it.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ja.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ja.ts index 6fd697c182..16fda7e15f 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ja.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ja.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ko.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ko.ts index a429e4bfe2..de7f312b54 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ko.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ko.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nb.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nb.ts index f5faef9102..4404ff7bf7 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nb.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nb.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ne.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ne.ts index 0a06fe6b02..50f0a93649 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ne.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ne.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nl.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nl.ts index 09739ac4cd..91deb65fe6 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nl.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nl.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nn.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nn.ts index 199e8b12e5..8f771f03f8 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nn.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_nn.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_oc.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_oc.ts index ac7f07d785..7a4e6664d0 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_oc.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_oc.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pl.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pl.ts index bf8df450ce..a003f23356 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pl.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pl.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pt_BR.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pt_BR.ts index 8d8f746bf2..40bcefd08b 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pt_BR.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pt_BR.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pt_PT.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pt_PT.ts index c5614d63aa..cd348f91e3 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pt_PT.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_pt_PT.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ro.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ro.ts index 249b48a41f..e926d8bb81 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ro.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ro.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ru.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ru.ts index 6aeebae524..cd389e6b35 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ru.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_ru.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sk.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sk.ts index 87524a7c5c..8a1720e89c 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sk.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sk.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sl.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sl.ts index 4175a0e831..19b934db1d 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sl.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sl.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sv.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sv.ts index 6aa786b46a..2ff90e865b 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sv.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_sv.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_th.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_th.ts index e8a109846e..b0369939cd 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_th.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_th.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_tr.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_tr.ts index f75ad68757..cfd48b22e4 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_tr.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_tr.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_uk.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_uk.ts index 94a3271024..7e61edafc9 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_uk.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_uk.ts @@ -4,243 +4,243 @@ CConnectFreeRDP - - + + Connect to - - - - + + + + Logon to - + fail. Please check that the username and password are correct. - - - - - - + + + + + + Error - + authentication fail. please add a CA certificate to the store. - + 1. Check for any network related issues - + FreeRDP logon info: [ - + Verify certificate - - + + : %1:%2 - - + + Common name: - - + + RDP-Server - + fail. Please check password are correct. - + connect transport layer fail. - + Please: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) - + 3. Check the certificate is proper (and guacd properly checks that) - + fail. - + The server is empty, please input it - + Choose - + Please choose smartcard - - + + RDP-Gateway - - + + RDP-Redirect - + Subject: - + Issuer: - + Fingerprint: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Yes - trusted - + Invalid dimensions: - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. - - + + Ignore - temporary trusted - - + + No - no trusted - - + + Don't show again - + Verify changed certificate - + New subject: - + New issuer: - + New fingerprint: - + Old subject: - + Old issuer: - + Old fingerprint: - + Consent message - + Service message - + I understand and agree to the terms of this policy (Y/N) - + Gateway message @@ -309,170 +309,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + OK(&O) - + Cancel(&C) - + Server - + Only View - + Domain: - + Reconnect count: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> - + Reconnect count - - - + + Remote application + + + + + Program: + + + + + Parameters + + + + + Working directory: + + + + + + Local screen - + ... - + Local resource - + Selected: - + Clear all - + Audio - + Play remote audio - + On this computer - + On remote computer - + Disable - + Use this computer's microphone on the remote computer - - - - + + + + Printer: Redirection the local printers to the remote computer - - - - + + + + Clipboard: Redirection the clipboard - - - + + + Redirect the following selected drives to the remote computer - + Drive: Redirect the following selected drives to the remote computer - + Name: - - - + + + Connecter name - + Show server name - + Display - + Remote desktop size: - + Select size: - + Use all local monitors for remote sessions - + Remote color depth: @@ -487,27 +507,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + 8 bits - + 16 bits - + 24 bits - + 32 bits - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -517,19 +537,19 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: - + Options for redirection of audio input: - + Selected counts: @@ -567,4 +587,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store + + CRail + + + + Exec remote application fail + + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_zh_CN.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_zh_CN.ts index 4e80c323ab..07595d8bea 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_zh_CN.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_zh_CN.ts @@ -4,169 +4,169 @@ CConnectFreeRDP - - + + Connect to 连接到 - - - - + + + + Logon to 登录到 - + fail. Please check that the username and password are correct. 失败。请检查用户名和密码是否正确。 - - - - - - + + + + + + Error 错误 - + 1. Check for any network related issues 1. 检查是否存在任何与网络相关的问题 - + FreeRDP logon info: [ FreeRDP 登录信息: - + Verify certificate 验证证书 - - + + Common name: 公共名称: - - + + RDP-Server RDP-服务器 - + fail. Please check password are correct. 失败。请检查密码是否正确。 - + authentication fail. please add a CA certificate to the store. 验证失败。请在证书存储中加上 CA 证书。 - + connect transport layer fail. 连接传输层失败。 - + Please: 请: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) 2. 检查您是否具有正确的安全设置(现在大多数连接都需要启用 'NLA' ) - + 3. Check the certificate is proper (and guacd properly checks that) 3. 检查证书是否正确(并正确检查) - + fail. 失败。 - + The server is empty, please input it 服务器为空,请输入 - + Choose 选择 - + Please choose smartcard 请选择智能卡 - - + + RDP-Gateway RDP-网关 - - + + RDP-Redirect RDP-重定向 - - + + : %1:%2 - + Subject: 主题: - + Issuer: 颁发者: - + Fingerprint: 指纹: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. 无法验证上述 X.509 证书,可能是因为 CA 证书未存储在您的证书存储中,或者证书已过期。请查看 OpenSSL 文档,了解如何将私有 CA 添加到存储区。 - - + + Yes - trusted 是 - 信任 - + Invalid dimensions: 无效尺寸 - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. 上面 X.509 证书已改变。 可能服务器更换了证书,也可能受到了攻击。请查看 OpenSSL 文档,了解如何将私有 CA 添加到存储区。 - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. @@ -174,75 +174,75 @@ Please look at the OpenSSL documentation on how to add a private CA to the store 可能是在你的证书库中没有,或者证书过期。请查看 OpenSSL 文档,了解如何将私有 CA 添加到存储区。 - - + + Ignore - temporary trusted 忽略 - 临时信任 - - + + No - no trusted 否 - 不信任 - - + + Don't show again 不再显示 - + Verify changed certificate 验证证书改变 - + New subject: 新的主题: - + New issuer: 新的颁发者: - + New fingerprint: 新的指纹: - + Old subject: 旧的主题: - + Old issuer: 旧的颁发者: - + Old fingerprint: 旧的指纹: - + Consent message 同意消息 - + Service message 服务留言 - + I understand and agree to the terms of this policy (Y/N) 我理解并同意本政策的条款(是/否) - + Gateway message 网关消息 @@ -311,170 +311,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store 设置 FreeRdp - + OK(&O) 确定(&O) - + Cancel(&C) 取消(&C) - + Server 服务器 - + Only View 仅查看 - + Domain: 域名: - + Reconnect count: 重连接次数: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> <html><head/><body><p>0: don't reconnect</p><p>&gt;0: 重连接次数:</p></body></html> - + Reconnect count 重连接次数 - - - + + Remote application + 远程应用程序 + + + + Program: + 程序: + + + + Parameters + 参数 + + + + Working directory: + 工作目录: + + + + + Local screen 本地屏幕 - + ... - + Local resource 本地资源 - + Selected: 选择的: - + Clear all 清除全部 - + Audio 音频 - + Play remote audio 播放音频 - + On this computer 在此计算机上 - + On remote computer 在远程计算机上 - + Disable 禁止 - + Use this computer's microphone on the remote computer 在远程计算机上使用本计算机的麦克风 - - - - + + + + Printer: Redirection the local printers to the remote computer 打印机:重定向本地打印机到远程计算机上 - - - - + + + + Clipboard: Redirection the clipboard 剪切板:重定向剪切板 - - - + + + Redirect the following selected drives to the remote computer 重定向下列选中的驱动器到远程计算机上 - + Drive: Redirect the following selected drives to the remote computer 驱动器:重定向下列选中的驱动器到远程计算机上 - + Name: 名称: - - - + + + Connecter name 连接名称 - + Show server name 显示服务器名 - + Display 显示 - + Remote desktop size: 远程桌面尺寸: - + Select size: 选择尺寸: - + Use all local monitors for remote sessions 将本地所有监视器用于远程会话 - + Remote color depth: 远程颜色深度: @@ -489,27 +509,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store 录制 - + 8 bits 8 比特 - + 16 bits 16 比特 - + 24 bits 24 比特 - + 32 bits 32 比特 - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -519,21 +539,21 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: 重定向音频输出的选项: - + Options for redirection of audio input: 重定向音频输入的选项: - + Selected counts: 选择数: @@ -571,4 +591,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store 编译日期: + + CRail + + + + Exec remote application fail + 执行远程应用失败 + + diff --git a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_zh_TW.ts b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_zh_TW.ts index 8654b1df43..a92e439449 100644 --- a/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_zh_TW.ts +++ b/Plugins/FreeRDP/Client/Resource/Translations/FreeRDP_zh_TW.ts @@ -4,169 +4,169 @@ CConnectFreeRDP - - + + Connect to 連接到 - - - - + + + + Logon to 登錄到 - + fail. Please check that the username and password are correct. 失敗。請檢查用戶名和密碼是否正確。 - - - - - - + + + + + + Error 錯誤 - + 1. Check for any network related issues 1. 檢查是否存在任何與網絡相關的問題 - + FreeRDP logon info: [ FreeRDP 登錄信息: - + Verify certificate 驗證證書 - - + + Common name: 公共名稱: - - + + RDP-Server RDP-服務器 - + fail. Please check password are correct. 失敗。請檢查密碼是否正確。 - + authentication fail. please add a CA certificate to the store. 驗證失敗。請在證書存儲中加上 CA 證書。 - + connect transport layer fail. 連接傳輸層失敗。 - + Please: 請: - + 2. Check you have proper security settings ('NLA' enabled is required for most connections nowadays) 2. 檢查您是否具有正確的安全設置(現在大多數連接都需要啟用 'NLA' ) - + 3. Check the certificate is proper (and guacd properly checks that) 3. 檢查證書是否正確(並正確檢查) - + fail. 失敗。 - + The server is empty, please input it 服務器為空,請輸入 - + Choose 選擇 - + Please choose smartcard 請選擇智能卡 - - + + RDP-Gateway RDP-網關 - - + + RDP-Redirect RDP-重定向 - - + + : %1:%2 - + Subject: 主題: - + Issuer: 頒發者: - + Fingerprint: 指紋: - + The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. 無法驗證上述 X.509 證書,可能是因為 CA 證書未存儲在您的證書存儲中,或者證書已過期。請查看 OpenSSL 文檔,了解如何將私有 CA 添加到存儲區。 - - + + Yes - trusted 是 - 信任 - + Invalid dimensions: 無效尺寸 - + The above X.509 certificate is changed. It is possible that the server has changed its certificate, or Maybe it was attacked.Please look at the OpenSSL documentation on how to add a private CA to the store. 上面 X.509 證書已改變。 可能服務器更換了證書,也可能受到了攻擊。請查看 OpenSSL 文檔,了解如何將私有 CA 添加到存儲區。 - + The above X.509 certificate could not be verified. Possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Please look at the OpenSSL documentation on how to add a private CA to the store. @@ -174,75 +174,75 @@ Please look at the OpenSSL documentation on how to add a private CA to the store 可能是在你的證書庫中沒有,或者證書過期。請查看 OpenSSL 文檔,了解如何將私有 CA 添加到存儲區。 - - + + Ignore - temporary trusted 忽略 - 臨時信任 - - + + No - no trusted 否 - 不信任 - - + + Don't show again 不再顯示 - + Verify changed certificate 驗證證書改變 - + New subject: 新的主題: - + New issuer: 新的頒發者: - + New fingerprint: 新的指紋: - + Old subject: 舊的主題: - + Old issuer: 舊的頒發者: - + Old fingerprint: 舊的指紋: - + Consent message 同意消息 - + Service message 服務留言 - + I understand and agree to the terms of this policy (Y/N) 我理解並同意本政策的條款(是/否) - + Gateway message 網關消息 @@ -311,170 +311,190 @@ Please look at the OpenSSL documentation on how to add a private CA to the store 設置 FreeRdp - + OK(&O) 確定(&O) - + Cancel(&C) 取消(&C) - + Server 服務器 - + Only View 僅查看 - + Domain: 域名: - + Reconnect count: 重連接次數: - - + + <html><head/><body><p>0: don't reconnect</p><p>&gt;0: reconnect count</p></body></html> <html><head/><body><p>0: don't reconnect</p><p>&gt;0: 重連接次數:</p></body></html> - + Reconnect count 重連接次數 - - - + + Remote application + 遠程應用程序 + + + + Program: + 程序: + + + + Parameters + 參數 + + + + Working directory: + 工作目錄: + + + + + Local screen 本地屏幕 - + ... - + Local resource 本地資源 - + Selected: 選擇的: - + Clear all 清除全部 - + Audio 音頻 - + Play remote audio 播放音頻 - + On this computer 在此計算機上 - + On remote computer 在遠程計算機上 - + Disable 禁止 - + Use this computer's microphone on the remote computer 在遠程計算機上使用本計算機的麥克風 - - - - + + + + Printer: Redirection the local printers to the remote computer 打印機:重定向本地打印機到遠程計算機上 - - - - + + + + Clipboard: Redirection the clipboard 剪切板:重定向剪切板 - - - + + + Redirect the following selected drives to the remote computer 重定向下列選中的驅動器到遠程計算機上 - + Drive: Redirect the following selected drives to the remote computer 驅動器:重定向下列選中的驅動器到遠程計算機上 - + Name: 名稱: - - - + + + Connecter name 連接名稱 - + Show server name 顯示服務器名 - + Display 顯示 - + Remote desktop size: 遠程桌面尺寸: - + Select size: 選擇尺寸: - + Use all local monitors for remote sessions 將本地所有監視器用於遠程會話 - + Remote color depth: 遠程顏色深度: @@ -489,27 +509,27 @@ Please look at the OpenSSL documentation on how to add a private CA to the store 錄製 - + 8 bits 8 比特 - + 16 bits 16 比特 - + 24 bits 24 比特 - + 32 bits 32 比特 - + - [sys:<sys>,][dev:<dev>,][format:<format>,][rate:<rate>,][channel:<channel>] - sys:winmm- sys:ios - sys:mac- sys:opensles- sys:alsa @@ -519,21 +539,21 @@ Please look at the OpenSSL documentation on how to add a private CA to the store - + Options for redirection of audio output: 重定向音頻輸出的選項: - + Options for redirection of audio input: 重定向音頻輸入的選項: - + Selected counts: 選擇數: @@ -571,4 +591,13 @@ Please look at the OpenSSL documentation on how to add a private CA to the store 編譯日期: + + CRail + + + + Exec remote application fail + 執行遠程應用失敗 + + diff --git a/Plugins/FreeRDP/README.md b/Plugins/FreeRDP/README.md index c66454af38..22bfe54ed4 100644 --- a/Plugins/FreeRDP/README.md +++ b/Plugins/FreeRDP/README.md @@ -23,3 +23,4 @@ protocol using [FreeRDP](https://github.com/FreeRDP/FreeRDP). - [x] Picture - [ ] File - [ ] Serial +- [x] Remote application diff --git a/Plugins/FreeRDP/README_zh_CN.md b/Plugins/FreeRDP/README_zh_CN.md index c7b662bac6..d46d71cf80 100644 --- a/Plugins/FreeRDP/README_zh_CN.md +++ b/Plugins/FreeRDP/README_zh_CN.md @@ -23,3 +23,4 @@ - [x] 图片 - [ ] 文件 - [ ] 串口 +- [x] 远程应用程序 diff --git a/Plugins/Player/ConnectPlayer.cpp b/Plugins/Player/ConnectPlayer.cpp index c9cdd3f1e7..b6061add29 100644 --- a/Plugins/Player/ConnectPlayer.cpp +++ b/Plugins/Player/ConnectPlayer.cpp @@ -388,7 +388,7 @@ void CConnectPlayer::slotEnableAudioInput(bool bEnable) void CConnectPlayer::slotEnableAudioOutput(bool bEnable) { - if(bEnable && (-1 < m_pParameters->GetAudioOutput() + if(bEnable && (-1 < m_pParameters->GetAudioOutput() && m_pParameters->GetAudioOutput() < QMediaDevices::audioInputs().size())) { diff --git a/etc/RabbitRemoteControl_logqt.ini b/etc/RabbitRemoteControl_logqt.ini index 639a926b71..9af4da8425 100644 --- a/etc/RabbitRemoteControl_logqt.ini +++ b/etc/RabbitRemoteControl_logqt.ini @@ -60,8 +60,11 @@ LibVNCServer.Connect.Mouse=false ;FreeRDP.Log.debug=true FreeRDP.Log.Trace=false ;FreeRDP.Log.Fatal=false -FreeRDP.Connect.Key=false -FreeRDP.Connect.Mouse=false +;FreeRDP.Connect.Key=true +;FreeRDP.Connect.Mouse=true +;FreeRDP.Rail.*=true +;FreeRDP.Rail.Window.Info=true +;FreeRDP.Rail.Window.*=true ;VNC.Log.*=true diff --git a/etc/RabbitRemoteControl_logqt_debug.ini b/etc/RabbitRemoteControl_logqt_debug.ini index 5b032e7023..33255827a6 100644 --- a/etc/RabbitRemoteControl_logqt_debug.ini +++ b/etc/RabbitRemoteControl_logqt_debug.ini @@ -62,6 +62,14 @@ FreeRDP.Log.Trace=false FreeRDP.Log.Fatal=false FreeRDP.Connect.Key=false FreeRDP.Connect.Mouse=false +FreeRDP.Rail.*=true +FreeRDP.Rail.Window.Info=true +FreeRDP.Rail.Window*=true +FreeRDP.Rail.Window.Mouse=false +;FreeRDP.Rail.Update.*=true +;FreeRDP.Rail.Update.Window=true +;FreeRDP.Rail.Update.Invalid=true +;FreeRDP.Rail.ManageWindows.Window=true ;WOL.*=true