Quellcode durchsuchen

更新代码:完成数据库剩余功能,以及多语种切换,以及样式切换

yun vor 1 Tag
Ursprung
Commit
72e9a00fff

BIN
Output/bin/x64/configurations.db


+ 1 - 1
Output/inc/Module/CConfigBase.h

@@ -33,7 +33,7 @@ namespace ns_db
 		INT iGroupId = 1;
 		INT iGroupId = 1;
 		string strName = "";
 		string strName = "";
 		string strDescribe = "";
 		string strDescribe = "";
-		string strDescribe_Eng = "";
+		//string strDescribe_Eng = "";
 		INT iUserGrade = 1;
 		INT iUserGrade = 1;
 		INT iChangeFlag = 1;
 		INT iChangeFlag = 1;
 		string strValue = "";
 		string strValue = "";

+ 51 - 4
View/die-bonder-ui/Login.cpp

@@ -7,6 +7,8 @@
 #include "Src/common/JMessageTip.h"
 #include "Src/common/JMessageTip.h"
 #include "Src/common/UserManagementShared.h"
 #include "Src/common/UserManagementShared.h"
 
 
+Login* Login::m_instance = nullptr;
+
 Login::Login(QWidget *parent)
 Login::Login(QWidget *parent)
     : QMainWindow(parent)
     : QMainWindow(parent)
     , ui(new Ui::Login)
     , ui(new Ui::Login)
