Skip to content

Commit f415bba

Browse files
committed
aggiornati campi uso interno/esterno rdp
1 parent 15490ce commit f415bba

4 files changed

Lines changed: 44 additions & 1 deletion

File tree

PCM.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import shutil
3232
from functools import partial
3333
from vnc_widget import VncWebWidget
34+
from rdp_widget import RdpEmbedWidget
3435

3536
from PyQt6.QtWidgets import (
3637
QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
@@ -651,6 +652,21 @@ def _apri_sessione(self, nome: str, profilo: dict):
651652
return
652653

653654
# ... [il resto di _apri_sessione rimane identico] ...
655+
if modalita == "rdp_embedded":
656+
# RDP pannello interno — RdpEmbedWidget gestisce xfreerdp
657+
self._rimuovi_welcome_se_presente()
658+
self.tabs.setTabsClosable(True)
659+
widget = RdpEmbedWidget(profilo, parent=self)
660+
idx = self.tabs.addTab(widget, _qi("monitor.png"), f" {nome}")
661+
self.tabs.setCurrentIndex(idx)
662+
self._profili_tab[id(widget)] = (nome, profilo)
663+
widget.processo_terminato.connect(
664+
lambda w=widget: self._on_processo_terminato(w)
665+
)
666+
self._set_status(t("session.connected", name=nome))
667+
self._aggiorna_status()
668+
return
669+
654670
if modalita == "external":
655671

656672

@@ -1423,7 +1439,7 @@ def _riconnetti():
14231439
if info:
14241440
nome, profilo = info
14251441
self._apri_sessione(nome, profilo)
1426-
else:
1442+
elif hasattr(term, 'avvia') and hasattr(term, '_comando_corrente'):
14271443
term.avvia(term._comando_corrente)
14281444

14291445
btn.clicked.connect(_riconnetti)

session_command.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ def build_command(profilo: dict) -> Tuple[Optional[str], str]:
6363
else: # Browser interno (default)
6464
return _build_ftp(profilo, modalita="browser_int"), "ftp_panel"
6565
elif proto == "rdp":
66+
mode = profilo.get("rdp_open_mode", "Finestra esterna")
67+
if mode.startswith("Pannello interno"):
68+
# cmd=None: RdpEmbedWidget costruisce il comando internamente
69+
return None, "rdp_embedded"
6670
return _build_rdp(profilo), "external"
6771
elif proto == "vnc":
6872
return _build_vnc(profilo), "external"

session_dialog.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,16 @@ def _build_tab_connessione(self):
280280
rdp_layout.addRow("", self.chk_rdp_drives)
281281
layout.addRow(self.grp_rdp)
282282

283+
self.grp_rdp_open = QGroupBox(t("sd.grp.rdp_open"))
284+
rdp_open_layout = QFormLayout(self.grp_rdp_open)
285+
self.combo_rdp_open = QComboBox()
286+
self.combo_rdp_open.addItems([
287+
"Finestra esterna",
288+
"Pannello interno",
289+
])
290+
rdp_open_layout.addRow(t("sd.open_with"), self.combo_rdp_open)
291+
layout.addRow(self.grp_rdp_open)
292+
283293
self.grp_vnc = QGroupBox(t("sd.grp.vnc"))
284294
vnc_layout = QFormLayout(self.grp_vnc)
285295
self.chk_vnc_internal = QCheckBox(t("sd.vnc.integrated"))
@@ -987,6 +997,7 @@ def _aggiorna_tab(self):
987997

988998
# Gruppi specifici
989999
self.grp_rdp.setVisible(proto == "rdp")
1000+
self.grp_rdp_open.setVisible(proto == "rdp")
9901001
self.grp_vnc.setVisible(proto == "vnc")
9911002
self.grp_ftp.setVisible(proto == "ftp")
9921003
self.grp_tunnel.setVisible(proto == "ssh_tunnel")
@@ -1123,6 +1134,10 @@ def _popola(self, nome, dati):
11231134
self.chk_rdp_clip.setChecked(dati.get("redirect_clipboard", True))
11241135
self.chk_rdp_drives.setChecked(dati.get("redirect_drives", False))
11251136
self.edit_rdp_domain.setText(dati.get("rdp_domain", ""))
1137+
rdp_open = dati.get("rdp_open_mode", "Finestra esterna")
1138+
idx_ro = self.combo_rdp_open.findText(rdp_open, Qt.MatchFlag.MatchStartsWith)
1139+
if idx_ro >= 0:
1140+
self.combo_rdp_open.setCurrentIndex(idx_ro)
11261141

11271142
# VNC
11281143
self.chk_vnc_internal.setChecked(dati.get("vnc_internal", True))
@@ -1246,6 +1261,7 @@ def get_data(self):
12461261
"redirect_clipboard": self.chk_rdp_clip.isChecked(),
12471262
"redirect_drives": self.chk_rdp_drives.isChecked(),
12481263
"rdp_domain": self.edit_rdp_domain.text().strip(),
1264+
"rdp_open_mode": self.combo_rdp_open.currentText(),
12491265
"vnc_internal": self.chk_vnc_internal.isChecked(),
12501266
"vnc_client": self.combo_vnc_client.currentText(),
12511267
"vnc_color": self.combo_vnc_color.currentText(),

translations.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,13 @@ def init_from_settings() -> None:
566566
"sd.rdp.fullscreen": {"it": "Schermo intero", "en": "Fullscreen", "de": "Vollbild", "fr": "Plein écran", "es": "Pantalla completa"},
567567
"sd.rdp.clipboard": {"it": "Condividi clipboard", "en": "Share clipboard", "de": "Zwischenablage teilen", "fr": "Partager le presse-papiers", "es": "Compartir portapapeles"},
568568
"sd.rdp.drives": {"it": "Condividi cartelle locali", "en": "Share local folders", "de": "Lokale Ordner teilen", "fr": "Partager les dossiers locaux", "es": "Compartir carpetas locales"},
569+
"sd.grp.rdp_open": {"it": "Modalità apertura RDP", "en": "RDP open mode", "de": "RDP-Öffnungsmodus", "fr": "Mode d'ouverture RDP", "es": "Modo apertura RDP"},
570+
"sd.rdp.domain": {"it": "Dominio:", "en": "Domain:", "de": "Domäne:", "fr": "Domaine :", "es": "Dominio:"},
571+
# ── RDP embedded widget ────────────────────────────────────────────────────
572+
"rdp.embed.waiting": {"it": "Connessione RDP in corso…", "en": "Connecting RDP…", "de": "RDP-Verbindung wird aufgebaut…", "fr": "Connexion RDP en cours…", "es": "Conectando RDP…"},
573+
"rdp.embed.wayland_error": {"it": "Pannello interno non supportato su Wayland. Usa 'Finestra esterna'.", "en": "Embedded panel not supported on Wayland. Use 'External window'.", "de": "Eingebetteter Modus wird unter Wayland nicht unterstützt. Verwende 'Externes Fenster'.", "fr": "Le panneau intégré n'est pas pris en charge sur Wayland. Utilisez 'Fenêtre externe'.", "es": "Panel interno no compatible con Wayland. Usa 'Ventana externa'."},
574+
"rdp.embed.client_missing": {"it": "Client RDP '{client}' non trovato nel PATH.", "en": "RDP client '{client}' not found in PATH.", "de": "RDP-Client '{client}' nicht im PATH gefunden.", "fr": "Client RDP '{client}' introuvable dans le PATH.", "es": "Cliente RDP '{client}' no encontrado en el PATH."},
575+
"sd.rdp.domain_ph": {"it": "es. MAGGIOLI", "en": "e.g. CORP", "de": "z.B. FIRMA", "fr": "ex. SOCIÉTÉ", "es": "ej. EMPRESA"},
569576

570577
"sd.grp.vnc": {"it": "Opzioni VNC", "en": "VNC options", "de": "VNC-Optionen", "fr": "Options VNC", "es": "Opciones VNC"},
571578
"sd.vnc.integrated": {"it": "Integra VNC in una scheda di PCM", "en": "Embed VNC in a PCM tab", "de": "VNC in einen PCM-Tab integrieren", "fr": "Intégrer VNC dans un onglet PCM", "es": "Integrar VNC en una pestaña de PCM"},

0 commit comments

Comments
 (0)