Exemple #1
0
class GStatusBar(QStatusBar):

    def __init__(self, parent):

        QStatusBar.__init__(self, parent)

        if not Config.SERV:
            print("Not Serveur ")
            return

        self.rsp = {}
        self.check = TaskThreadServer(self)
        QObject.connect(self.check, SIGNAL("download_"), self.download_)
        self.check.start()

    def download_(self):
        print("download_")
        self.b = QCommandLinkButton("")
        self.b.clicked.connect(self.get_setup)
        msg = QLabel("Connexion ...")
        self.addWidget(msg)
        msg.hide()
        self.b.setText(self.check.data.get("message"))
        self.addWidget(self.b)

    def get_setup(self):
        self.progressBar = QProgressBar(self)
        # self.progressBar.setGeometry(430, 30, 400, 25)
        self.addWidget(self.progressBar)
        self.t = TaskThread(self)
        QObject.connect(self.t, SIGNAL("download_finish"),
                        self.download_finish)
        self.t.start()

    def failure(self):
        print("failure")
        self.b.setText("La mise à jour a échoué.")
        self.progressBar.close()
        self.b.setEnabled(True)

    def download_finish(self):
        print('download_finish')
        self.b.hide()
        self.progressBar.close()
        self.instb = QCommandLinkButton("installer la Ver. {}".format(
            self.check.data.get("version")))
        self.instb.clicked.connect(self.start_install)
        # self.progressBar.close()
        self.addWidget(self.instb)

    def start_install(self):
        try:
            os.startfile(os.path.basename(self.installer_name))
            import sys
            sys.exit()
        except OSError:
            self.failure()

    def download_setup_file(self):
        self.b.setEnabled(False)
        self.b.setText("Téléchargement en cours ...")

        self.installer_name = "{}.exe".format(self.check.data.get("app"))

        url = "{}{}".format(base_url, self.check.data.get("setup_file_url"))
        r = requests.get(url, stream=True)
        if r.status_code == 200:
            total_length = r.headers.get('content-length')
            with open(self.installer_name, 'wb') as f:
                if total_length is None:  # no content length header
                    f.write(r.content)
                else:
                    dl = 0
                    for data in r.iter_content(chunk_size=4096):
                        dl += len(data)
                        f.write(data)
                        done = int(100 * dl / int(total_length))
                        self.progressBar.setValue(done)