@@ -42,8 +44,8 @@ void Login::onUserNameChanged(const QString &userName)
 
 
 void Login::on_SinginButton_clicked()
 void Login::on_SinginButton_clicked()
 {
 {
-    emit SendSwitchOriginalWndSignals();
-    return;
+    //emit SendSwitchOriginalWndSignals();
+    //return;
 
 
     QString strTip;
     QString strTip;
 
 
@@ -54,8 +56,11 @@ void Login::on_SinginButton_clicked()
         if (!strPass.isEmpty())
         if (!strPass.isEmpty())
         {
         {
             //JEncryption::Encryption();
             //JEncryption::Encryption();
-
-            emit SendSwitchOriginalWndSignals();
+            int privilege = queryUserPrivilege(strUser, strPass);
+            if (privilege != -1) {
+                setPrivilege(privilege);
+                emit SendSwitchOriginalWndSignals();
+            }
             /*if (QStackedWidget* parent = qobject_cast<QStackedWidget*>(this->parentWidget()))
             /*if (QStackedWidget* parent = qobject_cast<QStackedWidget*>(this->parentWidget()))
             {
             {
                 OriginalWnd* originalWnd = new OriginalWnd(this);
                 OriginalWnd* originalWnd = new OriginalWnd(this);
@@ -84,3 +89,45 @@ void Login::on_ExitButton_clicked()
     emit CloseMainWndSig();
     emit CloseMainWndSig();
 }
 }
 
 
+Login* Login::instance(QWidget* parent)
+{
+    if (!m_instance) {
+        m_instance = new Login(parent);
+    }
+    return m_instance;
+}
+
+int Login::getPrivilege() const
+{
+    return m_privilege;
+}
+
+void Login::setPrivilege(int privilege)
+{
+    m_privilege = privilege;
+}
+
+int Login::queryUserPrivilege(const QString& strUser, const QString& strPass)
+{
+    QSqlDatabase db = QSqlDatabase::database();
+    if (!db.isOpen()) {
+        qDebug() << "Database is not open.";
+        return -1;
+    }
+
+    QSqlQuery query(db);
+    query.prepare("SELECT Privilege FROM User WHERE UserName = :username AND PassWord = :password");
+    query.bindValue(":username", strUser);
+    query.bindValue(":password", strPass);
+
+    if (!query.exec()) {
+        qDebug() << "Query execution failed:" << query.lastError().text();
+        return -1;
+    }
+
+    if (query.next()) {
+        return query.value(0).toInt();
+    }
+
+    return -1; // 未找到用户
+}

+ 8 - 0
View/die-bonder-ui/Login.h

@@ -18,6 +18,11 @@ public:
 
 
     void initForm();
     void initForm();
 
 
+    static Login* instance(QWidget* parent = nullptr);
+    int getPrivilege() const;
+    void setPrivilege(int privilege);
+    int queryUserPrivilege(const QString& strUser, const QString& strPass);
+
     
     
 private slots:
 private slots:
     void on_SinginButton_clicked();
     void on_SinginButton_clicked();
@@ -35,6 +40,9 @@ signals:
 private:
 private:
     Ui::Login *ui;
     Ui::Login *ui;
     Gen_Interface gen_if;
     Gen_Interface gen_if;
+
+    static Login* m_instance;
+    int m_privilege;
 };
 };
 
 
 #endif // LOGIN_H
 #endif // LOGIN_H

+ 1 - 2
View/die-bonder-ui/MainWnd.cpp

@@ -233,7 +233,6 @@ void MainWnd::applyTheme(int themeValue)
     else {
     else {
         qssFileName = ":/dark.qss";
         qssFileName = ":/dark.qss";
     }
     }
-    qssFileName = ":/dark.qss";
     QFile qssFile(qssFileName);
     QFile qssFile(qssFileName);
     if (qssFile.open(QFile::ReadOnly)) {
     if (qssFile.open(QFile::ReadOnly)) {
         QString qssContent = qssFile.readAll();
         QString qssContent = qssFile.readAll();
@@ -277,7 +276,7 @@ void MainWnd::InitForm()
 
 
 void MainWnd::LoadLoginPage()
 void MainWnd::LoadLoginPage()
 {
 {
-    QPointer<Login> login = new Login;
+    QPointer<Login> login = Login::instance();
     connect(login, &Login::SendSwitchOriginalWndSignals, this, &MainWnd::ShowOriginalWndSlots);
     connect(login, &Login::SendSwitchOriginalWndSignals, this, &MainWnd::ShowOriginalWndSlots);
     connect(login, &Login::CloseMainWndSig, this, &MainWnd::CloseMainWndSlots);
     connect(login, &Login::CloseMainWndSig, this, &MainWnd::CloseMainWndSlots);
 
 

Datei-Diff unterdrückt, da er zu groß ist
+ 331 - 136
View/die-bonder-ui/OriginalWnd/DbTreeViewManager.cpp


+ 61 - 0
View/die-bonder-ui/OriginalWnd/DbTreeViewManager.h

@@ -57,6 +57,60 @@ struct ST_COMBINED_CONT
     QPushButton* pSetBut;
     QPushButton* pSetBut;
 };
 };
 
 
+struct ST_INPUT_CONT
+{
+    QString strConfigurationsName;
+    QString strfieldName;
+    QString strfieldDescribe;
+
+    QLineEdit* plineEdit;
+};
+
+struct ST_RADIO_CONT
+{
+    QString strConfigurationsName;
+    QString strfieldName;
+    QString strfieldDescribe;
+
+    QButtonGroup* pradioGroup;
+};
+
+struct ST_CHECKBOX_CONT
+{
+    QString strConfigurationsName;
+    QString strfieldName;
+    QString strfieldDescribe;
+
+    QCheckBox* pcheckBox;
+};
+
+struct ST_COMBOBOX_CONT
+{
+    QString strConfigurationsName;
+    QString strfieldName;
+    QString strfieldDescribe;
+
+    QComboBox* pcomboBox;
+};
+
+struct ST_TIME_CONT
+{
+    QString strConfigurationsName;
+    QString strfieldName;
+    QString strfieldDescribe;
+
+    QTimeEdit* ptimeEdit;
+};
+
+struct ST_SWITCH_CONT
+{
+    QString strConfigurationsName;
+    QString strfieldName;
+    QString strfieldDescribe;
+
+    QCheckBox* pswitchBox;
+};
+
 class OriginalWnd;
 class OriginalWnd;
 
 
 /**
 /**
@@ -141,6 +195,7 @@ public:
     void loadpage(const int& configId);
     void loadpage(const int& configId);
     QList<QStandardItem*> thirdLevelListtest;
     QList<QStandardItem*> thirdLevelListtest;
     QStandardItem* deepCopyItem(const QStandardItem* item);
     QStandardItem* deepCopyItem(const QStandardItem* item);
+    void promptSaveChanges();
 signals:
 signals:
     void RunFunSignals(ns_module::ST_BUTTON_FUN pra);
     void RunFunSignals(ns_module::ST_BUTTON_FUN pra);
     void saveClicked();
     void saveClicked();
@@ -293,6 +348,12 @@ private:
     /**组合控件
     /**组合控件
      */
      */
     std::vector<ST_COMBINED_CONT> m_veCombinedCont;
     std::vector<ST_COMBINED_CONT> m_veCombinedCont;
+    std::vector<ST_INPUT_CONT> m_veInputCont;
+    std::vector<ST_RADIO_CONT> m_veRadioCont;
+    std::vector<ST_CHECKBOX_CONT> m_veCheckBoxCont;
+    std::vector<ST_COMBOBOX_CONT> m_veComboBoxCont;
+    std::vector<ST_TIME_CONT> m_veTimeCont;
+    std::vector<ST_SWITCH_CONT> m_veSwitchCont;
     ns_module::CViewInterface* m_pTreeCViewInterface;
     ns_module::CViewInterface* m_pTreeCViewInterface;
 
 
     /**二级表目录的名称
     /**二级表目录的名称

BIN
View/die-bonder-ui/SBT_en.qm


+ 835 - 0
View/die-bonder-ui/SBT_en.ts

@@ -0,0 +1,835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="en">
+<context>
+    <name>AccountMaintenanceWnd</name>
+    <message>
+        <source>Account Maintenance</source>
+        <extracomment>账户管理</extracomment>
+        <translation type="unfinished">Account Maintenance</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <extracomment>添加</extracomment>
+        <translation type="unfinished">Add</translation>
+    </message>
+    <message>
+        <source>Modify</source>
+        <extracomment>修改</extracomment>
+        <translation type="unfinished">Modify</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <extracomment>删除</extracomment>
+        <translation type="unfinished">Delete</translation>
+    </message>
+    <message>
+        <source>User Accounts</source>
+        <translation type="unfinished">User Accounts</translation>
+    </message>
+    <message>
+        <source>GroupBox</source>
+        <translation type="unfinished">GroupBox</translation>
+    </message>
+    <message>
+        <source>30</source>
+        <translation type="unfinished">30</translation>
+    </message>
+    <message>
+        <source>Close account during idle time:</source>
+        <extracomment>闲置期间关闭账户:</extracomment>
+        <translation type="unfinished">Close account during idle time:</translation>
+    </message>
+    <message>
+        <source>Default is 30 minutes</source>
+        <extracomment>默认为30分钟</extracomment>
+        <translation type="unfinished">Default is 30 minutes</translation>
+    </message>
+    <message>
+        <source>User Name                </source>
+        <comment>用户名称                </comment>
+        <translation type="unfinished">User Name</translation>
+    </message>
+    <message>
+        <source>Full Name                                </source>
+        <comment>全名                      </comment>
+        <translation type="unfinished">Full Name</translation>
+    </message>
+    <message>
+        <source>Privilege</source>
+        <comment>特权</comment>
+        <translation type="unfinished">Privilege</translation>
+    </message>
+    <message>
+        <source>Administrator</source>
+        <comment>管理员</comment>
+        <translation type="unfinished">Administrator</translation>
+    </message>
+    <message>
+        <source>Engineer</source>
+        <comment>工程师</comment>
+        <translation type="unfinished">Engineer</translation>
+    </message>
+    <message>
+        <source>Technician</source>
+        <comment>技术员</comment>
+        <translation type="unfinished">Technician</translation>
+    </message>
+    <message>
+        <source>Senior Operator</source>
+        <comment>高级操作员</comment>
+        <translation type="unfinished">Senior Operator</translation>
+    </message>
+    <message>
+        <source>Operator</source>
+        <comment>操作员</comment>
+        <translation type="unfinished">Operator</translation>
+    </message>
+</context>
+<context>
+    <name>AddUserAccountWnd</name>
+    <message>
+        <source>Add or modify user name</source>
+        <extracomment>添加修改用户名称</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>user ID:</source>
+        <extracomment>用户名称:</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>full name:</source>
+        <extracomment>全名:</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Confirm Password:</source>
+        <extracomment>确认密码:</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <extracomment>密码:</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Finish</source>
+        <extracomment>完成</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <extracomment>取消</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Privilege</source>
+        <extracomment>权限</extracomment>
+        <translation type="unfinished">Privilege</translation>
+    </message>
+    <message>
+        <source>Administrator</source>
+        <extracomment>管理员</extracomment>
+        <translation type="unfinished">Administrator</translation>
+    </message>
+    <message>
+        <source>Engineer</source>
+        <extracomment>工程师</extracomment>
+        <translation type="unfinished">Engineer</translation>
+    </message>
+    <message>
+        <source>Senior Operator</source>
+        <extracomment>高级操作员</extracomment>
+        <translation type="unfinished">Senior Operator</translation>
+    </message>
+    <message>
+        <source>Technician</source>
+        <extracomment>技术员</extracomment>
+        <translation type="unfinished">Technician</translation>
+    </message>
+    <message>
+        <source>Operator</source>
+        <extracomment>操作员</extracomment>
+        <translation type="unfinished">Operator</translation>
+    </message>
+    <message>
+        <source>The current username already exists, please re-enter it!</source>
+        <comment>当前用户名已经存在,请重新输入!</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The passwords entered twice are inconsistent, please check</source>
+        <comment>2次密码输入的不一致,请检查</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Bond</name>
+    <message>
+        <source>PCB%1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>PT矩阵%1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ChartsAndCamerasWnd</name>
+    <message>
+        <source>MainWindow</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Good(In Limit)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stopper</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Limits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Run Event occurred</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rejected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No data</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Average</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dynamc Calibration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Accepted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Location indictor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Event occurred</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ControlOperationPage</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Live</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>100%</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>.......</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CustomMessageDlg</name>
+    <message>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ID:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>oxfffffff</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Process FailuRE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Retry</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>DbTreeViewManager</name>
+    <message>
+        <source>Please input number</source>
+        <comment>请输入数字</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>out of range,please input again</source>
+        <comment>超出设定范围,请重新输入</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <comment>开</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <comment>关</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save</source>
+        <comment>保存</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No components were modified!</source>
+        <comment>没有任何组件被修改!</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modifications detected, do you want to save?</source>
+        <comment>检测到修改内容,是否保存?</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Group</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ImageView</name>
+    <message>
+        <source>���浱ǰ����ͼƬ</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>����</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>����ͼƬ</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>PNG �ļ� (*.png);;JPEG �ļ� (*.jpg);;�����ļ� (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>����ʧ��</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>�޷�����ͼƬ��ָ��·����</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>�����ɹ�</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ͼƬ�ѳɹ����浽��</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ImageWidget</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ImageWidget_nodrag</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>JMessageTip</name>
+    <message>
+        <source>error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Currently exiting.....</source>
+        <comment>��ǰ�����˳�.....</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The current camera initialization failed and no camera is available.</source>
+        <comment>��ǰ������ʼ��ʧ�ܣ�û�п�������</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>hint</source>
+        <comment>��ʾ</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>LanguageSwitchWnd</name>
+    <message>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Theme:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>LightJoystickSwitchPage</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>GreenLight</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>22</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>11</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Joystick</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>←</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>→</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>↓</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>↑</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>MoveTo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pos:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>当前选中:模组xxx   轴:x</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Currently selected mode:</source>
+        <comment>当前选中模式:</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move Pos:</source>
+        <comment>移动点:</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>please input value</source>
+        <comment>请输入值</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>AxisType is Empty</source>
+        <comment>AxisType 为空</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ModuleType is Empty</source>
+        <comment>ModuleType 为空</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>Login</name>
+    <message>
+        <source>MainWindow</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sing in</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please enter the account number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please enter your password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please enter your password</source>
+        <comment>请输入密码</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please enter your username</source>
+        <comment>请输入用户名称</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainAndSecondaryCamerasWnd</name>
+    <message>
+        <source>MainWindow</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainWnd</name>
+    <message>
+        <source>MainWnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <extracomment>焊接</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prod. Assist</source>
+        <extracomment>焊接</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Programme</source>
+        <extracomment>焊接</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Message</source>
+        <extracomment>焊接</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Calibration</source>
+        <extracomment>焊接</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Module Config.</source>
+        <extracomment>焊接</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Diagnosis</source>
+        <extracomment>焊接</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System Info.</source>
+        <extracomment>焊接</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Help</source>
+        <extracomment>焊接</extracomment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>CLOSE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>英语</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>中文</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>主题</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>浅色</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>深色</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>设置</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Confirm Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Are you sure you want to close the application?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>确认关闭</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>你确定要关闭程序吗</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Settings</source>
+        <comment>设置</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Language:</source>
+        <comment>语言:</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>English</source>
+        <comment>英语</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <comment>中文</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Theme:</source>
+        <comment>主题</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <comment>亮色</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <comment>暗色</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>language</source>
+        <comment>语言</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>OriginalWnd</name>
+    <message>
+        <source>MainWindow</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stop
+production</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start of
+production</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>name001</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Registration number 001</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Calibration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>xxxProduct lot number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>主界面</source>
+        <translation type="vanished">MainWindow</translation>
+    </message>
+    <message>
+        <source>停止</source>
+        <translation type="vanished">Stop
+production</translation>
+    </message>
+    <message>
+        <source>启动</source>
+        <translation type="vanished">start</translation>
+    </message>
+    <message>
+        <source>姓名001</source>
+        <translation type="vanished">name001</translation>
+    </message>
+    <message>
+        <source>注册号码 001</source>
+        <translation type="vanished">Registration number 001</translation>
+    </message>
+    <message>
+        <source>校准</source>
+        <translation type="vanished">Calibration</translation>
+    </message>
+    <message>
+        <source>xxx生产编号</source>
+        <translation type="vanished">xxxProduct lot number</translation>
+    </message>
+    <message>
+        <source>SBT_QQ</source>
+        <comment>SBT_QQ</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>SqlOperation:Initialization failed, please check</source>
+        <comment>��ʼ��ʧ��,������</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The database file does not exist:</source>
+        <comment>���ݿ��ļ�������:</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Database open failure:</source>
+        <comment>���ݿ�����ʧ��:</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Program already running</source>
+        <comment>程序已在运行!</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unable to share</source>
+        <comment>无法共享!</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SingleCameraOperationWnd</name>
+    <message>
+        <source>MainWindow</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SystemInfoPage</name>
+    <message>
+        <source>MainWindow</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Language Switch</source>
+        <comment>语言切换</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Account Maintenance</source>
+        <comment>账户维护</comment>
+        <translation type="unfinished">Account Maintenance</translation>
+    </message>
+</context>
+<context>
+    <name>WaferGraphicsView</name>
+    <message>
+        <source>Hide thumbnails</source>
+        <comment>隐藏缩略图</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show thumbnails</source>
+        <comment>显示缩略图</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Send Location</source>
+        <comment>发送位置</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>

BIN
View/die-bonder-ui/SBT_zh_CN.qm


+ 846 - 0
View/die-bonder-ui/SBT_zh_CN.ts

@@ -0,0 +1,846 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh_CN">
+<context>
+    <name>AccountMaintenanceWnd</name>
+    <message>
+        <source>Account Maintenance</source>
+        <extracomment>账户管理</extracomment>
+        <translation>账户管理</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <extracomment>添加</extracomment>
+        <translation>添加</translation>
+    </message>
+    <message>
+        <source>Modify</source>
+        <extracomment>修改</extracomment>
+        <translation>修改</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <extracomment>删除</extracomment>
+        <translation>删除</translation>
+    </message>
+    <message>
+        <source>User Accounts</source>
+        <translation>用户账号</translation>
+    </message>
+    <message>
+        <source>GroupBox</source>
+        <translation>组容器</translation>
+    </message>
+    <message>
+        <source>30</source>
+        <translation>30</translation>
+    </message>
+    <message>
+        <source>Close account during idle time:</source>
+        <extracomment>闲置期间关闭账户:</extracomment>
+        <translation>闲置期间关闭账户:</translation>
+    </message>
+    <message>
+        <source>Default is 30 minutes</source>
+        <extracomment>默认为30分钟</extracomment>
+        <translation>默认30分钟</translation>
+    </message>
+    <message>
+        <source>User Name                </source>
+        <comment>用户名称                </comment>
+        <translation>用户名称</translation>
+    </message>
+    <message>
+        <source>Full Name                                </source>
+        <comment>全名                      </comment>
+        <translation>全名</translation>
+    </message>
+    <message>
+        <source>Privilege</source>
+        <comment>特权</comment>
+        <translation>权限</translation>
+    </message>
+    <message>
+        <source>Administrator</source>
+        <comment>管理员</comment>
+        <translation>管理员</translation>
+    </message>
+    <message>
+        <source>Engineer</source>
+        <comment>工程师</comment>
+        <translation>工程师</translation>
+    </message>
+    <message>
+        <source>Technician</source>
+        <comment>技术员</comment>
+        <translation>技术员</translation>
+    </message>
+    <message>
+        <source>Senior Operator</source>
+        <comment>高级操作员</comment>
+        <translation>高级技术员</translation>
+    </message>
+    <message>
+        <source>Operator</source>
+        <comment>操作员</comment>
+        <translation>操作员</translation>
+    </message>
+</context>
+<context>
+    <name>AddUserAccountWnd</name>
+    <message>
+        <source>Add or modify user name</source>
+        <extracomment>添加修改用户名称</extracomment>
+        <translation>添加或修改用户名</translation>
+    </message>
+    <message>
+        <source>user ID:</source>
+        <extracomment>用户名称:</extracomment>
+        <translation>用户的名称:</translation>
+    </message>
+    <message>
+        <source>full name:</source>
+        <extracomment>全名:</extracomment>
+        <translation>全名:</translation>
+    </message>
+    <message>
+        <source>Confirm Password:</source>
+        <extracomment>确认密码:</extracomment>
+        <translation>确认密码:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <extracomment>密码:</extracomment>
+        <translation>密码:</translation>
+    </message>
+    <message>
+        <source>Finish</source>
+        <extracomment>完成</extracomment>
+        <translation>完成</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <extracomment>取消</extracomment>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <source>Privilege</source>
+        <extracomment>权限</extracomment>
+        <translation>权限</translation>
+    </message>
+    <message>
+        <source>Administrator</source>
+        <extracomment>管理员</extracomment>
+        <translation>管理员</translation>
+    </message>
+    <message>
+        <source>Engineer</source>
+        <extracomment>工程师</extracomment>
+        <translation>工程师</translation>
+    </message>
+    <message>
+        <source>Senior Operator</source>
+        <extracomment>高级操作员</extracomment>
+        <translation>高级技术员</translation>
+    </message>
+    <message>
+        <source>Technician</source>
+        <extracomment>技术员</extracomment>
+        <translation>技术员</translation>
+    </message>
+    <message>
+        <source>Operator</source>
+        <extracomment>操作员</extracomment>
+        <translation>操作员</translation>
+    </message>
+    <message>
+        <source>The current username already exists, please re-enter it!</source>
+        <comment>当前用户名已经存在,请重新输入!</comment>
+        <translation>当前用户名已经存在,请重新输入!</translation>
+    </message>
+    <message>
+        <source>The passwords entered twice are inconsistent, please check</source>
+        <comment>2次密码输入的不一致,请检查</comment>
+        <translation>两次输入密码不一致,请检查</translation>
+    </message>
+</context>
+<context>
+    <name>Bond</name>
+    <message>
+        <source>PCB%1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>PT矩阵%1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ChartsAndCamerasWnd</name>
+    <message>
+        <source>MainWindow</source>
+        <translation>主窗口</translation>
+    </message>
+    <message>
+        <source>Good(In Limit)</source>
+        <translation>好</translation>
+    </message>
+    <message>
+        <source>Stopper</source>
+        <translation>停止点</translation>
+    </message>
+    <message>
+        <source>Limits</source>
+        <translation>阈值</translation>
+    </message>
+    <message>
+        <source>Run Event occurred</source>
+        <translation>事件运行时</translation>
+    </message>
+    <message>
+        <source>Rejected</source>
+        <translation>拒绝</translation>
+    </message>
+    <message>
+        <source>No data</source>
+        <translation>没数据</translation>
+    </message>
+    <message>
+        <source>Average</source>
+        <translation>平均值</translation>
+    </message>
+    <message>
+        <source>Dynamc Calibration</source>
+        <translation>动态校准值</translation>
+    </message>
+    <message>
+        <source>Accepted</source>
+        <translation>接受</translation>
+    </message>
+    <message>
+        <source>Location indictor</source>
+        <translation>位置坐标</translation>
+    </message>
+    <message>
+        <source>Event occurred</source>
+        <translation>事件发生</translation>
+    </message>
+</context>
+<context>
+    <name>ControlOperationPage</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished">Form</translation>
+    </message>
+    <message>
+        <source>Live</source>
+        <translation>实时</translation>
+    </message>
+    <message>
+        <source>100%</source>
+        <translation type="unfinished">100%</translation>
+    </message>
+    <message>
+        <source>.......</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>保存图片</source>
+        <translation type="obsolete">保存图片</translation>
+    </message>
+    <message>
+        <source>PNG 文件 (*.png);;JPEG 文件 (*.jpg);;所有文件 (*)</source>
+        <translation type="obsolete">PNG 文件 (*.png);;JPEG 文件 (*.jpg);;所有文件 (*)</translation>
+    </message>
+    <message>
+        <source>保存失败</source>
+        <translation type="obsolete">保存失败</translation>
+    </message>
+    <message>
+        <source>无法保存图片到指定路径。</source>
+        <translation type="obsolete">无法保存图片到指定路径</translation>
+    </message>
+    <message>
+        <source>保存成功</source>
+        <translation type="obsolete">保存成功</translation>
+    </message>
+    <message>
+        <source>图片已成功保存到:</source>
+        <translation type="obsolete">图片已成功保存到:</translation>
+    </message>
+</context>
+<context>
+    <name>CustomMessageDlg</name>
+    <message>
+        <source>Dialog</source>
+        <translation>日志</translation>
+    </message>
+    <message>
+        <source>ID:</source>
+        <translation type="unfinished">ID:</translation>
+    </message>
+    <message>
+        <source>oxfffffff</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Process FailuRE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>关</translation>
+    </message>
+    <message>
+        <source>Retry</source>
+        <translation>重试</translation>
+    </message>
+</context>
+<context>
+    <name>DbTreeViewManager</name>
+    <message>
+        <source>请输入数字</source>
+        <translation type="obsolete">请输入数字</translation>
+    </message>
+    <message>
+        <source>超出设定范围,请重新输入</source>
+        <translation type="obsolete">超出设定范围,请重新输入</translation>
+    </message>
+    <message>
+        <source>开</source>
+        <translation type="obsolete">开</translation>
+    </message>
+    <message>
+        <source>关</source>
+        <translation type="obsolete">关</translation>
+    </message>
+    <message>
+        <source>Please input number</source>
+        <comment>请输入数字</comment>
+        <translation>请输入数字</translation>
+    </message>
+    <message>
+        <source>out of range,please input again</source>
+        <comment>超出设定范围,请重新输入</comment>
+        <translation>超出设定范围,请重新输入</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <comment>开</comment>
+        <translation>开</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <comment>关</comment>
+        <translation>关</translation>
+    </message>
+    <message>
+        <source>Save</source>
+        <comment>保存</comment>
+        <translation>保存</translation>
+    </message>
+    <message>
+        <source>No components were modified!</source>
+        <comment>没有任何组件被修改!</comment>
+        <translation>没有任何组件被修改!</translation>
+    </message>
+    <message>
+        <source>Modifications detected, do you want to save?</source>
+        <comment>检测到修改内容,是否保存?</comment>
+        <translation>检测到修改内容,是否保存?</translation>
+    </message>
+</context>
+<context>
+    <name>Group</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished">Form</translation>
+    </message>
+</context>
+<context>
+    <name>ImageView</name>
+    <message>
+        <source>���浱ǰ����ͼƬ</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>����</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>����ͼƬ</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>PNG �ļ� (*.png);;JPEG �ļ� (*.jpg);;�����ļ� (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>����ʧ��</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>�޷�����ͼƬ��ָ��·����</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>�����ɹ�</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ͼƬ�ѳɹ����浽��</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ImageWidget</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished">Form</translation>
+    </message>
+</context>
+<context>
+    <name>ImageWidget_nodrag</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished">Form</translation>
+    </message>
+</context>
+<context>
+    <name>JMessageTip</name>
+    <message>
+        <source>error</source>
+        <translation>错误</translation>
+    </message>
+    <message>
+        <source>Currently exiting.....</source>
+        <comment>��ǰ�����˳�.....</comment>
+        <translation>当前正在退出.....</translation>
+    </message>
+    <message>
+        <source>The current camera initialization failed and no camera is available.</source>
+        <comment>��ǰ������ʼ��ʧ�ܣ�û�п�������</comment>
+        <translation>当前相机初始化失败,没有可用相机</translation>
+    </message>
+    <message>
+        <source>hint</source>
+        <comment>��ʾ</comment>
+        <translation>提示</translation>
+    </message>
+</context>
+<context>
+    <name>LanguageSwitchWnd</name>
+    <message>
+        <source>Dialog</source>
+        <translation>信息框</translation>
+    </message>
+    <message>
+        <source>Language:</source>
+        <translation>语言</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>英文</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>中文</translation>
+    </message>
+    <message>
+        <source>Theme:</source>
+        <translation>主题</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>浅色</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>深色</translation>
+    </message>
+</context>
+<context>
+    <name>LightJoystickSwitchPage</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished">Form</translation>
+    </message>
+    <message>
+        <source>GreenLight</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>22</source>
+        <translation type="unfinished">22</translation>
+    </message>
+    <message>
+        <source>0</source>
+        <translation type="unfinished">0</translation>
+    </message>
+    <message>
+        <source>11</source>
+        <translation type="unfinished">11</translation>
+    </message>
+    <message>
+        <source>Joystick</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>←</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>→</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>↓</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>↑</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move</source>
+        <translation>移动</translation>
+    </message>
+    <message>
+        <source>MoveTo</source>
+        <translation>移动到</translation>
+    </message>
+    <message>
+        <source>pos:</source>
+        <translation type="unfinished">坐标:</translation>
+    </message>
+    <message>
+        <source>当前选中:模组xxx   轴:x</source>
+        <translation type="unfinished">当前选中:模组xxx   轴:</translation>
+    </message>
+    <message>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Currently selected mode:</source>
+        <comment>当前选中模式:</comment>
+        <translation>当前选中模式:</translation>
+    </message>
+    <message>
+        <source>Move Pos:</source>
+        <comment>移动点:</comment>
+        <translation>移动点:</translation>
+    </message>
+    <message>
+        <source>please input value</source>
+        <comment>请输入值</comment>
+        <translation>请输入值</translation>
+    </message>
+    <message>
+        <source>AxisType is Empty</source>
+        <comment>AxisType 为空</comment>
+        <translation>AxisType 为空</translation>
+    </message>
+    <message>
+        <source>ModuleType is Empty</source>
+        <comment>ModuleType 为空</comment>
+        <translation>ModuleType 为空</translation>
+    </message>
+</context>
+<context>
+    <name>Login</name>
+    <message>
+        <source>MainWindow</source>
+        <translation>主窗口</translation>
+    </message>
+    <message>
+        <source>Sing in</source>
+        <translation>登录</translation>
+    </message>
+    <message>
+        <source>Exit</source>
+        <translation>退出</translation>
+    </message>
+    <message>
+        <source>Please enter the account number</source>
+        <translation>请输入账号</translation>
+    </message>
+    <message>
+        <source>Please enter your password</source>
+        <translation>请输入密码</translation>
+    </message>
+    <message>
+        <source>Please enter your password</source>
+        <comment>请输入密码</comment>
+        <translation>请输入密码</translation>
+    </message>
+    <message>
+        <source>Please enter your username</source>
+        <comment>请输入用户名称</comment>
+        <translation>请输入用户名称</translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation type="unfinished">1</translation>
+    </message>
+</context>
+<context>
+    <name>MainAndSecondaryCamerasWnd</name>
+    <message>
+        <source>MainWindow</source>
+        <translation>主窗口</translation>
+    </message>
+</context>
+<context>
+    <name>MainWnd</name>
+    <message>
+        <source>MainWnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <extracomment>焊接</extracomment>
+        <translation>主页面</translation>
+    </message>
+    <message>
+        <source>Prod. Assist</source>
+        <extracomment>焊接</extracomment>
+        <translation>产品协助</translation>
+    </message>
+    <message>
+        <source>Programme</source>
+        <extracomment>焊接</extracomment>
+        <translation>方案</translation>
+    </message>
+    <message>
+        <source>Message</source>
+        <extracomment>焊接</extracomment>
+        <translation>消息</translation>
+    </message>
+    <message>
+        <source>Calibration</source>
+        <extracomment>焊接</extracomment>
+        <translation>校准</translation>
+    </message>
+    <message>
+        <source>Module Config.</source>
+        <extracomment>焊接</extracomment>
+        <translation>模块配置</translation>
+    </message>
+    <message>
+        <source>Diagnosis</source>
+        <extracomment>焊接</extracomment>
+        <translation>诊断</translation>
+    </message>
+    <message>
+        <source>System Info.</source>
+        <extracomment>焊接</extracomment>
+        <translation>系统信息</translation>
+    </message>
+    <message>
+        <source>Help</source>
+        <extracomment>焊接</extracomment>
+        <translation>帮助</translation>
+    </message>
+    <message>
+        <source>CLOSE</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <source>英语</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>中文</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>主题</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>浅色</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>深色</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>设置</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Confirm Close</source>
+        <translation>确认关闭</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to close the application?</source>
+        <translation>你确定要关闭程序吗</translation>
+    </message>
+    <message>
+        <source>确认关闭</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>你确定要关闭程序吗</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Settings</source>
+        <comment>设置</comment>
+        <translation>设置</translation>
+    </message>
+    <message>
+        <source>Language:</source>
+        <comment>语言:</comment>
+        <translation>语言</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <comment>英语</comment>
+        <translation>英文</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <comment>中文</comment>
+        <translation>中文</translation>
+    </message>
+    <message>
+        <source>Theme:</source>
+        <comment>主题</comment>
+        <translation>主题</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <comment>亮色</comment>
+        <translation>浅色</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <comment>暗色</comment>
+        <translation>深色</translation>
+    </message>
+    <message>
+        <source>language</source>
+        <comment>语言</comment>
+        <translation>语言</translation>
+    </message>
+</context>
+<context>
+    <name>OriginalWnd</name>
+    <message>
+        <source>MainWindow</source>
+        <translation>主窗口</translation>
+    </message>
+    <message>
+        <source>Stop
+production</source>
+        <translation>停止</translation>
+    </message>
+    <message>
+        <source>Start of
+production</source>
+        <translation>启动</translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation type="unfinished">1</translation>
+    </message>
+    <message>
+        <source>name001</source>
+        <translation>姓名001</translation>
+    </message>
+    <message>
+        <source>Registration number 001</source>
+        <translation>注册号码 001</translation>
+    </message>
+    <message>
+        <source>Calibration</source>
+        <translation>校准</translation>
+    </message>
+    <message>
+        <source>xxxProduct lot number</source>
+        <translation>xxx生产编号</translation>
+    </message>
+    <message>
+        <source>SBT_QQ</source>
+        <comment>SBT_QQ</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>SqlOperation:Initialization failed, please check</source>
+        <comment>��ʼ��ʧ��,������</comment>
+        <translation>SqlOperation:初始化失败,请检查</translation>
+    </message>
+    <message>
+        <source>The database file does not exist:</source>
+        <comment>���ݿ��ļ�������:</comment>
+        <translation>数据库文件不存在</translation>
+    </message>
+    <message>
+        <source>Database open failure:</source>
+        <comment>���ݿ�����ʧ��:</comment>
+        <translation>数据库打开失败</translation>
+    </message>
+    <message>
+        <source>Program already running</source>
+        <comment>程序已在运行!</comment>
+        <translation>程序已在运行!</translation>
+    </message>
+    <message>
+        <source>Unable to share</source>
+        <comment>无法共享!</comment>
+        <translation>无法共享!</translation>
+    </message>
+</context>
+<context>
+    <name>SingleCameraOperationWnd</name>
+    <message>
+        <source>MainWindow</source>
+        <translation>主窗口</translation>
+    </message>
+</context>
+<context>
+    <name>SystemInfoPage</name>
+    <message>
+        <source>MainWindow</source>
+        <translation>主窗口</translation>
+    </message>
+    <message>
+        <source>Language Switch</source>
+        <comment>语言切换</comment>
+        <translation>语言切换</translation>
+    </message>
+    <message>
+        <source>Account Maintenance</source>
+        <comment>账户维护</comment>
+        <translation>账户维护</translation>
+    </message>
+</context>
+<context>
+    <name>WaferGraphicsView</name>
+    <message>
+        <source>Hide thumbnails</source>
+        <comment>隐藏缩略图</comment>
+        <translation>隐藏缩略图</translation>
+    </message>
+    <message>
+        <source>Show thumbnails</source>
+        <comment>显示缩略图</comment>
+        <translation>显示缩略图</translation>
+    </message>
+    <message>
+        <source>Send Location</source>
+        <comment>发送位置</comment>
+        <translation>发送位置</translation>
+    </message>
+</context>
+</TS>

+ 9 - 2
View/die-bonder-ui/Src/Sql/SqlOperation.cpp

@@ -305,6 +305,13 @@ int SqlOperation::loadAllControlData()
                     str = codec->toUnicode(element.strDescribe.data(), element.strDescribe.size());
                     str = codec->toUnicode(element.strDescribe.data(), element.strDescribe.size());
                     element.strDescribe = str.toStdString();
                     element.strDescribe = str.toStdString();
                 }
                 }
+
+                /*if (element.strDescribe_Eng.size() > 0)
+                {
+                    str = codec->toUnicode(element.strDescribe_Eng.data(), element.strDescribe_Eng.size());
+                    element.strDescribe_Eng = str.toStdString();
+                }*/
+                
                 if (element.strUnit.size() > 0)
                 if (element.strUnit.size() > 0)
                 {
                 {
                     str = codec->toUnicode(element.strUnit.data(), element.strUnit.size());
                     str = codec->toUnicode(element.strUnit.data(), element.strUnit.size());
@@ -392,7 +399,7 @@ int SqlOperation::loadGivenTableControlData(QString tableName, ST_TABLE_CONTROL_
         return -1;
         return -1;
     } else
     } else
     {
     {
-        QString sql = QString("SELECT GroupId, Name, Describe,Describe_Eng, Type, Value, Defult, UpperLimit,LowerLimit,Unit, UserGrade, ChangeFlag, Icon, Enable, CallFun FROM %1 ").arg(tableName);
+        QString sql = QString("SELECT GroupId, Name, Describe, Describe_Eng, Type, Value, Defult, UpperLimit,LowerLimit,Unit, UserGrade, ChangeFlag, Icon, Enable, CallFun FROM %1 ").arg(tableName);
         QSqlQuery queryBond(db);
         QSqlQuery queryBond(db);
         queryBond.prepare(sql);
         queryBond.prepare(sql);
         if (queryBond.exec())
         if (queryBond.exec())
@@ -405,7 +412,7 @@ int SqlOperation::loadGivenTableControlData(QString tableName, ST_TABLE_CONTROL_
                 value.iUserGrade = queryBond.value("UserGrade").toString().toInt(&ok, 16);
                 value.iUserGrade = queryBond.value("UserGrade").toString().toInt(&ok, 16);
                 value.strName = queryBond.value("Name").toString().toStdString();
                 value.strName = queryBond.value("Name").toString().toStdString();
                 value.strDescribe = queryBond.value("Describe").toString().toStdString();
                 value.strDescribe = queryBond.value("Describe").toString().toStdString();
-                value.strDescribe_Eng = queryBond.value("Describe_Eng").toString().toStdString();
+                //value.strDescribe_Eng = queryBond.value("Describe_Eng").toString().toStdString();
                 value.strType = queryBond.value("Type").toString().toStdString();
                 value.strType = queryBond.value("Type").toString().toStdString();
                 value.strValue = queryBond.value("Value").toString().toStdString();
                 value.strValue = queryBond.value("Value").toString().toStdString();
                 value.strDefult = queryBond.value("Defult").toString().toStdString();
                 value.strDefult = queryBond.value("Defult").toString().toStdString();

+ 33 - 0
View/die-bonder-ui/Src/SystemInfoPage/PageWnd/LanguageSwitchWnd.cpp

@@ -16,6 +16,15 @@ LanguageSwitchWnd::LanguageSwitchWnd(QWidget *parent)
         ui->chRadioButton->setChecked(true);
         ui->chRadioButton->setChecked(true);
     }
     }
 
 
+    if (gen_if.getThemeValue() == 0)
+    {
+        ui->lightRadioButton->setChecked(true);
+    }
+    else
+    {
+        ui->darkRadioButton->setChecked(true);
+    }
+
     connect(ui->englishRadioButton, &QRadioButton::toggled, this, [this](bool checked) {
     connect(ui->englishRadioButton, &QRadioButton::toggled, this, [this](bool checked) {
         if (checked)
         if (checked)
             emit languageChanged("en");
             emit languageChanged("en");
@@ -24,6 +33,30 @@ LanguageSwitchWnd::LanguageSwitchWnd(QWidget *parent)
         if (checked)
         if (checked)
             emit languageChanged("zh_CN");
             emit languageChanged("zh_CN");
         });
         });
+    connect(ui->lightRadioButton, &QRadioButton::toggled, this, [this](bool checked) {
+        if (checked) {
+            QString qssFileName = ":/light.qss";
+            QFile qssFile(qssFileName);
+            if (qssFile.open(QFile::ReadOnly)) {
+                QString qssContent = qssFile.readAll();
+                qApp->setStyleSheet(qssContent);
+                qssFile.close();
+            }
+            gen_if.setThemeValue(0);
+        }
+        });
+    connect(ui->darkRadioButton, &QRadioButton::toggled, this, [this](bool checked) {
+        if (checked) {
+            QString qssFileName = ":/dark.qss";
+            QFile qssFile(qssFileName);
+            if (qssFile.open(QFile::ReadOnly)) {
+                QString qssContent = qssFile.readAll();
+                qApp->setStyleSheet(qssContent);
+                qssFile.close();
+            }
+            gen_if.setThemeValue(1);
+        }
+        });
 }
 }
 
 
 LanguageSwitchWnd::~LanguageSwitchWnd()
 LanguageSwitchWnd::~LanguageSwitchWnd()

+ 245 - 0
View/die-bonder-ui/dark.qss

@@ -814,3 +814,248 @@ LightJoystickSwitchPage QTabWidget#switchTabWidget QLineEdit
     border: 1px solid #BABBDC;
     border: 1px solid #BABBDC;
 }
 }
 
 
+DbTreeViewManager QFrame
+{
+    background-color: #C7CAEB;
+}
+
+DbTreeViewManager QLabel
+{
+    color: white;
+}
+
+QWidget#NavigationWidget QLabel {
+    color: white;
+}
+
+/* 设置分支图标 */
+DbTreeViewManager QTreeView::branch:closed:has-children {
+    border-image: none;
+    image: url(:/images/home_add.png);
+}
+DbTreeViewManager QTreeView::branch:open:has-children {
+    border-image: none;
+    image: url(:/images/home_minus.png);
+}
+
+/* 设置多选框 */
+DbTreeViewManager QTreeView::indicator:unchecked {
+    image: url(:/images/home_NotSelecte.png);
+}
+DbTreeViewManager QTreeView::indicator:checked {
+    image: url(:/images/home_selected.png);
+}
+
+/* 背景透明,行间距 */
+DbTreeViewManager QTreeView {
+    color: white;
+    background: transparent;
+    border: none;
+}
+
+/* 设置项目选中的背景色 */
+DbTreeViewManager QTreeView::item:selected {
+    background-color: #A9B4FF;
+}
+
+/* 设置项目的行间距 */
+DbTreeViewManager QTreeView::item {
+    padding-top: 5px;    /* 上边距 */
+    padding-bottom: 5px; /* 下边距 */
+}
+
+DbTreeViewManager {
+    color: white;
+}
+
+DbTreeViewManager QFrame
+{
+    background-color: #A9B4FF;
+}
+
+/* 设置分支图标 */
+DbTreeViewManager QTreeView::branch:closed:has-children {
+    border-image: none;
+    image: url(:/images/home_add.png);
+}
+DbTreeViewManager QTreeView::branch:open:has-children {
+    border-image: none;
+    image: url(:/images/home_minus.png);
+}
+
+/* 设置多选框 */
+DbTreeViewManager QTreeView::indicator:unchecked {
+    image: url(:/images/home_NotSelecte.png);
+}
+DbTreeViewManager QTreeView::indicator:checked {
+    image: url(:/images/home_selected.png);
+}
+
+/* 背景透明,行间距 */
+DbTreeViewManager QTreeView {
+    background: transparent;
+    border: none;
+}
+
+/* 设置项目选中的背景色 */
+DbTreeViewManager QTreeView::item:selected {
+    background-color: #A9B4FF;
+}
+
+/* 设置项目的行间距 */
+DbTreeViewManager QTreeView::item {
+    padding-top: 5px;    /* 上边距 */
+    padding-bottom: 5px; /* 下边距 */
+}
+
+DbTreeViewManager QPushButton[type="menu"] {
+    position: absolute;
+    border-radius: 6px;
+    opacity: 1;
+    background: #A9B4FF;
+    border: 1px solid #A9B4FF;
+}
+DbTreeViewManager QPushButton[type="menu"]:hover {
+    background-color: #5F80FF; /* 鼠标悬停效果 */
+}
+
+DbTreeViewManager QWidget#m_thirdLevelFieldWnd
+{
+    background-color: transparent;
+}
+
+QWidget#thirdLevelFieldWnd QLineEdit {
+    background: #A9B4FF;
+    border: 1px solid #A9B4FF;
+    border-radius: 6px;
+    padding: 2px 5px;
+}
+
+QWidget#thirdLevelFieldWnd QLineEdit:disabled {
+    background: #90A8FF;
+}
+
+QWidget#thirdLevelFieldWnd QLabel {
+    font-size: 14px;
+    color: white;
+}
+
+QWidget#thirdLevelFieldWnd QLabel:disabled {
+    color: blue;
+}
+
+QWidget#thirdLevelFieldWnd QPushButton[type="default"] {
+    background: #A9B4FF;
+    border: 1px solid #A9B4FF;
+    border-radius: 5px;
+}
+QWidget#thirdLevelFieldWnd QPushButton[type="default"]:hover {
+    background-color: #5F80FF;
+}
+QWidget#thirdLevelFieldWnd QPushButton[type="default"]:disabled {
+    background-color: #90A8FF;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="checkbox"]::indicator {
+    width: 20px;
+    height: 20px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="checkbox"]::indicator:unchecked {
+    background-color: #A9B4FF;
+    border: 1px solid #A9B4FF;
+    border-radius: 2px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="checkbox"]::indicator:checked {
+    image: url(:/images/three_Selecte.png);
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="checkbox"] {
+    spacing: 0px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="checkbox"]::indicator:disabled {
+    background-color: #90A8FF;
+}
+
+QWidget#thirdLevelFieldWnd QComboBox {
+    background: #A9B4FF;
+    border: 1px solid #A9B4FF;
+    border-radius: 6px;
+    padding: 2px 5px;
+}
+
+QWidget#thirdLevelFieldWnd QComboBox::drop-down {
+    width: 20px;
+}
+
+QWidget#thirdLevelFieldWnd QTimeEdit {
+    background: #A9B4FF;
+    border: 1px solid #A9B4FF;
+    border-radius: 6px;
+    padding: 2px 5px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="switch"]::indicator {
+    width: 30px;
+    height: 30px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="switch"]::indicator:unchecked {
+    background-color: #A9B4FF;
+    border-radius: 6px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="switch"]::indicator:checked {
+    background-color: #5F80FF;
+    border-radius: 6px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="switch"]::indicator:disabled {
+    background-color: #90A8FF;
+}
+
+QWidget#thirdLevelFieldWnd QLineEdit#comboInput {
+    background: #A9B4FF;
+    border: 1px solid #A9B4FF;
+    border-radius: 5px;
+    padding: 2px 5px;
+}
+
+OriginalWnd QPushButton[type="left"] {
+    position: absolute;
+    border-radius: 6px;
+    opacity: 1;
+    background: #CBD0FF;
+    border: none;
+}
+
+OriginalWnd QPushButton[type="left"]:hover {
+    background-color: #A9B4FF; /* 鼠标悬停效果 */
+}
+
+OriginalWnd QLabel[type="text"] {
+    background: transparent;
+    font-family: "思源黑体";
+    font-size: 14px;
+    font-weight: 500;
+    color: #4E51CE;
+}
+
+OriginalWnd QLabel[type="f"] {
+    background-color: transparent;
+    color: #2A7ED8;
+    font-size: 12px;
+    font-weight: bold;
+}
+
+QWidget#thirdLevelFieldWnd QPushButton[type="save"] {
+    background: #A9B4FF;
+    border: 1px solid #A9B4FF;
+    border-radius: 5px;
+}
+
+QWidget#thirdLevelFieldWnd QPushButton[type="save"]:hover {
+    background-color: #5F80FF;
+}

