From f6b1546f8b64c64cb237b9ec4bdbbbdde43b89a3 Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Fri, 13 Feb 2026 11:30:34 -0500 Subject: [PATCH] refactor: use a client config dialog for client options --- src/lib/gui/CMakeLists.txt | 3 + src/lib/gui/MainWindow.cpp | 11 ++ src/lib/gui/MainWindow.h | 1 + src/lib/gui/MainWindow.ui | 41 ++++++ src/lib/gui/dialogs/ClientConfigDialog.cpp | 102 +++++++++++++++ src/lib/gui/dialogs/ClientConfigDialog.h | 76 +++++++++++ src/lib/gui/dialogs/ClientConfigDialog.ui | 142 +++++++++++++++++++++ src/lib/gui/dialogs/SettingsDialog.cpp | 8 -- src/lib/gui/dialogs/SettingsDialog.ui | 100 ++------------- translations/deskflow_es.ts | 63 ++++++--- translations/deskflow_it.ts | 63 ++++++--- translations/deskflow_ja.ts | 63 ++++++--- translations/deskflow_ko.ts | 63 ++++++--- translations/deskflow_ru.ts | 63 ++++++--- translations/deskflow_zh_CN.ts | 63 ++++++--- 15 files changed, 647 insertions(+), 215 deletions(-) create mode 100644 src/lib/gui/dialogs/ClientConfigDialog.cpp create mode 100644 src/lib/gui/dialogs/ClientConfigDialog.h create mode 100644 src/lib/gui/dialogs/ClientConfigDialog.ui diff --git a/src/lib/gui/CMakeLists.txt b/src/lib/gui/CMakeLists.txt index 93c77a249..e4388cde4 100644 --- a/src/lib/gui/CMakeLists.txt +++ b/src/lib/gui/CMakeLists.txt @@ -66,6 +66,9 @@ add_library(${target} STATIC dialogs/ActionDialog.cpp dialogs/ActionDialog.h dialogs/ActionDialog.ui + dialogs/ClientConfigDialog.h + dialogs/ClientConfigDialog.cpp + dialogs/ClientConfigDialog.ui dialogs/FingerprintDialog.cpp dialogs/FingerprintDialog.h dialogs/HotkeyDialog.cpp diff --git a/src/lib/gui/MainWindow.cpp b/src/lib/gui/MainWindow.cpp index c6c680e57..91dff167e 100644 --- a/src/lib/gui/MainWindow.cpp +++ b/src/lib/gui/MainWindow.cpp @@ -14,6 +14,7 @@ #include "StyleUtils.h" #include "dialogs/AboutDialog.h" +#include "dialogs/ClientConfigDialog.h" #include "dialogs/FingerprintDialog.h" #include "dialogs/ServerConfigDialog.h" #include "dialogs/SettingsDialog.h" @@ -198,6 +199,7 @@ void MainWindow::setupControls() secureSocket(false); ui->btnConfigureServer->setIcon(QIcon::fromTheme(QStringLiteral("configure"))); + ui->btnConfigureClient->setIcon(QIcon::fromTheme(QStringLiteral("configure"))); if (Settings::value(Settings::Core::LastVersion).toString() != kVersion) { Settings::setValue(Settings::Core::LastVersion, kVersion); @@ -315,6 +317,7 @@ void MainWindow::connectSlots() connect(ui->btnSaveServerConfig, &QPushButton::clicked, this, &MainWindow::saveServerConfig); connect(ui->btnConfigureServer, &QPushButton::clicked, this, [this] { showConfigureServer(""); }); + connect(ui->btnConfigureClient, &QPushButton::clicked, this, [this] { showConfigureClient(); }); connect(ui->lblComputerName, &QLabel::linkActivated, this, &MainWindow::openSettings); connect(m_btnFingerprint, &QPushButton::clicked, this, &MainWindow::showMyFingerprint); @@ -1100,6 +1103,14 @@ void MainWindow::showConfigureServer(const QString &message) } } +void MainWindow::showConfigureClient() +{ + ClientConfigDialog dialog(this); + if ((dialog.exec() == QDialog::Accepted) && m_coreProcess.isStarted()) { + m_coreProcess.restart(); + } +} + void MainWindow::secureSocket(bool secureSocket) { m_secureSocket = secureSocket; diff --git a/src/lib/gui/MainWindow.h b/src/lib/gui/MainWindow.h index 7cd81e241..8327de8c8 100644 --- a/src/lib/gui/MainWindow.h +++ b/src/lib/gui/MainWindow.h @@ -145,6 +145,7 @@ private: void updateScreenName(); void saveSettings() const; void showConfigureServer(const QString &message); + void showConfigureClient(); void restoreWindow(); void setupControls(); void showFirstConnectedMessage(); diff --git a/src/lib/gui/MainWindow.ui b/src/lib/gui/MainWindow.ui index eb25174da..101ef8413 100644 --- a/src/lib/gui/MainWindow.ui +++ b/src/lib/gui/MainWindow.ui @@ -321,6 +321,47 @@ 0 + + + + + 0 + 0 + + + + + 0 + 32 + + + + + 16777215 + 32 + + + + &Configure Client + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 20 + 5 + + + + diff --git a/src/lib/gui/dialogs/ClientConfigDialog.cpp b/src/lib/gui/dialogs/ClientConfigDialog.cpp new file mode 100644 index 000000000..823ecfcdc --- /dev/null +++ b/src/lib/gui/dialogs/ClientConfigDialog.cpp @@ -0,0 +1,102 @@ +/* + * Deskflow -- mouse and keyboard sharing utility + * SPDX-FileCopyrightText: (C) 2026 Deskflow Developers + * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception + */ + +#include "ClientConfigDialog.h" +#include "ui_ClientConfigDialog.h" + +#include "common/Settings.h" + +#include + +ClientConfigDialog::ClientConfigDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ClientConfigDialog) +{ + ui->setupUi(this); + updateText(); + initConnections(); + load(); + setButtonBoxEnabledButtons(); +} + +ClientConfigDialog::~ClientConfigDialog() +{ + delete ui; +} + +void ClientConfigDialog::changeEvent(QEvent *e) +{ + QDialog::changeEvent(e); + if (e->type() == QEvent::LanguageChange) { + ui->retranslateUi(this); + updateText(); + } +} + +void ClientConfigDialog::updateText() const +{ + ui->buttonBox->button(QDialogButtonBox::Save)->setToolTip(tr("Close and save changes")); + ui->buttonBox->button(QDialogButtonBox::Cancel)->setToolTip(tr("Close and forget changes")); + ui->buttonBox->button(QDialogButtonBox::Reset)->setToolTip(tr("Reset to stored values")); + ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setToolTip(tr("Reset to default values")); +} + +void ClientConfigDialog::initConnections() const +{ + connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &ClientConfigDialog::save); + connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + connect(ui->buttonBox->button(QDialogButtonBox::Reset), &QPushButton::clicked, this, &ClientConfigDialog::load); + connect( + ui->buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, this, + &ClientConfigDialog::resetToDefault + ); + + connect(ui->cbLanguageSync, &QCheckBox::checkStateChanged, this, &ClientConfigDialog::setButtonBoxEnabledButtons); + connect(ui->cbYScrollInvert, &QCheckBox::checkStateChanged, this, &ClientConfigDialog::setButtonBoxEnabledButtons); + connect(ui->sbYScrollScale, &QDoubleSpinBox::valueChanged, this, &ClientConfigDialog::setButtonBoxEnabledButtons); +} + +bool ClientConfigDialog::isModified() const +{ + return (ui->cbLanguageSync->isChecked() != Settings::value(Settings::Client::LanguageSync).toBool()) || + (ui->cbYScrollInvert->isChecked() != Settings::value(Settings::Client::InvertYScroll).toBool()) || + (ui->sbYScrollScale->value() != Settings::value(Settings::Client::YScrollScale).toDouble()); +} + +bool ClientConfigDialog::isDefault() const +{ + return (ui->cbLanguageSync->isChecked() == Settings::defaultValue(Settings::Client::LanguageSync).toBool()) && + (ui->cbYScrollInvert->isChecked() == Settings::defaultValue(Settings::Client::InvertYScroll).toBool()) && + (ui->sbYScrollScale->value() == Settings::defaultValue(Settings::Client::YScrollScale).toDouble()); +} + +void ClientConfigDialog::setButtonBoxEnabledButtons() const +{ + const bool modified = isModified(); + ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(modified); + ui->buttonBox->button(QDialogButtonBox::Reset)->setEnabled(modified); + ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled(!isDefault()); +} + +void ClientConfigDialog::load() +{ + ui->cbLanguageSync->setChecked(Settings::value(Settings::Client::LanguageSync).toBool()); + ui->cbYScrollInvert->setChecked(Settings::value(Settings::Client::InvertYScroll).toBool()); + ui->sbYScrollScale->setValue(Settings::value(Settings::Client::YScrollScale).toDouble()); +} + +void ClientConfigDialog::resetToDefault() +{ + ui->cbLanguageSync->setChecked(Settings::defaultValue(Settings::Client::LanguageSync).toBool()); + ui->cbYScrollInvert->setChecked(Settings::defaultValue(Settings::Client::InvertYScroll).toBool()); + ui->sbYScrollScale->setValue(Settings::defaultValue(Settings::Client::YScrollScale).toDouble()); +} + +void ClientConfigDialog::save() +{ + Settings::setValue(Settings::Client::LanguageSync, ui->cbLanguageSync->isChecked()); + Settings::setValue(Settings::Client::InvertYScroll, ui->cbYScrollInvert->isChecked()); + Settings::setValue(Settings::Client::YScrollScale, ui->sbYScrollScale->value()); + QDialog::accept(); +} diff --git a/src/lib/gui/dialogs/ClientConfigDialog.h b/src/lib/gui/dialogs/ClientConfigDialog.h new file mode 100644 index 000000000..2554e3ef9 --- /dev/null +++ b/src/lib/gui/dialogs/ClientConfigDialog.h @@ -0,0 +1,76 @@ +/* + * Deskflow -- mouse and keyboard sharing utility + * SPDX-FileCopyrightText: (C) 2026 Deskflow Developers + * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception + */ + +#pragma once + +#include + +namespace Ui { +class ClientConfigDialog; +} + +/** + * @brief The ClientConfigDialog class + * Simple dialog to allow users to configure the Client settings + */ +class ClientConfigDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ClientConfigDialog(QWidget *parent = nullptr); + ~ClientConfigDialog() override; + +protected: + void changeEvent(QEvent *e) override; + +private: + /** + * @brief updateText update widget text + */ + void updateText() const; + + /** + * @brief initConnections + * Sets up all the connections + */ + void initConnections() const; + + /** + * @brief isModified + * @return true when any client settings in the gui do not match the stored settings values. + */ + bool isModified() const; + + /** + * @brief isDefault + * @return true if all client settings match the default values + */ + bool isDefault() const; + + /** + * @brief setButtonBoxEnabledButtons + * Enable / Disable the button box buttons based on the state of the gui + */ + void setButtonBoxEnabledButtons() const; + + /** + * @brief Load the client setting into the gui + */ + void load(); + + /** + * @brief Set the gui values to the defalut values for all client settings + */ + void resetToDefault(); + + /** + * @brief save to settings and then calls QDialog::accept + */ + void save(); + + Ui::ClientConfigDialog *ui = nullptr; +}; diff --git a/src/lib/gui/dialogs/ClientConfigDialog.ui b/src/lib/gui/dialogs/ClientConfigDialog.ui new file mode 100644 index 000000000..5421f1dcd --- /dev/null +++ b/src/lib/gui/dialogs/ClientConfigDialog.ui @@ -0,0 +1,142 @@ + + + ClientConfigDialog + + + + 0 + 0 + 425 + 148 + + + + + 0 + 0 + + + + Client Configuration + + + + + + Use server's keyboard language on this computer + + + + + + + Invert vertical scroll direction on this computer + + + + + + + + + + 0 + 0 + + + + Vertical Scroll Scale + + + + + + + + 0 + 0 + + + + true + + + QAbstractSpinBox::CorrectionMode::CorrectToNearestValue + + + 0.100000000000000 + + + 10.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Orientation::Horizontal + + + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Reset|QDialogButtonBox::StandardButton::RestoreDefaults|QDialogButtonBox::StandardButton::Save + + + + + + + + + buttonBox + accepted() + ClientConfigDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ClientConfigDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/lib/gui/dialogs/SettingsDialog.cpp b/src/lib/gui/dialogs/SettingsDialog.cpp index 92969cc42..5c0514b0c 100644 --- a/src/lib/gui/dialogs/SettingsDialog.cpp +++ b/src/lib/gui/dialogs/SettingsDialog.cpp @@ -181,12 +181,9 @@ void SettingsDialog::accept() Settings::setValue(Settings::Security::Certificate, ui->lineTlsCertPath->text()); Settings::setValue(Settings::Security::KeySize, ui->comboTlsKeyLength->currentText().toInt()); Settings::setValue(Settings::Security::TlsEnabled, ui->groupSecurity->isChecked()); - Settings::setValue(Settings::Client::LanguageSync, ui->cbLanguageSync->isChecked()); - Settings::setValue(Settings::Client::InvertYScroll, ui->cbScrollDirection->isChecked()); Settings::setValue(Settings::Gui::CloseToTray, ui->cbCloseToTray->isChecked()); Settings::setValue(Settings::Gui::SymbolicTrayIcon, ui->rbIconMono->isChecked()); Settings::setValue(Settings::Security::CheckPeers, ui->cbRequireClientCert->isChecked()); - Settings::setValue(Settings::Client::YScrollScale, ui->sbYScrollScale->value()); Settings::setValue(Settings::Core::Language, I18N::nativeTo639Name(ui->comboLanguage->currentText())); Settings::setValue(Settings::Log::GuiDebug, ui->cbGuiDebug->isChecked()); Settings::setValue(Settings::Core::UseWlClipboard, ui->cbUseWlClipboard->isChecked()); @@ -210,12 +207,9 @@ void SettingsDialog::loadFromConfig() ui->lineLogFilename->setText(Settings::value(Settings::Log::File).toString()); ui->cbAutoHide->setChecked(Settings::value(Settings::Gui::Autohide).toBool()); ui->cbPreventSleep->setChecked(Settings::value(Settings::Core::PreventSleep).toBool()); - ui->cbLanguageSync->setChecked(Settings::value(Settings::Client::LanguageSync).toBool()); - ui->cbScrollDirection->setChecked(Settings::value(Settings::Client::InvertYScroll).toBool()); ui->cbCloseToTray->setChecked(Settings::value(Settings::Gui::CloseToTray).toBool()); ui->cbElevateDaemon->setChecked(Settings::value(Settings::Daemon::Elevate).toBool()); ui->cbAutoUpdate->setChecked(Settings::value(Settings::Gui::AutoUpdateCheck).toBool()); - ui->sbYScrollScale->setValue(Settings::value(Settings::Client::YScrollScale).toDouble()); ui->cbGuiDebug->setChecked(Settings::value(Settings::Log::GuiDebug).toBool()); ui->cbUseWlClipboard->setChecked(Settings::value(Settings::Core::UseWlClipboard).toBool()); ui->cbShowVersion->setChecked(Settings::value(Settings::Gui::ShowVersionInTitle).toBool()); @@ -331,8 +325,6 @@ void SettingsDialog::updateControls() ui->widgetWlClipboard->setVisible(false); } - ui->groupClientOptions->setEnabled(writable && isClientMode()); - ui->widgetLogFilename->setEnabled(writable && logToFile); updateTlsControls(); diff --git a/src/lib/gui/dialogs/SettingsDialog.ui b/src/lib/gui/dialogs/SettingsDialog.ui index 3c737e412..187eedafa 100644 --- a/src/lib/gui/dialogs/SettingsDialog.ui +++ b/src/lib/gui/dialogs/SettingsDialog.ui @@ -33,93 +33,6 @@ &Regular - - - - - 0 - 0 - - - - Client mode - - - - - - Use server's keyboard language on this computer - - - - - - - Invert vertical scroll direction on this computer - - - - - - - - - - 0 - 0 - - - - Vertical Scroll Scale - - - - - - - - 0 - 0 - - - - true - - - QAbstractSpinBox::CorrectionMode::CorrectToNearestValue - - - 0.100000000000000 - - - 10.000000000000000 - - - 0.100000000000000 - - - 1.000000000000000 - - - - - - - Qt::Orientation::Horizontal - - - - 40 - 20 - - - - - - - - - @@ -357,6 +270,19 @@ + + + + Qt::Orientation::Vertical + + + + 20 + 40 + + + + diff --git a/translations/deskflow_es.ts b/translations/deskflow_es.ts index a1b46ffe5..ee485eac1 100644 --- a/translations/deskflow_es.ts +++ b/translations/deskflow_es.ts @@ -139,6 +139,41 @@ p, li { white-space: pre-wrap; } Cambiar a + + ClientConfigDialog + + Client Configuration + Configuración del cliente + + + Use server's keyboard language on this computer + Utilice el idioma del teclado del servidor en esta computadora + + + Invert vertical scroll direction on this computer + Invertir la dirección del desplazamiento vertical en este ordenador + + + Vertical Scroll Scale + Escala de desplazamiento vertical + + + Close and save changes + Cerrar y guardar los cambios + + + Close and forget changes + Cerrar y olvidar los cambios + + + Reset to stored values + Restablecer los valores almacenados + + + Reset to default values + Restablecer valores predeterminados + + FingerprintDialog @@ -538,6 +573,10 @@ Nombres válidos: The Core executable could not be successfully started, although it does exist. Please check if you have sufficient permissions to run this program. No se pudo iniciar el archivo ejecutable principal, aunque existe. Compruebe si tiene permisos suficientes para ejecutar este programa. + + &Configure Client + &Configurar cliente + Connect to: Conectarse a: @@ -557,10 +596,6 @@ Nombres válidos: QObject - - %1 is already running - %1 ya se está ejecutando - fatal error error fatal @@ -740,6 +775,10 @@ Nombres válidos: %1 will be replaced by the certificate path No se pudo leer la clave RSA del archivo de certificado: %1 + + %1 is already running + %1 ya se está ejecutando + ScreenSettingsDialog @@ -1104,14 +1143,6 @@ Al habilitar esta opción, se deshabilitará la interfaz gráfica de usuario (GU &Regular &Regular - - Client mode - Modo cliente - - - Use server's keyboard language on this computer - Utilice el idioma del teclado del servidor en esta computadora - App Aplicación @@ -1316,14 +1347,6 @@ Al habilitar esta opción, se deshabilitará la interfaz gráfica de usuario (GU Include version in the window title Incluir la versión en el título de la ventana - - Invert vertical scroll direction on this computer - Invertir la dirección del desplazamiento vertical en este ordenador - - - Vertical Scroll Scale - Escala de desplazamiento vertical - i18n diff --git a/translations/deskflow_it.ts b/translations/deskflow_it.ts index 0fff48b3f..1aac3ad10 100644 --- a/translations/deskflow_it.ts +++ b/translations/deskflow_it.ts @@ -139,6 +139,41 @@ p, li { white-space: pre-wrap; } Passa a + + ClientConfigDialog + + Client Configuration + Configurazione del client + + + Use server's keyboard language on this computer + Usa la lingua della tastiera del server su questo computer + + + Invert vertical scroll direction on this computer + Inverti la direzione dello scorrimento verticale su questo computer + + + Vertical Scroll Scale + Scala di scorrimento verticale + + + Close and save changes + Chiudi e salva le modifiche + + + Close and forget changes + Chiudi e dimentica le modifiche + + + Reset to stored values + Ripristina i valori memorizzati + + + Reset to default values + Ripristina i valori predefiniti + + FingerprintDialog @@ -538,6 +573,10 @@ Nomi validi: The Core executable could not be successfully started, although it does exist. Please check if you have sufficient permissions to run this program. Non è stato possibile avviare correttamente l'eseguibile Core, sebbene esista. Verifica di disporre delle autorizzazioni necessarie per eseguire questo programma. + + &Configure Client + &Configurare il client + Connect to: Connettiti a: @@ -557,10 +596,6 @@ Nomi validi: QObject - - %1 is already running - %1 è già in esecuzione - fatal error errore fatale @@ -740,6 +775,10 @@ Nomi validi: %1 will be replaced by the certificate path impossibile leggere la chiave RSA dal file del certificato: %1 + + %1 is already running + %1 è già in esecuzione + ScreenSettingsDialog @@ -1104,14 +1143,6 @@ L'abilitazione di questa impostazione disabiliterà l'interfaccia graf &Regular &Regolare - - Client mode - Modalità client - - - Use server's keyboard language on this computer - Usa la lingua della tastiera del server su questo computer - App App @@ -1316,14 +1347,6 @@ L'abilitazione di questa impostazione disabiliterà l'interfaccia graf Include version in the window title Includi la versione nel titolo della finestra - - Invert vertical scroll direction on this computer - Inverti la direzione dello scorrimento verticale su questo computer - - - Vertical Scroll Scale - Scala di scorrimento verticale - i18n diff --git a/translations/deskflow_ja.ts b/translations/deskflow_ja.ts index 7faf17ffd..4eb021b31 100644 --- a/translations/deskflow_ja.ts +++ b/translations/deskflow_ja.ts @@ -139,6 +139,41 @@ p, li { white-space: pre-wrap; } に切り替える + + ClientConfigDialog + + Client Configuration + クライアント構成 + + + Use server's keyboard language on this computer + サーバー側のキーボード言語をこのコンピューターで使用する + + + Invert vertical scroll direction on this computer + このコンピューターで垂直スクロールの方向を反転させる + + + Vertical Scroll Scale + 垂直スクロールスケール + + + Close and save changes + 閉じて変更を保存する + + + Close and forget changes + 変更を閉じて忘れる + + + Reset to stored values + 保存した値にリセット + + + Reset to default values + デフォルト値にリセット + + FingerprintDialog @@ -537,6 +572,10 @@ Valid names: The Core executable could not be successfully started, although it does exist. Please check if you have sufficient permissions to run this program. コア実行ファイルは存在していますが、起動できませんでした。このプログラムを実行するのに十分な権限があることを確認してください。 + + &Configure Client + クライアントの設定 (&C) + Connect to: 接続先: @@ -556,10 +595,6 @@ Valid names: QObject - - %1 is already running - %1 は既に起動中です - fatal error 致命的なエラー @@ -741,6 +776,10 @@ Valid names: %1 will be replaced by the certificate path 証明書ファイルから RSA キーを読み取ることができませんでした: %1 + + %1 is already running + %1 は既に起動中です + ScreenSettingsDialog @@ -1105,14 +1144,6 @@ Enabling this setting will disable the server config GUI. &Regular 基本(&R) - - Client mode - クライアントモード - - - Use server's keyboard language on this computer - サーバー側のキーボード言語をこのコンピューターで使用する - App アプリケーション @@ -1317,14 +1348,6 @@ Enabling this setting will disable the server config GUI. Include version in the window title ウィンドウタイトルにバージョン情報を含める - - Invert vertical scroll direction on this computer - このコンピューターで垂直スクロールの方向を反転させる - - - Vertical Scroll Scale - 垂直スクロールスケール - i18n diff --git a/translations/deskflow_ko.ts b/translations/deskflow_ko.ts index 7f2e8c52a..a0e6c4e1e 100644 --- a/translations/deskflow_ko.ts +++ b/translations/deskflow_ko.ts @@ -139,6 +139,41 @@ p, li { white-space: pre-wrap; } 전환: + + ClientConfigDialog + + Client Configuration + 클라이언트 구성 + + + Use server's keyboard language on this computer + 이 컴퓨터에서 서버의 키보드 언어 사용 + + + Invert vertical scroll direction on this computer + 이 컴퓨터에서 세로 스크롤 방향을 반전합니다 + + + Vertical Scroll Scale + 수직 스크롤 스케일 + + + Close and save changes + 닫기 및 변경 사항 저장 + + + Close and forget changes + 설정을 저장하고 나면 변경 사항은 더 이상 신경 쓸 필요가 없습니다 + + + Reset to stored values + 저장된 값으로 재설정 + + + Reset to default values + 기본값으로 재설정 + + FingerprintDialog @@ -537,6 +572,10 @@ Valid names: The Core executable could not be successfully started, although it does exist. Please check if you have sufficient permissions to run this program. 코어 실행 파일은 존재하지만 정상적으로 시작할 수 없습니다. 이 프로그램을 실행할 권한이 충분한지 확인하세요. + + &Configure Client + 클라이언트 구성 (&C) + Connect to: 연결 대상: @@ -556,10 +595,6 @@ Valid names: QObject - - %1 is already running - %1이(가) 이미 실행 중입니다 - fatal error 치명적 오류 @@ -739,6 +774,10 @@ Valid names: %1 will be replaced by the certificate path 인증서 파일에서 RSA 키를 읽지 못했습니다: %1 + + %1 is already running + %1이(가) 이미 실행 중입니다 + ScreenSettingsDialog @@ -1103,14 +1142,6 @@ Enabling this setting will disable the server config GUI. &Regular 일반(&R) - - Client mode - 클라이언트 모드 - - - Use server's keyboard language on this computer - 이 컴퓨터에서 서버의 키보드 언어 사용 - App @@ -1315,14 +1346,6 @@ Enabling this setting will disable the server config GUI. Include version in the window title 창 제목에 버전 정보 포함 - - Invert vertical scroll direction on this computer - 이 컴퓨터에서 세로 스크롤 방향을 반전합니다 - - - Vertical Scroll Scale - 수직 스크롤 스케일 - i18n diff --git a/translations/deskflow_ru.ts b/translations/deskflow_ru.ts index 30be868b6..2ec05529e 100644 --- a/translations/deskflow_ru.ts +++ b/translations/deskflow_ru.ts @@ -139,6 +139,41 @@ p, li { white-space: pre-wrap; } Переключиться на + + ClientConfigDialog + + Client Configuration + Конфигурация клиента + + + Use server's keyboard language on this computer + Использовать язык клавиатуры сервера на этом компьютере + + + Invert vertical scroll direction on this computer + Инвертировать направление вертикальной прокрутки на этом компьютере + + + Vertical Scroll Scale + Вертикальная шкала прокрутки + + + Close and save changes + Закрыть и сохранить изменения + + + Close and forget changes + Закройте изменения и забудьте о них + + + Reset to stored values + Сбросить до сохраненных значений + + + Reset to default values + Сбросить до значений по умолчанию + + FingerprintDialog @@ -539,6 +574,10 @@ Valid names: The Core executable could not be successfully started, although it does exist. Please check if you have sufficient permissions to run this program. Не удалось запустить исполняемый файл ядра, хотя он существует. Проверьте наличие прав на запуск программы. + + &Configure Client + &Настройка клиента + Connect to: Подключиться к: @@ -558,10 +597,6 @@ Valid names: QObject - - %1 is already running - %1 уже запущен - fatal error критическая ошибка @@ -741,6 +776,10 @@ Valid names: %1 will be replaced by the certificate path не удалось прочитать RSA-ключ из файла сертификата: %1 + + %1 is already running + %1 уже запущен + ScreenSettingsDialog @@ -1103,14 +1142,6 @@ Enabling this setting will disable the server config GUI. &Regular &Основные - - Client mode - Режим клиента - - - Use server's keyboard language on this computer - Использовать язык клавиатуры сервера на этом компьютере - App Приложение @@ -1315,14 +1346,6 @@ Enabling this setting will disable the server config GUI. Include version in the window title Включить номер версии в заголовок окна - - Invert vertical scroll direction on this computer - Инвертировать направление вертикальной прокрутки на этом компьютере - - - Vertical Scroll Scale - Вертикальная шкала прокрутки - i18n diff --git a/translations/deskflow_zh_CN.ts b/translations/deskflow_zh_CN.ts index 44d45cd49..e73a63f60 100644 --- a/translations/deskflow_zh_CN.ts +++ b/translations/deskflow_zh_CN.ts @@ -139,6 +139,41 @@ p, li { white-space: pre-wrap; } 切换到 + + ClientConfigDialog + + Client Configuration + 客户端配置 + + + Use server's keyboard language on this computer + 在此计算机上使用服务器的键盘语言 + + + Invert vertical scroll direction on this computer + 在此计算机上反转垂直滚动方向 + + + Vertical Scroll Scale + 垂直滚动比例 + + + Close and save changes + 关闭并保存更改 + + + Close and forget changes + 关闭并忘记更改 + + + Reset to stored values + 重置为存储值 + + + Reset to default values + 重置为默认值 + + FingerprintDialog @@ -537,6 +572,10 @@ Valid names: The Core executable could not be successfully started, although it does exist. Please check if you have sufficient permissions to run this program. Core 可执行文件虽然存在,但无法成功启动。请检查您是否拥有运行此程序的足够权限。 + + &Configure Client + 配置客户端(&C) + Connect to: 连接到: @@ -556,10 +595,6 @@ Valid names: QObject - - %1 is already running - %1 已经在运行中 - fatal error 致命错误 @@ -741,6 +776,10 @@ Valid names: %1 will be replaced by the certificate path 无法从证书文件中读取 RSA 密钥:%1 + + %1 is already running + %1 已经在运行中 + ScreenSettingsDialog @@ -1105,14 +1144,6 @@ Enabling this setting will disable the server config GUI. &Regular 常规(&R) - - Client mode - 客户端模式 - - - Use server's keyboard language on this computer - 在此计算机上使用服务器的键盘语言 - App 应用程序 @@ -1317,14 +1348,6 @@ Enabling this setting will disable the server config GUI. Include version in the window title 在窗口标题中包含版本信息 - - Invert vertical scroll direction on this computer - 在此计算机上反转垂直滚动方向 - - - Vertical Scroll Scale - 垂直滚动比例 - i18n