Write trace to file for debugging
This commit is contained in:
		
							parent
							
								
									58f6283fe3
								
							
						
					
					
						commit
						013370e51e
					
				@ -11,6 +11,8 @@
 | 
				
			|||||||
#include "updates.h"
 | 
					#include "updates.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <QApplication>
 | 
					#include <QApplication>
 | 
				
			||||||
 | 
					#include <QDesktopServices>
 | 
				
			||||||
 | 
					#include <QMessageBox>
 | 
				
			||||||
#include <QNetworkProxy>
 | 
					#include <QNetworkProxy>
 | 
				
			||||||
#include <QThread>
 | 
					#include <QThread>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -66,12 +68,14 @@ Manager::~Manager()
 | 
				
			|||||||
    settings_->lastUpdateCheck = updateAutoChecker_->lastCheckDate();
 | 
					    settings_->lastUpdateCheck = updateAutoChecker_->lastCheckDate();
 | 
				
			||||||
    settings_->saveLastUpdateCheck();
 | 
					    settings_->saveLastUpdateCheck();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  setupTrace(false);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Manager::updateSettings()
 | 
					void Manager::updateSettings()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  LTRACE() << "updateSettings";
 | 
					  LTRACE() << "updateSettings";
 | 
				
			||||||
  SOFT_ASSERT(settings_, return );
 | 
					  SOFT_ASSERT(settings_, return );
 | 
				
			||||||
 | 
					  setupTrace(settings_->writeTrace);
 | 
				
			||||||
  setupProxy(*settings_);
 | 
					  setupProxy(*settings_);
 | 
				
			||||||
  setupUpdates(*settings_);
 | 
					  setupUpdates(*settings_);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -127,6 +131,40 @@ void Manager::setupUpdates(const Settings &settings)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Manager::setupTrace(bool isOn)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  const auto oldFile = debug::traceFileName();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!isOn) {
 | 
				
			||||||
 | 
					    debug::setTraceFileName({});
 | 
				
			||||||
 | 
					    debug::isTrace = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!oldFile.isEmpty())
 | 
				
			||||||
 | 
					      QDesktopServices::openUrl(QUrl::fromLocalFile(oldFile));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!oldFile.isEmpty())
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const auto traceFile =
 | 
				
			||||||
 | 
					      QStandardPaths::writableLocation(QStandardPaths::TempLocation) +
 | 
				
			||||||
 | 
					      QLatin1String("/multidir-") +
 | 
				
			||||||
 | 
					      QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!debug::setTraceFileName(traceFile)) {
 | 
				
			||||||
 | 
					    QMessageBox::warning(
 | 
				
			||||||
 | 
					        nullptr, {},
 | 
				
			||||||
 | 
					        QObject::tr("Failed to setup log to file: %1").arg(traceFile));
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  debug::isTrace = true;
 | 
				
			||||||
 | 
					  QMessageBox::information(
 | 
				
			||||||
 | 
					      nullptr, {}, QObject::tr("Started logging to file: %1").arg(traceFile));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Manager::finishTask(const TaskPtr &task)
 | 
					void Manager::finishTask(const TaskPtr &task)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  SOFT_ASSERT(task, return );
 | 
					  SOFT_ASSERT(task, return );
 | 
				
			||||||
 | 
				
			|||||||
@ -31,6 +31,7 @@ private:
 | 
				
			|||||||
  void updateSettings();
 | 
					  void updateSettings();
 | 
				
			||||||
  void setupProxy(const Settings &settings);
 | 
					  void setupProxy(const Settings &settings);
 | 
				
			||||||
  void setupUpdates(const Settings &settings);
 | 
					  void setupUpdates(const Settings &settings);
 | 
				
			||||||
 | 
					  void setupTrace(bool isOn);
 | 
				
			||||||
  void finishTask(const TaskPtr &task);
 | 
					  void finishTask(const TaskPtr &task);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::unique_ptr<Settings> settings_;
 | 
					  std::unique_ptr<Settings> settings_;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,72 @@
 | 
				
			|||||||
#include "debug.h"
 | 
					#include "debug.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <QDateTime>
 | 
				
			||||||
 | 
					#include <QFileInfo>
 | 
				
			||||||
 | 
					#include <QMessageBox>
 | 
				
			||||||
 | 
					#include <QMutex>
 | 
				
			||||||
 | 
					#include <QThread>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QtMessageHandler original = nullptr;
 | 
				
			||||||
 | 
					QMutex mutex;
 | 
				
			||||||
 | 
					QFile file;
 | 
				
			||||||
 | 
					QTextStream stream;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void handler(QtMsgType type, const QMessageLogContext &context,
 | 
				
			||||||
 | 
					             const QString &msg)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  const auto typeName = QMap<QtMsgType, QByteArray>{{QtDebugMsg, " DEBUG "},
 | 
				
			||||||
 | 
					                                                    {QtInfoMsg, " INFO "},
 | 
				
			||||||
 | 
					                                                    {QtWarningMsg, " WARN "},
 | 
				
			||||||
 | 
					                                                    {QtCriticalMsg, " CRIT "},
 | 
				
			||||||
 | 
					                                                    {QtFatalMsg, " FATAL "}}
 | 
				
			||||||
 | 
					                            .value(type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const auto message =
 | 
				
			||||||
 | 
					      QDateTime::currentDateTime().toString(Qt::ISODate).toUtf8() + ' ' +
 | 
				
			||||||
 | 
					      QByteArray::number(qintptr(QThread::currentThreadId())) + ' ' +
 | 
				
			||||||
 | 
					      QFileInfo(context.file).fileName().toUtf8() + ':' +
 | 
				
			||||||
 | 
					      QByteArray::number(context.line) + typeName + msg.toUtf8() + '\n';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  SOFT_ASSERT(original, return );
 | 
				
			||||||
 | 
					  original(type, context, msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  QMutexLocker locker(&mutex);
 | 
				
			||||||
 | 
					  file.write(message);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}  // namespace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace debug
 | 
					namespace debug
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
std::atomic_bool isTrace;
 | 
					std::atomic_bool isTrace;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString traceFileName()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  QMutexLocker locker(&mutex);
 | 
				
			||||||
 | 
					  return file.fileName();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool setTraceFileName(const QString &fileName)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  QMutexLocker locker(&mutex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  original = nullptr;
 | 
				
			||||||
 | 
					  qInstallMessageHandler(nullptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (file.isOpen())
 | 
				
			||||||
 | 
					    file.close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (fileName.isEmpty())
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  file.setFileName(fileName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!file.open(QFile::WriteOnly | QFile::Unbuffered))
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  original = qInstallMessageHandler(handler);
 | 
				
			||||||
 | 
					  return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}  // namespace debug
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <QDebug>
 | 
					#include <QDebug>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace debug
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					extern std::atomic_bool isTrace;
 | 
				
			||||||
 | 
					QString traceFileName();
 | 
				
			||||||
 | 
					bool setTraceFileName(const QString& fileName);
 | 
				
			||||||
 | 
					};  // namespace debug
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SOFT_ASSERT(XXX, WORKAROUND)                                         \
 | 
					#define SOFT_ASSERT(XXX, WORKAROUND)                                         \
 | 
				
			||||||
  if (!(XXX)) {                                                              \
 | 
					  if (!(XXX)) {                                                              \
 | 
				
			||||||
    qCritical() << "Soft assertion failed at" << __FILE__ << __LINE__ << ":" \
 | 
					    qCritical() << "Soft assertion failed at" << __FILE__ << __LINE__ << ":" \
 | 
				
			||||||
@ -23,11 +30,6 @@
 | 
				
			|||||||
    Q_ASSERT(XXX);                                                      \
 | 
					    Q_ASSERT(XXX);                                                      \
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace debug
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
extern std::atomic_bool isTrace;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define LTRACE()      \
 | 
					#define LTRACE()      \
 | 
				
			||||||
  if (debug::isTrace) \
 | 
					  if (debug::isTrace) \
 | 
				
			||||||
  qDebug()
 | 
					  qDebug()
 | 
				
			||||||
 | 
				
			|||||||
@ -40,7 +40,6 @@ const QString qs_doTranslation = "doTranslation";
 | 
				
			|||||||
const QString qs_ignoreSslErrors = "ignoreSslErrors";
 | 
					const QString qs_ignoreSslErrors = "ignoreSslErrors";
 | 
				
			||||||
const QString qs_translationLanguage = "translation_language";
 | 
					const QString qs_translationLanguage = "translation_language";
 | 
				
			||||||
const QString qs_translationTimeout = "translation_timeout";
 | 
					const QString qs_translationTimeout = "translation_timeout";
 | 
				
			||||||
const QString qs_debugMode = "translation_debug";
 | 
					 | 
				
			||||||
const QString qs_translators = "translators";
 | 
					const QString qs_translators = "translators";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const QString qs_representationGroup = "Representation";
 | 
					const QString qs_representationGroup = "Representation";
 | 
				
			||||||
@ -124,6 +123,7 @@ void cleanupOutdated(QSettings& settings)
 | 
				
			|||||||
  settings.beginGroup(qs_translationGroup);
 | 
					  settings.beginGroup(qs_translationGroup);
 | 
				
			||||||
  settings.remove("source_language");
 | 
					  settings.remove("source_language");
 | 
				
			||||||
  settings.remove("forceRotateTranslators");
 | 
					  settings.remove("forceRotateTranslators");
 | 
				
			||||||
 | 
					  settings.remove("translation_debug");
 | 
				
			||||||
  settings.endGroup();
 | 
					  settings.endGroup();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -181,7 +181,6 @@ void Settings::save() const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  settings.setValue(qs_doTranslation, doTranslation);
 | 
					  settings.setValue(qs_doTranslation, doTranslation);
 | 
				
			||||||
  settings.setValue(qs_ignoreSslErrors, ignoreSslErrors);
 | 
					  settings.setValue(qs_ignoreSslErrors, ignoreSslErrors);
 | 
				
			||||||
  settings.setValue(qs_debugMode, debugMode);
 | 
					 | 
				
			||||||
  settings.setValue(qs_translationLanguage, targetLanguage);
 | 
					  settings.setValue(qs_translationLanguage, targetLanguage);
 | 
				
			||||||
  settings.setValue(qs_translationTimeout, int(translationTimeout.count()));
 | 
					  settings.setValue(qs_translationTimeout, int(translationTimeout.count()));
 | 
				
			||||||
  settings.setValue(qs_translators, translators);
 | 
					  settings.setValue(qs_translators, translators);
 | 
				
			||||||
@ -272,7 +271,6 @@ void Settings::load()
 | 
				
			|||||||
  doTranslation = settings.value(qs_doTranslation, doTranslation).toBool();
 | 
					  doTranslation = settings.value(qs_doTranslation, doTranslation).toBool();
 | 
				
			||||||
  ignoreSslErrors =
 | 
					  ignoreSslErrors =
 | 
				
			||||||
      settings.value(qs_ignoreSslErrors, ignoreSslErrors).toBool();
 | 
					      settings.value(qs_ignoreSslErrors, ignoreSslErrors).toBool();
 | 
				
			||||||
  debugMode = settings.value(qs_debugMode, debugMode).toBool();
 | 
					 | 
				
			||||||
  targetLanguage =
 | 
					  targetLanguage =
 | 
				
			||||||
      settings.value(qs_translationLanguage, targetLanguage).toString();
 | 
					      settings.value(qs_translationLanguage, targetLanguage).toString();
 | 
				
			||||||
  translationTimeout = std::chrono::seconds(
 | 
					  translationTimeout = std::chrono::seconds(
 | 
				
			||||||
 | 
				
			|||||||
@ -51,7 +51,7 @@ public:
 | 
				
			|||||||
  Substitutions userSubstitutions;
 | 
					  Substitutions userSubstitutions;
 | 
				
			||||||
  bool useUserSubstitutions{true};
 | 
					  bool useUserSubstitutions{true};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool debugMode{false};
 | 
					  bool writeTrace{false};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QString tessdataPath;
 | 
					  QString tessdataPath;
 | 
				
			||||||
  QString sourceLanguage{"eng"};
 | 
					  QString sourceLanguage{"eng"};
 | 
				
			||||||
 | 
				
			|||||||
@ -20,8 +20,6 @@ SettingsEditor::SettingsEditor(Manager &manager, update::Loader &updater)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  ui->setupUi(this);
 | 
					  ui->setupUi(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui->translatorDebugCheck->hide();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  connect(ui->buttonBox, &QDialogButtonBox::clicked,  //
 | 
					  connect(ui->buttonBox, &QDialogButtonBox::clicked,  //
 | 
				
			||||||
          this, &SettingsEditor::handleButtonBoxClicked);
 | 
					          this, &SettingsEditor::handleButtonBoxClicked);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -145,6 +143,7 @@ Settings SettingsEditor::settings() const
 | 
				
			|||||||
      ui->captureLockedEdit->keySequence().toString();
 | 
					      ui->captureLockedEdit->keySequence().toString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  settings.showMessageOnStart = ui->showOnStart->isChecked();
 | 
					  settings.showMessageOnStart = ui->showOnStart->isChecked();
 | 
				
			||||||
 | 
					  settings.writeTrace = ui->writeTrace->isChecked();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  settings.proxyType = ProxyType(ui->proxyTypeCombo->currentIndex());
 | 
					  settings.proxyType = ProxyType(ui->proxyTypeCombo->currentIndex());
 | 
				
			||||||
  settings.proxyHostName = ui->proxyHostEdit->text();
 | 
					  settings.proxyHostName = ui->proxyHostEdit->text();
 | 
				
			||||||
@ -161,7 +160,6 @@ Settings SettingsEditor::settings() const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  settings.doTranslation = ui->doTranslationCheck->isChecked();
 | 
					  settings.doTranslation = ui->doTranslationCheck->isChecked();
 | 
				
			||||||
  settings.ignoreSslErrors = ui->ignoreSslCheck->isChecked();
 | 
					  settings.ignoreSslErrors = ui->ignoreSslCheck->isChecked();
 | 
				
			||||||
  settings.debugMode = ui->translatorDebugCheck->isChecked();
 | 
					 | 
				
			||||||
  settings.translationTimeout =
 | 
					  settings.translationTimeout =
 | 
				
			||||||
      std::chrono::seconds(ui->translateTimeoutSpin->value());
 | 
					      std::chrono::seconds(ui->translateTimeoutSpin->value());
 | 
				
			||||||
  settings.targetLanguage =
 | 
					  settings.targetLanguage =
 | 
				
			||||||
@ -206,6 +204,7 @@ void SettingsEditor::setSettings(const Settings &settings)
 | 
				
			|||||||
  ui->captureLockedEdit->setKeySequence(settings.captureLockedHotkey);
 | 
					  ui->captureLockedEdit->setKeySequence(settings.captureLockedHotkey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui->showOnStart->setChecked(settings.showMessageOnStart);
 | 
					  ui->showOnStart->setChecked(settings.showMessageOnStart);
 | 
				
			||||||
 | 
					  ui->writeTrace->setChecked(settings.writeTrace);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui->proxyTypeCombo->setCurrentIndex(int(settings.proxyType));
 | 
					  ui->proxyTypeCombo->setCurrentIndex(int(settings.proxyType));
 | 
				
			||||||
  ui->proxyHostEdit->setText(settings.proxyHostName);
 | 
					  ui->proxyHostEdit->setText(settings.proxyHostName);
 | 
				
			||||||
@ -223,7 +222,6 @@ void SettingsEditor::setSettings(const Settings &settings)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  ui->doTranslationCheck->setChecked(settings.doTranslation);
 | 
					  ui->doTranslationCheck->setChecked(settings.doTranslation);
 | 
				
			||||||
  ui->ignoreSslCheck->setChecked(settings.ignoreSslErrors);
 | 
					  ui->ignoreSslCheck->setChecked(settings.ignoreSslErrors);
 | 
				
			||||||
  ui->translatorDebugCheck->setChecked(settings.debugMode);
 | 
					 | 
				
			||||||
  ui->translateTimeoutSpin->setValue(settings.translationTimeout.count());
 | 
					  ui->translateTimeoutSpin->setValue(settings.translationTimeout.count());
 | 
				
			||||||
  ui->translatorsPath->setText(settings.translatorsDir);
 | 
					  ui->translatorsPath->setText(settings.translatorsDir);
 | 
				
			||||||
  enabledTranslators_ = settings.translators;
 | 
					  enabledTranslators_ = settings.translators;
 | 
				
			||||||
 | 
				
			|||||||
@ -216,6 +216,13 @@
 | 
				
			|||||||
         </property>
 | 
					         </property>
 | 
				
			||||||
        </spacer>
 | 
					        </spacer>
 | 
				
			||||||
       </item>
 | 
					       </item>
 | 
				
			||||||
 | 
					       <item row="3" column="1">
 | 
				
			||||||
 | 
					        <widget class="QCheckBox" name="writeTrace">
 | 
				
			||||||
 | 
					         <property name="text">
 | 
				
			||||||
 | 
					          <string>Write trace file</string>
 | 
				
			||||||
 | 
					         </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					       </item>
 | 
				
			||||||
      </layout>
 | 
					      </layout>
 | 
				
			||||||
     </widget>
 | 
					     </widget>
 | 
				
			||||||
     <widget class="QWidget" name="pageRecognize">
 | 
					     <widget class="QWidget" name="pageRecognize">
 | 
				
			||||||
@ -307,68 +314,28 @@
 | 
				
			|||||||
     </widget>
 | 
					     </widget>
 | 
				
			||||||
     <widget class="QWidget" name="pageTranslate">
 | 
					     <widget class="QWidget" name="pageTranslate">
 | 
				
			||||||
      <layout class="QGridLayout" name="gridLayout_9">
 | 
					      <layout class="QGridLayout" name="gridLayout_9">
 | 
				
			||||||
       <item row="3" column="2">
 | 
					       <item row="3" column="0">
 | 
				
			||||||
        <widget class="QSpinBox" name="translateTimeoutSpin">
 | 
					        <widget class="QLabel" name="label_5">
 | 
				
			||||||
         <property name="suffix">
 | 
					         <property name="text">
 | 
				
			||||||
          <string> secs</string>
 | 
					          <string>Translators path:</string>
 | 
				
			||||||
         </property>
 | 
					         </property>
 | 
				
			||||||
        </widget>
 | 
					        </widget>
 | 
				
			||||||
       </item>
 | 
					       </item>
 | 
				
			||||||
       <item row="1" column="0" colspan="2">
 | 
					       <item row="0" column="0" colspan="2">
 | 
				
			||||||
        <widget class="QCheckBox" name="doTranslationCheck">
 | 
					        <widget class="QCheckBox" name="doTranslationCheck">
 | 
				
			||||||
         <property name="text">
 | 
					         <property name="text">
 | 
				
			||||||
          <string>Translate text</string>
 | 
					          <string>Translate text</string>
 | 
				
			||||||
         </property>
 | 
					         </property>
 | 
				
			||||||
        </widget>
 | 
					        </widget>
 | 
				
			||||||
       </item>
 | 
					       </item>
 | 
				
			||||||
       <item row="2" column="0" colspan="2">
 | 
					       <item row="1" column="0" colspan="2">
 | 
				
			||||||
        <widget class="QCheckBox" name="ignoreSslCheck">
 | 
					        <widget class="QCheckBox" name="ignoreSslCheck">
 | 
				
			||||||
         <property name="text">
 | 
					         <property name="text">
 | 
				
			||||||
          <string>Ignore SSL errors</string>
 | 
					          <string>Ignore SSL errors</string>
 | 
				
			||||||
         </property>
 | 
					         </property>
 | 
				
			||||||
        </widget>
 | 
					        </widget>
 | 
				
			||||||
       </item>
 | 
					       </item>
 | 
				
			||||||
       <item row="3" column="0" colspan="2">
 | 
					       <item row="5" column="0" colspan="3">
 | 
				
			||||||
        <widget class="QLabel" name="label_9">
 | 
					 | 
				
			||||||
         <property name="text">
 | 
					 | 
				
			||||||
          <string>Single translator timeout:</string>
 | 
					 | 
				
			||||||
         </property>
 | 
					 | 
				
			||||||
        </widget>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item row="0" column="0">
 | 
					 | 
				
			||||||
        <widget class="QCheckBox" name="translatorDebugCheck">
 | 
					 | 
				
			||||||
         <property name="text">
 | 
					 | 
				
			||||||
          <string>Debug mode</string>
 | 
					 | 
				
			||||||
         </property>
 | 
					 | 
				
			||||||
        </widget>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item row="7" column="0" colspan="3">
 | 
					 | 
				
			||||||
        <widget class="QListWidget" name="translatorList">
 | 
					 | 
				
			||||||
         <property name="editTriggers">
 | 
					 | 
				
			||||||
          <set>QAbstractItemView::NoEditTriggers</set>
 | 
					 | 
				
			||||||
         </property>
 | 
					 | 
				
			||||||
         <property name="dragDropMode">
 | 
					 | 
				
			||||||
          <enum>QAbstractItemView::InternalMove</enum>
 | 
					 | 
				
			||||||
         </property>
 | 
					 | 
				
			||||||
         <property name="defaultDropAction">
 | 
					 | 
				
			||||||
          <enum>Qt::MoveAction</enum>
 | 
					 | 
				
			||||||
         </property>
 | 
					 | 
				
			||||||
        </widget>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item row="5" column="0">
 | 
					 | 
				
			||||||
        <widget class="QLabel" name="label_6">
 | 
					 | 
				
			||||||
         <property name="text">
 | 
					 | 
				
			||||||
          <string>Language:</string>
 | 
					 | 
				
			||||||
         </property>
 | 
					 | 
				
			||||||
         <property name="buddy">
 | 
					 | 
				
			||||||
          <cstring>translateLangCombo</cstring>
 | 
					 | 
				
			||||||
         </property>
 | 
					 | 
				
			||||||
        </widget>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item row="5" column="1" colspan="2">
 | 
					 | 
				
			||||||
        <widget class="QComboBox" name="translateLangCombo"/>
 | 
					 | 
				
			||||||
       </item>
 | 
					 | 
				
			||||||
       <item row="6" column="0" colspan="3">
 | 
					 | 
				
			||||||
        <widget class="QLabel" name="label_10">
 | 
					        <widget class="QLabel" name="label_10">
 | 
				
			||||||
         <property name="text">
 | 
					         <property name="text">
 | 
				
			||||||
          <string>Translators</string>
 | 
					          <string>Translators</string>
 | 
				
			||||||
@ -378,20 +345,53 @@
 | 
				
			|||||||
         </property>
 | 
					         </property>
 | 
				
			||||||
        </widget>
 | 
					        </widget>
 | 
				
			||||||
       </item>
 | 
					       </item>
 | 
				
			||||||
       <item row="4" column="0">
 | 
					       <item row="2" column="2">
 | 
				
			||||||
        <widget class="QLabel" name="label_5">
 | 
					        <widget class="QSpinBox" name="translateTimeoutSpin">
 | 
				
			||||||
         <property name="text">
 | 
					         <property name="suffix">
 | 
				
			||||||
          <string>Translators path:</string>
 | 
					          <string> secs</string>
 | 
				
			||||||
         </property>
 | 
					         </property>
 | 
				
			||||||
        </widget>
 | 
					        </widget>
 | 
				
			||||||
       </item>
 | 
					       </item>
 | 
				
			||||||
       <item row="4" column="1" colspan="2">
 | 
					       <item row="4" column="1" colspan="2">
 | 
				
			||||||
 | 
					        <widget class="QComboBox" name="translateLangCombo"/>
 | 
				
			||||||
 | 
					       </item>
 | 
				
			||||||
 | 
					       <item row="2" column="0" colspan="2">
 | 
				
			||||||
 | 
					        <widget class="QLabel" name="label_9">
 | 
				
			||||||
 | 
					         <property name="text">
 | 
				
			||||||
 | 
					          <string>Single translator timeout:</string>
 | 
				
			||||||
 | 
					         </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					       </item>
 | 
				
			||||||
 | 
					       <item row="3" column="1" colspan="2">
 | 
				
			||||||
        <widget class="QLineEdit" name="translatorsPath">
 | 
					        <widget class="QLineEdit" name="translatorsPath">
 | 
				
			||||||
         <property name="readOnly">
 | 
					         <property name="readOnly">
 | 
				
			||||||
          <bool>true</bool>
 | 
					          <bool>true</bool>
 | 
				
			||||||
         </property>
 | 
					         </property>
 | 
				
			||||||
        </widget>
 | 
					        </widget>
 | 
				
			||||||
       </item>
 | 
					       </item>
 | 
				
			||||||
 | 
					       <item row="4" column="0">
 | 
				
			||||||
 | 
					        <widget class="QLabel" name="label_6">
 | 
				
			||||||
 | 
					         <property name="text">
 | 
				
			||||||
 | 
					          <string>Language:</string>
 | 
				
			||||||
 | 
					         </property>
 | 
				
			||||||
 | 
					         <property name="buddy">
 | 
				
			||||||
 | 
					          <cstring>translateLangCombo</cstring>
 | 
				
			||||||
 | 
					         </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					       </item>
 | 
				
			||||||
 | 
					       <item row="6" column="0" colspan="3">
 | 
				
			||||||
 | 
					        <widget class="QListWidget" name="translatorList">
 | 
				
			||||||
 | 
					         <property name="editTriggers">
 | 
				
			||||||
 | 
					          <set>QAbstractItemView::NoEditTriggers</set>
 | 
				
			||||||
 | 
					         </property>
 | 
				
			||||||
 | 
					         <property name="dragDropMode">
 | 
				
			||||||
 | 
					          <enum>QAbstractItemView::InternalMove</enum>
 | 
				
			||||||
 | 
					         </property>
 | 
				
			||||||
 | 
					         <property name="defaultDropAction">
 | 
				
			||||||
 | 
					          <enum>Qt::MoveAction</enum>
 | 
				
			||||||
 | 
					         </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					       </item>
 | 
				
			||||||
      </layout>
 | 
					      </layout>
 | 
				
			||||||
     </widget>
 | 
					     </widget>
 | 
				
			||||||
     <widget class="QWidget" name="pageRepresent">
 | 
					     <widget class="QWidget" name="pageRepresent">
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user