+ 192 - 0
View/die-bonder-ui/light.qss

@@ -687,3 +687,195 @@ LightJoystickSwitchPage QTabWidget#switchTabWidget QLineEdit
     border-radius: 6px;
     border-radius: 6px;
     border: 1px solid #BABBDC;
     border: 1px solid #BABBDC;
 }
 }
+
+DbTreeViewManager QFrame
+{
+    background-color: #C7CAEB;
+}
+
+/* 设置分支图标 */
+DbTreeViewManager QTreeView::branch:closed:has-children {
+    border-image: none;
+    image: url(:/images/home_add.png);
+}
+DbTreeViewManager QTreeView::branch:open:has-children {
+    border-image: none;
+    image: url(:/images/home_minus.png);
+}
+
+/* 设置多选框 */
+DbTreeViewManager QTreeView::indicator:unchecked {
+    image: url(:/images/home_NotSelecte.png);
+}
+DbTreeViewManager QTreeView::indicator:checked {
+    image: url(:/images/home_selected.png);
+}
+
+/* 背景透明,行间距 */
+DbTreeViewManager QTreeView {
+    background: transparent;
+    border: none;
+}
+
+/* 设置项目选中的背景色 */
+DbTreeViewManager QTreeView::item:selected {
+    background-color: #A9B4FF;
+}
+
+/* 设置项目的行间距 */
+DbTreeViewManager QTreeView::item {
+    padding-top: 5px;    /* 上边距 */
+    padding-bottom: 5px; /* 下边距 */
+}
+
+DbTreeViewManager QPushButton[type="menu"] {
+    position: absolute;
+    border-radius: 6px;
+    opacity: 1;
+    background: #FFFFFF;
+    border: 1px solid #BABBDC;
+}
+DbTreeViewManager QPushButton[type="menu"]:hover {
+    background-color: #A9B4FF; /* 鼠标悬停效果 */
+}
+
+DbTreeViewManager QWidget#m_thirdLevelFieldWnd
+{
+    background-color: transparent;
+}
+
+QWidget#thirdLevelFieldWnd QLineEdit {
+    background: #FFFFFF;
+    border: 1px solid #BABBDC;
+    border-radius: 6px;
+    padding: 2px 5px;
+}
+
+QWidget#thirdLevelFieldWnd QLineEdit:disabled {
+    background: #eeeeee;
+}
+
+QWidget#thirdLevelFieldWnd QLabel {
+    font-size: 14px;
+    color: black;
+}
+
+QWidget#thirdLevelFieldWnd QLabel:disabled {
+    color: blue;
+}
+
+QWidget#thirdLevelFieldWnd QPushButton[type="default"] {
+    background: #FFFFFF;
+    border: 1px solid #BABBDC;
+    border-radius: 5px;
+}
+QWidget#thirdLevelFieldWnd QPushButton[type="default"]:hover {
+    background-color: #F0F0F0;
+}
+QWidget#thirdLevelFieldWnd QPushButton[type="default"]:disabled {
+    background-color: #cccccc;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="checkbox"]::indicator {
+    width: 20px;
+    height: 20px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="checkbox"]::indicator:unchecked {
+    background-color: #FFFFFF;
+    border: 1px solid #BABBDC;
+    border-radius: 2px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="checkbox"]::indicator:checked {
+    image: url(:/images/three_Selecte.png);
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="checkbox"] {
+    spacing: 0px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="checkbox"]::indicator:disabled {
+    background-color: #eeeeee;
+}
+
+QWidget#thirdLevelFieldWnd QComboBox {
+    background: #FFFFFF;
+    border: 1px solid #BABBDC;
+    border-radius: 6px;
+    padding: 2px 5px;
+}
+
+QWidget#thirdLevelFieldWnd QComboBox::drop-down {
+    width: 20px;
+}
+
+QWidget#thirdLevelFieldWnd QTimeEdit {
+    background: #FFFFFF;
+    border: 1px solid #BABBDC;
+    border-radius: 6px;
+    padding: 2px 5px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="switch"]::indicator {
+    width: 30px;
+    height: 30px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="switch"]::indicator:unchecked {
+    background-color: #BABBDC;
+    border-radius: 6px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="switch"]::indicator:checked {
+    background-color: #4CAF50;
+    border-radius: 6px;
+}
+
+QWidget#thirdLevelFieldWnd QCheckBox[type="switch"]::indicator:disabled {
+    background-color: #eeeeee;
+}
+
+QWidget#thirdLevelFieldWnd QLineEdit#comboInput {
+    background: #FFFFFF;
+    border: 1px solid #BABBDC;
+    border-radius: 5px;
+    padding: 2px 5px;
+}
+
+OriginalWnd QPushButton[type="left"] {
+    position: absolute;
+    border-radius: 6px;
+    opacity: 1;
+    background: #CBD0FF;
+    border: none;
+}
+
+OriginalWnd QPushButton[type="left"]:hover {
+    background-color: #A9B4FF; /* 鼠标悬停效果 */
+}
+
+OriginalWnd QLabel[type="text"] {
+    background: transparent;
+    font-family: "思源黑体";
+    font-size: 14px;
+    font-weight: 500;
+    color: #4E51CE;
+}
+
+OriginalWnd QLabel[type="f"] {
+    background-color: transparent;
+    color: #2A7ED8;
+    font-size: 12px;
+    font-weight: bold;
+}
+
+QWidget#thirdLevelFieldWnd QPushButton[type="save"] {
+    background: #FFFFFF;
+    border: 1px solid #BABBDC;
+    border-radius: 5px;
+}
+
+QWidget#thirdLevelFieldWnd QPushButton[type="save"]:hover {
+    background-color: #F0F0F0;
+}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.