Example #1
0
 def open_ajouter_version(self):
     self.window = QtWidgets.QWidget()
     self.ui = Ui_Version()
     self.ui.setupUi(self.window)
     self.window.show()
Example #2
0
 def open_import_script(self):
     self.window = QtWidgets.QWidget()
     self.ui = Ui_import_script()
     self.ui.setupUi(self.window)
     self.window.show()
Example #3
0
 def open_about(self):
     self.window = QtWidgets.QWidget()
     self.ui = Ui_About()
     self.ui.setupUi(self.window)
     self.window.show()
Example #4
0
 def open_sqlserver_param(self):
     self.window = QtWidgets.QWidget()
     self.ui = Ui_SQLServer()
     self.ui.setupUi(self.window)
     self.window.show()
Example #5
0
 def open_mysql_param(self):
     self.window = QtWidgets.QWidget()
     self.ui = Ui_Mysql()
     self.ui.setupUi(self.window)
     self.window.show()
Example #6
0
class Ui_MainWindow(object):
    select_server_val = ""
    select_version_val = ""
    select_version_debut_val = ""
    select_version_fin_val = ""
    select_server_creation_val = ""
    host = ""
    port = ""
    user = ""
    password = ""
    dbname = ""
    nb_query = 0

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setWindowIcon(QIcon('iconBig.gif'))
        # MainWindow.resize(800, 600)
        MainWindow.setFixedSize(800, 600)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 127))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 127))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 127))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 127))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
        MainWindow.setPalette(palette)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(9, 9, 249, 93))
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.demarrer_btn = QtWidgets.QPushButton(self.centralwidget)
        self.demarrer_btn.setGeometry(QtCore.QRect(350, 290, 121, 37))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.demarrer_btn.sizePolicy().hasHeightForWidth())
        self.demarrer_btn.setSizePolicy(sizePolicy)
        self.demarrer_btn.setCursor(QtGui.QCursor(
            QtCore.Qt.PointingHandCursor))
        self.demarrer_btn.setStyleSheet("QPushButton:hover:!pressed\n"
                                        "{\n"
                                        "  border: 1px solid lime;\n"
                                        "background-color: rgb(0, 0, 0);\n"
                                        "font: 75 16pt \"Cambria\";\n"
                                        "color: rgb(255, 255, 255);\n"
                                        "}\n"
                                        "\n"
                                        "QPushButton\n"
                                        "{\n"
                                        "background-color: rgb(0, 0, 0);\n"
                                        "font: 75 16pt \"Cambria\";\n"
                                        "color: rgb(255, 255, 255);\n"
                                        "padding:5px;\n"
                                        "}\n"
                                        "\n"
                                        "\n"
                                        "\n"
                                        "")
        self.demarrer_btn.setObjectName("demarrer_btn")
        self.log_group = QtWidgets.QGroupBox(self.centralwidget)
        self.log_group.setGeometry(QtCore.QRect(30, 334, 741, 201))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText,
                         brush)
        self.log_group.setPalette(palette)
        font = QtGui.QFont()
        font.setFamily("Calibri")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.log_group.setFont(font)
        self.log_group.setObjectName("log_group")
        self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.log_group)
        self.verticalLayout_7.setObjectName("verticalLayout_7")
        self.log_area = QtWidgets.QPlainTextEdit(self.log_group)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(11)
        font.setBold(False)
        font.setWeight(50)
        self.log_area.setFont(font)
        self.log_area.setReadOnly(True)
        self.log_area.setObjectName("log_area")
        self.verticalLayout_7.addWidget(self.log_area)
        self.frame_2 = QtWidgets.QFrame(self.centralwidget)
        self.frame_2.setGeometry(QtCore.QRect(250, 50, 301, 141))
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.frame_2)
        self.verticalLayout.setObjectName("verticalLayout")
        self.group_operations = QtWidgets.QGroupBox(self.centralwidget)
        self.group_operations.setGeometry(QtCore.QRect(30, 40, 741, 231))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText,
                         brush)
        self.group_operations.setPalette(palette)
        font = QtGui.QFont()
        font.setFamily("Calibri")
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.group_operations.setFont(font)
        self.group_operations.setObjectName("group_operations")
        self.group_mis_a_jour = QtWidgets.QGroupBox(self.group_operations)
        self.group_mis_a_jour.setGeometry(QtCore.QRect(40, 60, 291, 161))
        self.group_mis_a_jour.setStyleSheet("QGroupBox {color: white;}")
        self.group_mis_a_jour.setObjectName("group_mis_a_jour")
        self.version_debut_label = QtWidgets.QLabel(self.group_mis_a_jour)
        self.version_debut_label.setGeometry(QtCore.QRect(20, 40, 81, 16))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText,
                         brush)
        self.version_debut_label.setPalette(palette)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.version_debut_label.setFont(font)
        self.version_debut_label.setObjectName("version_debut_label")
        self.select_version_debut = QtWidgets.QComboBox(self.group_mis_a_jour)
        self.select_version_debut.setGeometry(QtCore.QRect(120, 40, 161, 20))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.select_version_debut.setFont(font)
        self.select_version_debut.setObjectName("select_version_debut")
        self.select_version_debut.addItem("")
        self.select_version_fin = QtWidgets.QComboBox(self.group_mis_a_jour)
        self.select_version_fin.setGeometry(QtCore.QRect(120, 80, 161, 20))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.select_version_fin.setFont(font)
        self.select_version_fin.setObjectName("select_version_fin")
        self.select_version_fin.addItem("")
        self.select_server = QtWidgets.QComboBox(self.group_mis_a_jour)
        self.select_server.setGeometry(QtCore.QRect(120, 120, 161, 20))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.select_server.setFont(font)
        self.select_server.setObjectName("select_server")
        self.select_server.addItem("")
        self.select_server.addItem("")
        # self.select_server.addItem("")
        self.version_fin_label = QtWidgets.QLabel(self.group_mis_a_jour)
        self.version_fin_label.setGeometry(QtCore.QRect(20, 80, 71, 16))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText,
                         brush)
        self.version_fin_label.setPalette(palette)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.version_fin_label.setFont(font)
        self.version_fin_label.setObjectName("version_fin_label")
        self.server_mis_a_jour_label = QtWidgets.QLabel(self.group_mis_a_jour)
        self.server_mis_a_jour_label.setGeometry(QtCore.QRect(20, 120, 71, 16))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText,
                         brush)
        self.server_mis_a_jour_label.setPalette(palette)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.server_mis_a_jour_label.setFont(font)
        self.server_mis_a_jour_label.setObjectName("server_mis_a_jour_label")
        self.group_creation = QtWidgets.QGroupBox(self.group_operations)
        self.group_creation.setGeometry(QtCore.QRect(340, 60, 391, 161))
        self.group_creation.setStyleSheet("QGroupBox {color: white;}")
        self.group_creation.setObjectName("group_creation")
        self.creation_script = QtWidgets.QPushButton(self.group_creation)
        self.creation_script.setGeometry(QtCore.QRect(20, 100, 75, 23))
        self.creation_script.setCursor(
            QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.creation_script.setObjectName("creation_script")
        self.creation_script.setStyleSheet(
            """QPushButton:hover:!pressed{border: 1px solid lime;background-color:black;color:white;}"""
        )
        self.creation_edit = QtWidgets.QLineEdit(self.group_creation)
        self.creation_edit.setGeometry(QtCore.QRect(110, 100, 271, 21))
        self.creation_edit.setObjectName("creation_edit")
        self.select_server_creation = QtWidgets.QComboBox(self.group_creation)
        self.select_server_creation.setGeometry(QtCore.QRect(110, 40, 131, 22))
        self.select_server_creation.setObjectName("select_server_creation")
        self.select_server_creation.addItem("")
        self.select_server_creation.addItem("")
        self.server_creation_label = QtWidgets.QLabel(self.group_creation)
        self.server_creation_label.setGeometry(QtCore.QRect(20, 40, 47, 13))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(10)
        self.server_creation_label.setFont(font)
        self.server_creation_label.setStyleSheet("QLabel{color:white}")
        self.server_creation_label.setObjectName("server_creation_label")
        self.name_db_label = QtWidgets.QLabel(self.group_creation)
        self.name_db_label.setGeometry(QtCore.QRect(20, 70, 61, 16))
        self.name_db_label.setStyleSheet("QLabel{color:white}")
        self.name_db_label.setObjectName("name_db_label")
        self.name_db_label.setFont(font)
        self.db_name_edit = QtWidgets.QLineEdit(self.group_creation)
        self.db_name_edit.setGeometry(QtCore.QRect(110, 70, 131, 20))
        self.db_name_edit.setObjectName("db_name_edit")
        self.mis_a_jour = QtWidgets.QRadioButton(self.group_operations)
        self.mis_a_jour.setGeometry(QtCore.QRect(40, 30, 82, 17))
        self.mis_a_jour.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.mis_a_jour.setObjectName("mis_a_jour")
        self.creation = QtWidgets.QRadioButton(self.group_operations)
        self.creation.setGeometry(QtCore.QRect(340, 30, 82, 17))
        self.creation.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.creation.setObjectName("creation")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        self.menuparametres = QtWidgets.QMenu(self.menubar)
        self.menuparametres.setObjectName("menuparametres")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        self.statusbar.setStyleSheet(
            """QStatusBar{background-color:black;color:white;}""")
        MainWindow.setStatusBar(self.statusbar)
        self.actionMysql = QtWidgets.QAction(MainWindow)
        self.actionMysql.setObjectName("actionMysql")
        self.actionSqlServer = QtWidgets.QAction(MainWindow)
        self.actionSqlServer.setObjectName("actionSqlServer")
        self.actionMysql_2 = QtWidgets.QAction(MainWindow)
        self.actionMysql_2.setObjectName("actionMysql_2")
        self.actionSQL_Server = QtWidgets.QAction(MainWindow)
        self.actionSQL_Server.setObjectName("actionSQL_Server")
        self.actionMysql_3 = QtWidgets.QAction(MainWindow)
        self.actionMysql_3.setObjectName("actionMysql_3")
        self.actionSQL_Server_2 = QtWidgets.QAction(MainWindow)
        self.actionSQL_Server_2.setObjectName("actionSQL_Server_2")

        # Ajouter Version
        # self.actionAddversion = QtWidgets.QAction(MainWindow)
        # self.actionAddversion.setObjectName("actionAddversion")
        # self.actionAddversion.setIcon(QIcon('add.png'))

        # Import Script
        self.actionImportscript = QtWidgets.QAction(MainWindow)
        self.actionImportscript.setObjectName("actionImportscript")
        self.actionImportscript.setIcon(QIcon('Upload_16x16.png'))

        # Exit
        self.actionexit = QtWidgets.QAction(MainWindow)
        self.actionexit.setObjectName("actionexit")
        self.actionexit.setIcon(QIcon('Log Out_16x16.png'))
        # About
        self.actionAbout = QtWidgets.QAction(MainWindow)
        self.actionAbout.setObjectName("actionAbout")
        self.actionAbout.setIcon(QIcon('Information_16x16.png'))

        self.menuparametres.addAction(self.actionMysql_3)
        self.menuparametres.addSeparator()
        self.menuparametres.addAction(self.actionSQL_Server_2)
        self.menuparametres.addSeparator()
        # self.menuparametres.addAction(self.actionAddversion)
        # self.menuparametres.addSeparator()
        self.menuparametres.addAction(self.actionImportscript)
        self.menuparametres.addSeparator()
        self.menuparametres.addAction(self.actionAbout)
        self.menuparametres.addSeparator()
        self.menuparametres.addAction(self.actionexit)
        self.menubar.addAction(self.menuparametres.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        """ my changes in view"""
        # hide group
        # self.log_group.hide()
        self.mis_a_jour.setChecked(True)
        self.creation_script.setEnabled(False)
        self.creation_edit.setEnabled(False)
        self.db_name_edit.setEnabled(False)
        self.select_server_creation.setEnabled(False)

        self.actionMysql_3.setIcon(QIcon('mysql.png'))
        self.actionSQL_Server_2.setIcon(QIcon('sql-server-icon-png-11347.png'))
        self.demarrer_btn.setIcon(QIcon('gear.png'))
        self.demarrer_btn.setIconSize(QSize(25, 25))
        # self.menuparametres.setIcon(QIcon('./Icons/Settings_32x32.png'))
        # self.menuparametres.setIconSize(QSize(32, 32))

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(
            _translate("MainWindow", "Scripts Tool V1.0.0"))
        self.demarrer_btn.setText(_translate("MainWindow", "Démarrer"))
        self.log_group.setTitle(
            _translate("MainWindow", "Moniteur d'exécution:"))
        self.group_operations.setTitle(_translate("MainWindow", "Opérations:"))
        self.group_mis_a_jour.setTitle(_translate("MainWindow",
                                                  "Mise à jour:"))
        self.version_debut_label.setText(
            _translate("MainWindow", "Version début:"))
        self.select_version_debut.setItemText(
            0, _translate("MainWindow", "Select Version ..."))
        self.select_version_fin.setItemText(
            0, _translate("MainWindow", "Select Version ..."))
        self.select_server.setItemText(0, _translate("MainWindow", "MySQL"))
        self.select_server.setItemText(1, _translate("MainWindow",
                                                     "SQL Server"))
        self.version_fin_label.setText(_translate("MainWindow",
                                                  "Version Fin:"))
        self.server_mis_a_jour_label.setText(
            _translate("MainWindow", "Serveur:"))
        self.group_creation.setTitle(_translate("MainWindow", "Création:"))
        self.creation_script.setText(_translate("MainWindow", "Parcourir ..."))
        self.select_server_creation.setItemText(
            0, _translate("MainWindow", "MySQL"))
        self.select_server_creation.setItemText(
            1, _translate("MainWindow", "SQL Server"))
        self.server_creation_label.setText(_translate("MainWindow",
                                                      "Serveur:"))
        self.name_db_label.setText(_translate("MainWindow", "Nom base:"))
        self.mis_a_jour.setText(_translate("MainWindow", "Mise à jour"))
        self.creation.setText(_translate("MainWindow", "Création"))
        self.menuparametres.setTitle(_translate("MainWindow", "Paramétrage"))
        self.actionMysql.setText(_translate("MainWindow", "Mysql"))
        self.actionSqlServer.setText(_translate("MainWindow", "SqlServer"))
        self.actionMysql_2.setText(_translate("MainWindow", "Mysql"))
        self.actionSQL_Server.setText(_translate("MainWindow", "SQL Server"))
        self.actionMysql_3.setText(_translate("MainWindow", "Mysql"))
        self.actionSQL_Server_2.setText(_translate("MainWindow", "SQL Server"))
        # self.actionAddversion.setText(_translate("MainWindow", "Ajouter Version"))
        self.actionImportscript.setText(
            _translate("MainWindow", "Importer Version"))
        self.actionexit.setText(_translate("MainWindow", "Exit"))
        self.actionAbout.setText(_translate("MainWindow", "à propos"))
        self.actionexit.setShortcut(_translate("MainWindow", "Ctrl+Q"))

        # Set Action Quit Application
        self.actionexit.setStatusTip(
            _translate("MainWindows", 'Exit application !'))
        self.actionexit.triggered.connect(qApp.quit)
        self.actionAbout.triggered.connect(self.open_about)

        # ToolTips
        # self.actionAddversion.setStatusTip(_translate("MainWindows", 'Ajouter Version !'))
        self.actionImportscript.setStatusTip(
            _translate("MainWindows", 'Importer Version !'))
        self.actionAbout.setStatusTip(
            _translate("MainWindows", 'à propos de l\'application !'))
        self.actionSQL_Server_2.setStatusTip(
            _translate("MainWindows", 'Paramétrage serveur SQL Server !'))
        self.actionMysql_3.setStatusTip(
            _translate("MainWindows", 'Paramétrage serveur Mysql !'))
        """ This is my logic """
        self.populate_version()
        # self.select_version_val = str(self.select_version_debut.currentText())
        self.select_version_debut_val = str(
            self.select_version_debut.currentText())
        self.select_version_fin_val = str(
            self.select_version_fin.currentText())
        self.select_server_creation_val = str(
            self.select_server_creation.currentText())
        self.select_server_val = str(self.select_server.currentText())
        self.actionMysql_3.triggered.connect(self.open_mysql_param)
        self.actionSQL_Server_2.triggered.connect(self.open_sqlserver_param)
        self.actionImportscript.triggered.connect(self.open_import_script)
        # self.actionAddversion.triggered.connect(self.open_ajouter_version)
        self.demarrer_btn.clicked.connect(self.run_script)
        self.creation_script.clicked.connect(self.upload_file)

        self.select_server.currentTextChanged.connect(self.get_server)
        self.select_version_debut.currentTextChanged.connect(
            self.get_version_debut)
        self.select_version_fin.currentTextChanged.connect(
            self.get_version_fin)
        self.select_server_creation.currentTextChanged.connect(
            self.get_server_creation)
        self.mis_a_jour.toggled.connect(
            lambda: self.radiostate(self.mis_a_jour))
        self.creation.toggled.connect(lambda: self.radiostate(self.creation))

    def run_script(self):
        jackpot_regex = r"(^\s*\*)|(^\s*/)|(^\s*-)|(^\s*\*)"
        query = ""
        nb_query_executed = 0
        nb_query_failed = 0
        dir_path = r'C:\users\%username%\Desktop\ScriptTool_Log'
        timestump = datetime.today().strftime('%Y-%m-%d-%H_%M_%S')
        errors = ""
        creation_errors = False

        if self.mis_a_jour.isChecked():

            self.log_area.clear()

            version_debut = self.select_version_debut_val
            version_fin = self.select_version_fin_val
            server = self.select_server_val
            # dir_path = r'C:\users\%username%\Desktop\ScriptTool_Log'
            # timestump = datetime.today().strftime('%Y-%m-%d-%H_%M_%S')

            sqliteConnection, cursor = conn.db_connection()
            try:
                sql_select_query = """select host,port,user,password,dbName from parametrage_serveur where type=?"""
                val = (self.select_server_val, )
                col = cursor.execute(sql_select_query, val)

                for i in col:
                    self.host = i[0]
                    self.port = i[1]
                    self.user = i[2]
                    self.password = i[3]
                    self.dbname = i[4]

            except sqlite3.Error as e:
                my_fnc.db_errors(str(e))

            if self.host == "" or self.port == "" or self.user == "" or self.password == "" or self.dbname == "":
                # print('popup SVP parameter sever first')
                my_fnc.show_popup(self, 'param_server')

            else:

                server_connection, server_cursor = conn.db_connection_server(
                    self.select_server_val, self.host, self.port, self.user,
                    self.password, self.dbname)
                if str(server_connection) != 'None':

                    if version_debut != "" and version_fin != "":

                        end_with_err, errors, queries_executed, nb_query_executed, nb_query_failed, server_type = my_fnc.execute_script(
                            self, server, version_debut, version_fin,
                            server_connection, server_cursor, cursor)

                        if end_with_err and queries_executed != "":
                            # put errors in log file
                            my_fnc.createDirectory(
                                os.path.join(dir_path, server_type))
                            with open(
                                    os.path.expandvars(
                                        os.path.join(dir_path, server_type)) +
                                    r'\Log_' + timestump + '.log',
                                    'w') as log_file:
                                log_file.write(str(errors))

                            # self.log_area.setPlainText('Requêtes Exécutées avec Succès:\n\n' + str(queries_executed))
                            # self.log_area.setStyleSheet("QPlainTextEdit{color:green}")

                            # self.log_area.setPlainText('Résumé de l\'opération:\n\n' + 'Nombre de Requêtes éxecutées Avec Succès: '+str(nb_query_executed)+'\n'+
                            #                            'Nombre de Requêtes échouées: '+str(nb_query_failed))
                            self.log_area.clear()
                            self.log_area.appendHtml(
                                '<html><p>Résumé de l\'opération:</p><p style="color:green;">Nombre de Requêtes éxecutées Avec Succès: '
                                + str(nb_query_executed) +
                                '</p></br><p style="color:red;">Nombre de Requêtes échouées: '
                                + str(nb_query_failed) + '</p></html>')
                            # self.log_area.setStyleSheet("QPlainTextEdit{color:green}")
                            my_fnc.end_with_err(os.path.expandvars(dir_path))

                            # my_fnc.show_popup(self, 'end_with_err')

                        elif end_with_err:
                            # put errors in log file
                            my_fnc.createDirectory(
                                os.path.join(dir_path, server_type))
                            with open(
                                    os.path.expandvars(
                                        os.path.join(dir_path, server_type)) +
                                    r'\Log_' + timestump + '.log',
                                    'w') as log_file:
                                log_file.write(str(errors))

                            self.log_area.setPlainText(
                                'Résumé de l\'opération:\n' +
                                'Nombre de Requêtes échouées: ' +
                                str(nb_query_failed))

                            my_fnc.end_with_err(os.path.expandvars(dir_path))

                        elif queries_executed != "" and not end_with_err:
                            self.log_area.setPlainText(
                                'Résumé de l\'opération:\n' +
                                'Nombre de Requêtes éxecutées Avec Succès: ' +
                                str(nb_query_executed))

                            my_fnc.show_popup(self, 'end_ok')

                    else:
                        my_fnc.show_popup(self, 'version_empty')

                else:
                    print('server connection error !')
        else:
            """ Add creation logic here """
            if self.select_server_creation_val == "MySQL":
                except_to_use = mysql.connector.Error

            else:
                except_to_use = pyodbc.Error
            sqliteConnection, cursor = conn.db_connection()

            try:
                sql_select_query = """select host,port,user,password,dbName from parametrage_serveur where type=?"""
                val = (self.select_server_creation_val, )
                col = cursor.execute(sql_select_query, val)

                for i in col:
                    self.host = i[0]
                    self.port = i[1]
                    self.user = i[2]
                    self.password = i[3]
                    self.dbname = i[4]

            except sqlite3.Error as e:

                my_fnc.db_errors(str(e))

            if self.host == "" and self.port == "" and self.user == "" and self.password == "":
                # print('popup SVP parameter sever first')
                my_fnc.show_popup(self, 'param_server')

            else:

                server_connection, server_cursor = conn.db_connection_server(
                    self.select_server_creation_val, self.host, self.port,
                    self.user, self.password, self.dbname)

                if self.creation_edit.text() != "" and self.db_name_edit.text(
                ) != "":

                    create_db_query = "CREATE DATABASE {};".format(
                        self.db_name_edit.text())
                    server_cursor.execute(create_db_query)
                    server_connection.commit()
                    print('db created successfully')
                    self.log_area.setPlainText(str(create_db_query))
                    nb_query_executed += 1

                    use_db_query = "USE {};".format(self.db_name_edit.text())
                    server_cursor.execute(use_db_query)
                    server_connection.commit()
                    print('db selected successfully ')
                    self.log_area.setPlainText(str(use_db_query))
                    nb_query_executed += 1

                    with open(self.creation_edit.text(), 'r',
                              errors='ignore') as f:

                        lines = f.readlines()

                        for line in lines:
                            clean_line = line.rstrip()
                            if not re.match(jackpot_regex, clean_line):
                                query += clean_line
                                if clean_line.endswith(';'):

                                    try:
                                        server_cursor.execute(query)
                                        server_connection.commit()
                                        print("Script inserted successfully ")
                                        QApplication.processEvents()
                                        self.log_area.setPlainText(str(query))
                                        nb_query_executed += 1
                                        query = ""

                                    except except_to_use as err:
                                        errors += str(err) + '\n'
                                        nb_query_failed += 1
                                        creation_errors = True
                                        query = ""

                        if creation_errors:
                            my_fnc.createDirectory(
                                os.path.join(dir_path,
                                             self.select_server_creation_val))
                            with open(
                                    os.path.expandvars(
                                        os.path.join(
                                            dir_path,
                                            self.select_server_creation_val)) +
                                    r'\Log_' + timestump + '.log',
                                    'w') as log_file:
                                log_file.write(errors)
                                self.log_area.clear()
                            my_fnc.end_with_err(os.path.expandvars(dir_path))

                        self.log_area.appendHtml(
                            '<html><p>Résumé de l\'opération:</p><p style="color:green;">Nombre de Requêtes éxecutées Avec Succès: '
                            + str(nb_query_executed) +
                            '</p></br><p style="color:red;">Nombre de Requêtes échouées: '
                            + str(nb_query_failed) + '</p></html>')

                elif self.creation_edit.text() == "":
                    my_fnc.show_popup(self, 'script_creation')
                else:
                    my_fnc.show_popup(self, 'db_name')

    def get_server(self):
        self.select_server_val = str(self.select_server.currentText())
        self.populate_version()

    def get_version_debut(self):
        self.select_version_debut_val = str(
            self.select_version_debut.currentText())

    def get_server_creation(self):
        self.select_server_creation_val = str(
            self.select_server_creation.currentText())

    def get_version_fin(self):

        self.select_version_fin_val = str(
            self.select_version_fin.currentText())
        # self.select_version_val = str(self.select_version_fin.currentText())

    def populate_version(self):

        self.select_version_debut.clear()
        self.select_version_fin.clear()
        list_version = my_fnc.list_version(
            str(self.select_server.currentText()))

        for i in list_version:
            self.select_version_debut.addItem(str(i[0]))
            self.select_version_fin.addItem(str(i[0]))

    def open_mysql_param(self):
        self.window = QtWidgets.QWidget()
        self.ui = Ui_Mysql()
        self.ui.setupUi(self.window)
        self.window.show()

    def open_sqlserver_param(self):
        self.window = QtWidgets.QWidget()
        self.ui = Ui_SQLServer()
        self.ui.setupUi(self.window)
        self.window.show()

    def open_about(self):
        self.window = QtWidgets.QWidget()
        self.ui = Ui_About()
        self.ui.setupUi(self.window)
        self.window.show()

    def open_import_script(self):
        self.window = QtWidgets.QWidget()
        self.ui = Ui_import_script()
        self.ui.setupUi(self.window)
        self.window.show()

    def open_ajouter_version(self):
        self.window = QtWidgets.QWidget()
        self.ui = Ui_Version()
        self.ui.setupUi(self.window)
        self.window.show()

    def radiostate(self, b):

        if b.isChecked() and b.text() == "Mise à jour":
            self.creation_script.setEnabled(False)
            self.db_name_edit.setEnabled(False)
            self.select_server_creation.setEnabled(False)
            self.creation_edit.clear()
            self.select_version_debut.setEnabled(True)
            self.select_version_fin.setEnabled(True)
            self.select_server.setEnabled(True)
        else:
            self.creation_script.setEnabled(True)
            self.db_name_edit.setEnabled(True)
            self.select_server_creation.setEnabled(True)
            self.select_version_debut.setEnabled(False)
            self.select_version_fin.setEnabled(False)
            self.select_server.setEnabled(False)

    def upload_file(self):

        options = QtWidgets.QFileDialog.Options()
        options |= QtWidgets.QFileDialog.DontUseNativeDialog
        self.file_path, _ = QtWidgets.QFileDialog.getOpenFileName(
            None, "Open File", "", "SQL Files (*.sql)", options=options)
        self.creation_edit.setText(self.file_path)