frameUpdate.py 3.31 KB

# -*- coding: utf-8 -*-
 
import wx
import subprocess
import time
import os.path
from wx.lib.pubsub import pub
from DownloadFile import *
from VlibrasCheckVersion import *
import Util
from threading import Thread

class UpdateView(wx.Frame,Thread):

    def __init__(self):

        Thread.__init__(self)
        style = wx.SYSTEM_MENU | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX
        wx.Frame.__init__(self, None, title='Atualização do VLibras', style=style,size=(380,150))
        self.SetIcon(wx.Icon(Util.ICON, wx.BITMAP_TYPE_ICO))
        self.myPanel = wx.Panel(self, -1)
        self.myPanel.SetBackgroundColour('#F5F5F5')
        btnCancel = wx.Button(self.myPanel, label="Cancelar",pos=(270, 85), size=(80, 25))
        self.txtInfo = wx.StaticText(self.myPanel, -1, pos=(5,105))
        self.txtInfo.SetForegroundColour('#000000')
        self.progress = wx.Gauge(self.myPanel, range=100,pos=(5,40),size=(365,23))
        self.Center() 
        
	# Anexa um evento ao botão
        self.Bind(wx.EVT_BUTTON, self.onBtnCancelClick, btnCancel)
        self.__close_callback = None
        self.Bind(wx.EVT_CLOSE, self._when_closed)

        pub.subscribe(self.erroDeConexao, "erroDeConexao")
        pub.subscribe(self.updateProgress, "updateProgress")
        self.percentDownload = 0;
        self.register_close_callback(lambda: True)
        self.dlg = wx.ProgressDialog("Atualização", "Verificando Atualização...", style = wx.PD_CAN_ABORT | wx.PD_APP_MODAL)
        self.pulse = True

    def run(self):
        pulse =True
        while self.pulse and pulse:
            if(not pulse):
                self.dlg.Destroy()
                break
            (pulse, skip) = self.dlg.Pulse()
                
        self.dlg.Destroy()
        
     """ chamado quando termina de verificacao de atualização """   
    def closePulseDialog(self):
        self.pulse = False
       

    def erroDeConexao(self, msg):
        wx.MessageBox('Ocorreu um erro ao tentar fazer atualização. \n Por favor tente mais tarde.', 'Informação',wx.OK | wx.ICON_INFORMATION)
        self.Destroy()
        
    def register_close_callback(self, callback):
        self.__close_callback = callback

    def _when_closed(self, event):
         wx.CallAfter(pub.sendMessage, "cancelDownload",event = event)
            # self.OnCloseFrame(event);


    def onBtnCancelClick(self, event):
        print 'cancel'
        wx.CallAfter(pub.sendMessage, "cancelDownload",event = event)
    
           
    def updateProgress(self, msg):
        value = msg
        self.percentDownload = value
        self.progress.SetValue(value)
        
    def ShowMessage(self, mesagem):
        dialog = wx.MessageDialog(self, message = mesagem, caption = "Atualização",
                                  style = wx.OK | wx.ICON_INFORMATION)
        dialog.ShowModal()    
        
    def ShowMessageError(self, mesagem):
        wx.MessageBox(mesagem, 'Informação',
                      wx.OK | wx.ICON_ERROR)
        # self.downloadFile.stop()
        self.Destroy()
            
    def showMessageDialog(self):
        dialog = wx.MessageDialog(self, message = "Tem certeza que deseja cancelar a atualização?", caption = "Cancelar Atualização",
                                  style = wx.YES_NO | wx.ICON_QUESTION)
        return dialog.ShowModal()