From 8cf98ea2d98fe3d700c7b9f834feae9de203622c Mon Sep 17 00:00:00 2001 From: krivoshein Date: Wed, 17 Sep 2025 17:42:34 +0300 Subject: [PATCH] refact0 --- GUIdataBaseLMS/mainwindow.cpp | 4 +- InstructorsAndTrainees/commonview.cpp | 2 + InstructorsAndTrainees/commonview.h | 5 + .../connectorToServer/Core/sendsystem.cpp | 3 +- .../connectorToServer/Core/sendsystem.h | 2 +- .../connectorToServer/connectortoserver.cpp | 12 +- .../connectorToServer/connectortoserver.h | 2 +- .../dialogauthorizationinstructor.cpp | 7 +- .../dialogauthorizationinstructor.h | 2 +- .../dialogauthorizationinstructor.ui | 8 +- .../instructors/viewerinstructors.cpp | 3 +- .../instructorsandtraineeswidget.cpp | 17 +- .../instructorsandtraineeswidget.h | 2 + .../trainees/viewertrainees.cpp | 3 +- .../InstructorsAndTraineesWidget_ru_RU.qm | Bin 20507 -> 20442 bytes .../InstructorsAndTraineesWidget_ru_RU.ts | 78 +- .../InstructorsAndTrainees_ru_RU.ts | 1242 ----------------- 17 files changed, 85 insertions(+), 1307 deletions(-) delete mode 100644 InstructorsAndTrainees/translations/InstructorsAndTrainees_ru_RU.ts diff --git a/GUIdataBaseLMS/mainwindow.cpp b/GUIdataBaseLMS/mainwindow.cpp index 099d963..1fc47e1 100644 --- a/GUIdataBaseLMS/mainwindow.cpp +++ b/GUIdataBaseLMS/mainwindow.cpp @@ -19,8 +19,8 @@ MainWindow::MainWindow(QWidget *parent) ui->horizontalLayout->addWidget(instructorsAndTraineesWidget); this->move(0, 0); - this->showNormal(); - //this->showMaximized(); + //this->showNormal(); + this->showMaximized(); qtLanguageTranslator.load(QString("translations/GUIdataBaseLMS_") + instructorsAndTraineesWidget->getLanguage(), "."); qApp->installTranslator(&qtLanguageTranslator); diff --git a/InstructorsAndTrainees/commonview.cpp b/InstructorsAndTrainees/commonview.cpp index d4cfaa8..e30c9c4 100644 --- a/InstructorsAndTrainees/commonview.cpp +++ b/InstructorsAndTrainees/commonview.cpp @@ -19,6 +19,8 @@ CommonView::CommonView(ConnectorToServer* connectorToServer, TypeView type, QWid treeWidget = new QTreeWidget(); treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus); + treeWidget->setEnabled(false); + waitAnimationWidget = new WaitAnimationWidget; QMovie *movie = new QMovie(":/resources/icons/762.gif"); //waitAnimationWidget->setParent(this); diff --git a/InstructorsAndTrainees/commonview.h b/InstructorsAndTrainees/commonview.h index a5d93ff..a7756dc 100644 --- a/InstructorsAndTrainees/commonview.h +++ b/InstructorsAndTrainees/commonview.h @@ -36,9 +36,14 @@ public: { this->adminMode = adminMode; } + void activate() + { + treeWidget->setEnabled(true); + } void deactivate() { treeWidget->clear(); + treeWidget->setEnabled(false); lastCurrentID = 0; } void clearSelection() diff --git a/InstructorsAndTrainees/connectorToServer/Core/sendsystem.cpp b/InstructorsAndTrainees/connectorToServer/Core/sendsystem.cpp index c39f12f..c31a44b 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/sendsystem.cpp +++ b/InstructorsAndTrainees/connectorToServer/Core/sendsystem.cpp @@ -30,7 +30,7 @@ void SendSystem::sendDisable() stream << data; socket->waitForBytesWritten(); } - +/* void SendSystem::sendXMLmsgGUItoServer(QByteArray array) { qDebug() << "SendSystem" << QThread::currentThreadId(); @@ -41,6 +41,7 @@ void SendSystem::sendXMLmsgGUItoServer(QByteArray array) stream << array; socket->waitForBytesWritten(6000); } +*/ void SendSystem::sendFileBlock(QString path) { diff --git a/InstructorsAndTrainees/connectorToServer/Core/sendsystem.h b/InstructorsAndTrainees/connectorToServer/Core/sendsystem.h index 69b7107..4ecb9f3 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/sendsystem.h +++ b/InstructorsAndTrainees/connectorToServer/Core/sendsystem.h @@ -14,7 +14,7 @@ class SendSystem :public QObject public: explicit SendSystem(QObject* parent = nullptr); void setSocket(QTcpSocket *socket); - void sendXMLmsgGUItoServer(QByteArray array); + //void sendXMLmsgGUItoServer(QByteArray array); void sendDisable(); void sendFileBlock(QString path); void sendFolderBlock(QString path); diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp index 88977c3..70a1bb1 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp @@ -47,7 +47,7 @@ bool ConnectorToServer::authorizationInstructorLocal(QString login, QString pass isLoggedIn = true; QByteArray array = dataParser->createAuthMessage(autorization); - emit signal_sendXMLmsgGUItoServer(array); + emit sigSendAnswerToServer(array); return true; } @@ -64,7 +64,7 @@ bool ConnectorToServer::deAuthorizationInstructorLocal(QString login) isLoggedIn = false; QByteArray array = dataParser->createDeAuthMessage(deAutorization); - emit signal_sendXMLmsgGUItoServer(array); + emit sigSendAnswerToServer(array); return true; } @@ -80,7 +80,7 @@ bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id, void* dat queryToDB->typeQuery = typeQuery; QByteArray array = dataParser->createQueryToDBMessage(queryToDB, id, data); - emit signal_sendXMLmsgGUItoServer(array); + emit sigSendAnswerToServer(array); return true; } @@ -92,7 +92,7 @@ bool ConnectorToServer::sendMessage(ClientMessage clientMessage) return false; } QByteArray array = dataParser->createMessage(clientMessage); - emit signal_sendXMLmsgGUItoServer(array); + emit sigSendAnswerToServer(array); return true; } @@ -111,7 +111,7 @@ bool ConnectorToServer::sendQueryTasksXML(QString type) } QByteArray array = dataParser->createQueryTasksXMLMessage(type); - emit signal_sendXMLmsgGUItoServer(array); + emit sigSendAnswerToServer(array); return true; } @@ -466,7 +466,7 @@ void ConnectorToServer::bindConnection() connect(this,&ConnectorToServer::sigSetConnect,client,&TCPClient::setConnect,Qt::AutoConnection); connect(this,&ConnectorToServer::sigStopConnect,client,&TCPClient::setDisconnect,Qt::AutoConnection); - connect(this,&ConnectorToServer::signal_sendXMLmsgGUItoServer,sendSystem,&SendSystem::sendXMLmsgGUItoServer); + //Sconnect(this,&ConnectorToServer::signal_sendXMLmsgGUItoServer,sendSystem,&SendSystem::sendXMLmsgGUItoServer); connect(this,&ConnectorToServer::sigSendAnswerToServer,sendSystem,&SendSystem::sendXMLAnswer,Qt::AutoConnection); connect(recognizeSystem,&RecognizeSystem::sigAuth,this,&ConnectorToServer::slot_Auth); // ::sigLoginResult); diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.h b/InstructorsAndTrainees/connectorToServer/connectortoserver.h index fd576c6..c4119f9 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.h +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.h @@ -100,7 +100,7 @@ signals: SendSystem *sendSystem, QThread *thread); - void signal_sendXMLmsgGUItoServer(QByteArray array); + //void signal_sendXMLmsgGUItoServer(QByteArray array); void sigLoginResult(ServerAuthorization * serverAuth); void sigDeLoginResult(ServerDeAuthorization * serverDeAuth); diff --git a/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.cpp b/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.cpp index bde6f50..fbd4f86 100644 --- a/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.cpp +++ b/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.cpp @@ -11,6 +11,11 @@ DialogAuthorizationInstructor::DialogAuthorizationInstructor(QWidget *parent) : ui->editPassword->setProperty("mandatoryField", true); ui->editPassword->setEchoMode(QLineEdit::EchoMode::Password); + +#ifdef PROJECT_TYPE_DEBUG + ui->editLogin->setText("admin"); + ui->editPassword->setText("admin"); +#endif } DialogAuthorizationInstructor::~DialogAuthorizationInstructor() @@ -18,7 +23,7 @@ DialogAuthorizationInstructor::~DialogAuthorizationInstructor() delete ui; } -void DialogAuthorizationInstructor::on_btnOK_clicked() +void DialogAuthorizationInstructor::on_btnLogIn_clicked() { this->accept(); } diff --git a/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.h b/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.h index b11ef3e..276ea66 100644 --- a/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.h +++ b/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.h @@ -28,7 +28,7 @@ public: } private slots: - void on_btnOK_clicked(); + void on_btnLogIn_clicked(); private: Ui::DialogAuthorizationInstructor *ui; diff --git a/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.ui b/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.ui index d02d667..944bc86 100644 --- a/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.ui +++ b/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.ui @@ -66,7 +66,7 @@ - admin + @@ -78,7 +78,7 @@ - admin + @@ -102,7 +102,7 @@ - + 0 @@ -110,7 +110,7 @@ - Login in + Log in diff --git a/InstructorsAndTrainees/instructors/viewerinstructors.cpp b/InstructorsAndTrainees/instructors/viewerinstructors.cpp index 92e6ddf..cb33eb7 100644 --- a/InstructorsAndTrainees/instructors/viewerinstructors.cpp +++ b/InstructorsAndTrainees/instructors/viewerinstructors.cpp @@ -62,12 +62,13 @@ void ViewerInstructors::on_btnEditorInstructors_clicked() EditorInstructors* editorInstructors = new EditorInstructors(connectorToServer, adminMode); connect(connectorToServer, &ConnectorToServer::signal_UpdateDB, editorInstructors, &EditorInstructors::slot_NeedUpdateUI); + editorInstructors->activate(); dlgEditor = new QDialog(this); QHBoxLayout *layout = new QHBoxLayout(dlgEditor); layout->addWidget(editorInstructors); dlgEditor->setWindowTitle(tr("Editor of instructors")); - dlgEditor->setMinimumSize(1600, 800); + dlgEditor->setMinimumSize(1400, 700); dlgEditor->setWindowFlags(dlgEditor->windowFlags() & ~Qt::WindowContextHelpButtonHint); dlgEditor->exec(); diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index c098e49..1b1c115 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -23,6 +23,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : nameInstructorLoggedInLocal(QStringLiteral("")), idInstructorLoggedInLocal("0"), language(languageENG), + flSettingsServerIsChanged(false), ui(new Ui::InstructorsAndTraineesWidget) { ui->setupUi(this); @@ -62,15 +63,15 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : ui->verticalLayout_Trainees->addWidget(viewerTrainees); ui->verticalLayout_Instructors->addWidget(viewerInstructors); - ui->groupBox_Messenger->setMinimumHeight(900); + ui->groupBox_Messenger->setMinimumHeight(600); ui->groupBox_Messenger->setMaximumWidth(500); ui->groupBox_Messenger->setMinimumWidth(500); - ui->groupBox_Instructors->setMinimumHeight(300); + ui->groupBox_Instructors->setMinimumHeight(200); ui->groupBox_Instructors->setMaximumHeight(300); - ui->groupBox_Trainees->setMinimumHeight(600); + ui->groupBox_Trainees->setMinimumHeight(400); ui->groupBox_Trainees->setMinimumWidth(600); ui->groupBox_Instructors->setMinimumWidth(600); @@ -182,6 +183,9 @@ void InstructorsAndTraineesWidget::slot_checkLoginResult(ServerAuthorization *se connectorToServer->sendQueryTasksXML("fim"); connectorToServer->sendQueryTasksXML("amm"); + + viewerTrainees->activate(); + viewerInstructors->activate(); } else { @@ -251,7 +255,10 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state) updateLabelLoggedInInstructor(loginInstructorLoggedInLocal, nameInstructorLoggedInLocal); updateLabelServer(); - SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, tr("The server is not available!")).exec(); + if(!flSettingsServerIsChanged) + SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, tr("The server is not available!")).exec(); + else + flSettingsServerIsChanged = false; } } @@ -441,6 +448,8 @@ void InstructorsAndTraineesWidget::on_btnSettings_clicked() { SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, tr("Server settings have been changed. Please reconnect to the server.")).exec(); + flSettingsServerIsChanged = true; + if(authorizationIsCompleted()) deAuthorizationInstructor(loginInstructorLoggedInLocal); diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.h b/InstructorsAndTrainees/instructorsandtraineeswidget.h index 9b0f15f..9faef79 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.h +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.h @@ -95,6 +95,8 @@ private: QTranslator qtLanguageTranslator; QString language; + bool flSettingsServerIsChanged; + Ui::InstructorsAndTraineesWidget *ui; }; diff --git a/InstructorsAndTrainees/trainees/viewertrainees.cpp b/InstructorsAndTrainees/trainees/viewertrainees.cpp index 1af4007..50cfde3 100644 --- a/InstructorsAndTrainees/trainees/viewertrainees.cpp +++ b/InstructorsAndTrainees/trainees/viewertrainees.cpp @@ -86,12 +86,13 @@ void ViewerTrainees::on_btnEditorTrainees_clicked() EditorTrainees* editorTraineesGroups = new EditorTrainees(connectorToServer, adminMode); connect(connectorToServer, &ConnectorToServer::signal_UpdateDB, editorTraineesGroups, &EditorTrainees::slot_NeedUpdateUI); + editorTraineesGroups->activate(); dlgEditor = new QDialog(this); QHBoxLayout *layout = new QHBoxLayout(dlgEditor); layout->addWidget(editorTraineesGroups); dlgEditor->setWindowTitle(tr("Editor of trainees")); - dlgEditor->setMinimumSize(1600, 800); + dlgEditor->setMinimumSize(1400, 700); dlgEditor->setWindowFlags(dlgEditor->windowFlags() & ~Qt::WindowContextHelpButtonHint); dlgEditor->exec(); diff --git a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm index 52dd18c535cf234fb5da3f6f4e413229b0982306..62119489af2363e2799e8978514f0b3a051c122d 100644 GIT binary patch delta 1788 zcmXBUdrVVz6bJBc+uQcu-b*XsgDDRc5K)x2&_V^Rz>K??~@u0A|3}3kaQnDuIm>So3+-H6PH<1Ck%Go{QvSU}gZIr{|WNta~qz76RBu z0~uXF!cySf;divo@}FpY8kOO z@W)pasE*Zt!A`o%Mt8E-P&RHAn^4MnlGyZSXw9eKMPezm2}6KiKeXvKKoVF(3#&x3 zapi2{&(Id`2aGY$9=cBBt*mTe6&g4E+_)IpN)KSIfcDH$Kn#X{VJZ;Y$EMMJ{VOk} zWE0HFAP{Fq^6xV#bv`8Dr+a$}=02qlCyhbIZYaQq)wMv}{%08!xDeA|mL0iRyHpno6=yb@TQEAhlf8)lWU34rT+2*^qiR>bP24 z`yU1RK)tzOBrQBa{Z~Xg5Pwp$%A2_i2=Z$3)0{wHiKg|36~MR!n&)N1jW}P>UCO1* zbPKU-PE*503LA?%0p0h)#u`%0VP`%T3LjCx5iLSlbvHFM*vKN`(A=xEP^@s~axM9x zP^S(AX4r-L7`jJ?;C*v3sgfVeo+UJFUqmT(2#uQ_0_pxjlfg*M=oEfYU!>G!3vCBe z=)RmyUM+OBeMy16(Ao|TQ3-ZxZCy0Z;9=!+tRn~rSkNj81ESh`~@jSmxd=hadP z9c);Pw>*Zzj3FRA({Q7|o0_dk4l1sq0B*>(k}wJ|iH&TO zKL~4~^PeGb1p&NHKvns5+p`$n;XGCM;2MI;eL3RyH_Z zSyq0W0&7w#n{$9^jY>lvE$seVxuT-l8{63FYNf4)CNw1~J*GZjjMGoqJCOqVm^DZH zjXq5C23XmUJijOFLTTJLIr={q4;vN@a)fXgj4Wbfxip`vxk(BGY_*1*N{k zR55WY{e|9U<1VqbA5C}u+)e>+Gd-#wK^gI1PiJ+&w=X8IDdw0aX}lj$i}su~8*}I1Y$#W@8_cQ|S6_Ku7n3XqrBw+kki)6H336JAklF zz=X5(>x~i@wDCox^Inapf7q571qaw4VuITSFvHI*w_VZ;tPlYyI{r0QxL;?0iz$p#1KFq!5Ut&N(LL;%8u-T zSg?`C&w{x542{oa1#tKd4Uy*on=!bN zdjfDhsEScjiQ-qQGGF^ZRp{wS&zn?rkJLcFbE>oFe+S}PRUO?_ceN91cZ7Am!%)-8A5&$HLLbdA-{%{*0Pa8VYNU%d1h0RIF=>2SA_u*P{ zr%eabm;V)ILSxJNr0Di$(L95$>GrPcq!LGtQ*PNEL#E?%IWORbXW zF-5HYQF5G}0mNLFELpvP+YTx9U^l(+k2KCTl~SA_6{XGx{BN;|$D}nY2GaP+(z?uA zDq%kBI#((?L#a;KER~(@^NF-A<~T*(A#EGCl#aZ)Qra$!plSzv z7#DqZXC$3}%g_3}-)OwELErd*BJRIW-;%x_7nii*>d#( zYAQo08)(l4t(EJxQf9+kFD(AGd>=Xt6PIk&2XzmF<)=mrCP-_K&Fq zrKWdvWmLl^QV;i z@{LNR$+4=}*j@IX5TokV?KD`yYTs B Login Логин - - - - admin - - - Login in + Log in Войти @@ -661,48 +655,48 @@ Delete it anyway? - - + + none нет - + The file could not be opened Файл не может быть открыт - + Instructor authorization. Авторизация инструктора. - + Instructor deauthorization Деавторизация инструктора - + Error! Ошибка! - + The server is not available! Сервер недоступен! - + Server settings have been changed. Please reconnect to the server. Настройки сервера изменены. Выполните переподключение к серверу. - + Instructor authorization Авторизация инструктора - + Invalid login or password! Неправильный логин или пароль! @@ -710,49 +704,49 @@ Delete it anyway? InstructorsView - - + + yes да - - + + no нет - + Instructor Инструктор - + Login Логин - + Password Пароль - + Administrator Администратор - + Archived Архивный - + Logged Залогирован - + ID ID @@ -1038,57 +1032,57 @@ Delete it anyway? TraineesView - + yes да - + no нет - + Trainee Обучаемый - + Login Логин - + Password Пароль - + Class Класс - + Computer Компьютер - + IP address IP адрес - + Archived Архивный - + Logged Залогирован - + ID ID @@ -1197,7 +1191,7 @@ Delete it anyway? Редактор инструкторов - + Editor of instructors Редактор инструкторов @@ -1215,12 +1209,12 @@ Delete it anyway? Редактор обучаемых - + Editor of trainees Редактор обучаемых - + Personal card trainee Персональная карта обучаемого diff --git a/InstructorsAndTrainees/translations/InstructorsAndTrainees_ru_RU.ts b/InstructorsAndTrainees/translations/InstructorsAndTrainees_ru_RU.ts deleted file mode 100644 index f04e874..0000000 --- a/InstructorsAndTrainees/translations/InstructorsAndTrainees_ru_RU.ts +++ /dev/null @@ -1,1242 +0,0 @@ - - - - - AMMtasksWidget - - - Form - - - - - Assign - - - - - Аvailable - - - - - - - Status - - - - - Delete - - - - - Task AMM - - - - - DM code - - - - - - ID - - - - - PM/DM - - - - - Code - - - - - Attention! - - - - - The deletion will be irrevocable. -Delete it anyway? - - - - - Status Task - - - - - New task - - - - - Assign this task? - - - - - DialogAuthorizationInstructor - - - Instructor authorization - - - - - Login - - - - - Password - - - - - - admin - - - - - DialogCheckTask - - - Form - - - - - Task - - - - - Completion Report - - - - - Failed - - - - - Right - - - - - Completed - - - - - New - - - - - viewed - - - - - completed - - - - - Change task status? -The status will be set: -'failed' - - - - - Change task status? -The status will be set: -'new' - - - - - - Attention! - - - - - - Change task status? -The status will be set: -'completed' - - - - - DialogEditGroup - - - Group - - - - - Name - - - - - DialogEditInstructor - - - Instructor - - - - - Name - - - - - Login - - - - - Password - - - - - Administrator - - - - - Archived - - - - - Logged - - - - - DialogEditTrainee - - - Trainee - - - - - Name - - - - - Login - - - - - Password - - - - - Archived - - - - - Logged - - - - - DialogSettings - - - Learning management system - Settings - - - - - Main - - - - - Language - - - - - Server - - - - - Address - - - - - Port - - - - - Auto start - - - - - Save - - - - - Additional - - - - - Version - - - - - Style - - - - - EditorInstructors - - - List instructors - - - - - New instructor - - - - - Delete instructor - - - - - - To archive - - - - - Edit - - - - - Show archive - - - - - - - - Error! - - - - - You cannot delete the Administrator. - - - - - You cannot delete a logged-in instructor. - - - - - Attention! - - - - - The deletion will be irrevocable. -Delete it anyway? - - - - - You cannot archive a logged-in instructor. - - - - - You cannot edit a logged-in instructor. - - - - - From archive - - - - - - - - Editing error! - - - - - Unacceptable instructor name has been entered. -The changes will not be accepted. - - - - - Unacceptable instructor login has been entered. -The changes will not be accepted. - - - - - Unacceptable instructor password has been entered. -The changes will not be accepted. - - - - - An existing instructor or trainee login has been entered. -The changes will not be accepted. - - - - - EditorTrainees - - - List trainees - - - - - New group - - - - - Delete group - - - - - New trainee - - - - - Delete trainee - - - - - - - To archive - - - - - Edit - - - - - Show archive - - - - - - - - - - - Editing error! - - - - - The group is not empty. -It is not possible to delete a non-empty group. - - - - - - Attention! - - - - - - The deletion will be irrevocable. -Delete anyway? - - - - - - - Error! - - - - - You cannot delete a logged-in trainee. - - - - - You cannot archive a logged-in trainee. - - - - - You cannot edit a logged-in trainee. - - - - - From archive - - - - - Unacceptable group name has been entered. -The changes will not be accepted. - - - - - An existing group name has been entered. -The changes will not be accepted. - - - - - Unacceptable trainee name has been entered. -The changes will not be accepted. - - - - - Unacceptable trainee login has been entered. -The changes will not be accepted. - - - - - Unacceptable trainee password has been entered. -The changes will not be accepted. - - - - - An existing instructor or trainee login has been entered. -The changes will not be accepted. - - - - - FIMtasksWidget - - - Form - - - - - Assign - - - - - Check - - - - - Delete - - - - - Task FIM - - - - - - ID - - - - - - Status - - - - - Title - - - - - Attention! - - - - - The deletion will be irrevocable. -Delete it anyway? - - - - - Check Task - - - - - New task - - - - - Assign this task? - - - - - InstructorsAndTraineesWidget - - - Form - - - - - Connection - - - - - Authorization - - - - - Server: - - - - - - - - none - - - - - Logged in Instructor: - - - - - ChangeVersion - - - - - Editor Trainees - - - - - Editor Instructors - - - - - Settings - - - - - Trainees - - - - - Instructors - - - - - Messenger - - - - - - Attention! - - - - - The file could not be opened - - - - - - Instructor authorization - - - - - Invalid login or password! - - - - - Instructor deauthorization - - - - - Error! - - - - - Warning! - - - - - The server is disabled - - - - - Server settings have been changed. Please reconnect to the server. - - - - - InstructorsView - - - - - yes - - - - - - - no - - - - - Instructor - - - - - Login - - - - - Password - - - - - Administrator - - - - - Archived - - - - - Logged - - - - - ID - - - - - MessangerWidget - - - Form - - - - - Tab 1 - - - - - Tab 2 - - - - - Send - - - - - MsgWidget - - - Form - - - - - TextLabel - - - - - NewVersionWidget - - - Create copy... - - - - - Basic version: - - - - - TextLabel - - - - - New name version: - - - - - Create - - - - - Cancel - - - - - Only Latin letters and numbers - - - - - NotifyController - - - Error - - - - - PersonalCardTrainee - - - Form - - - - - Trainee - - - - - Name - - - - - Last login time - - - - - - - - - 0 - - - - - Assigned FIM - - - - - Assigned AMM - - - - - Time of operation - - - - - Last time of exit - - - - - Messenger - - - - - Tasks - - - - - AMM - - - - - - List - - - - - - Attached - - - - - FIM - - - - - RecognizeSystem - - - Attention! - - - - - The file could not be opened - - - - - You cannot delete the basic version! - - - - - You cannot delete the active version - - - - - This name already exists - - - - - TaskAMMFIMTreePreparation - - - - - completed - - - - - - - failed - - - - - - - checkup - - - - - - - new - - - - - TraineesView - - - - yes - - - - - - no - - - - - Trainee - - - - - Login - - - - - Password - - - - - Class - - - - - Computer - - - - - IP address - - - - - Archived - - - - - Logged - - - - - ID - - - - - VersionSelectWidget - - - Form - - - - - Available versions on the server: - - - - - Info: - - - - - Double click on the version to see information... - - - - - Current server version: - - - - - none - - - - - Create copy - - - - - Delete - - - - - Change server version - - - - - Version control - - - - - Version name: - - - - - Created: - - - - - Changeable: - - - - - Author: - - - - - Yes - - - - - No - - - - - - - - Version not selected - - - - - ViewerInstructors - - - Instructors - - - - - Editor of Instructors - - - - - Editor of instructors - - - - - ViewerTrainees - - - Trainees - - - - - Editor of Trainees - - - - - Editor of trainees - - - - - Personal card trainee - - - - - WaitAnimationWidget - - - Form - - - -