def installUpdate(self,installDir='',gui=False,title=''):
     if installDir is None or installDir=='':
         installDir = self.getInstallDir()
     message = self.checkPermissions(installDir,gui,title)
     if message != '':
         return message
     if gui:
         QApplication.setOverrideCursor( Qt.WaitCursor )
     s = QSettings()
     packageType = self.getPackageType()
     (ret,version) = cpt_city_update( installDir, True, packageType )
     if gui:
         QApplication.restoreOverrideCursor()
     if ret:       
         s = QSettings()
         s.setValue('CptCity/updateChecked', str(date.today().isoformat()))
         s.setValue('CptCity/updateAvailable', '')
         message = self.tr('Version %s installed') % (str(version))
         if gui:
             QMessageBox.information(None, self.dlg.windowTitle(), message, QMessageBox.Close)
             self.dlg.pbtnUpdateCheck.setEnabled( False )
         return message
     else:
         message = self.tr('Error downloading or installing update, check console')
         if gui:
             QMessageBox.warning(None, self.dlg.windowTitle(), message, QMessageBox.Close)
         return message
    def checkUpdate(self,installDir='',gui=False,title=''):
        if installDir is None or installDir=='':
            installDir = self.getInstallDir()

        packageType = self.getPackageType()
        if packageType == 'cpt-city-qgis-min':
            message = self.tr('no need to check for update for this package')
            QMessageBox.information(None, self.dlg.windowTitle(), message, QMessageBox.Close)
            return
        #message = self.checkPermissions(installDir,gui,title)
        #if message != '':
        #    return message

        # if we have an available update, no need to check
        s = QSettings()
        if s.value('CptCity/updateAvailable', '', type=str) != '':
            (ret,version) = (True,s.value('CptCity/updateAvailable', '', type=str))
        else:
            # set override cursor
            if gui:
                QApplication.setOverrideCursor( Qt.WaitCursor )      
            # fetch new version
            (ret,version) = cpt_city_update( installDir, False, packageType )
            if gui:
                QApplication.restoreOverrideCursor()
            s = QSettings()
            # update settings
            s.setValue('CptCity/updateChecked', str(date.today().isoformat()))
            if ret:
                s.setValue('CptCity/updateAvailable', str(version))
            
                
        # we have an update, act on it
        if ret:
            #TODO print new version info and/or log, when not running from gui
            if gui:
                result = QMessageBox.information(None, title, \
                                                     self.tr('Version (%s) is available, download and install?') % ( str(version) ), \
                                                     QMessageBox.Yes | QMessageBox.No)
                if result == QMessageBox.No:
                    return ''
                else:
                    return self.installUpdate(installDir,gui,title)
            else:
                return self.tr('New cpt-city version (%s) is available') % ( str(version) )
        elif version != 0:
            if gui:
                QMessageBox.information(None, title, self.tr('Up to date (version %s)') % (str(version)), QMessageBox.Close)
                self.dlg.pbtnUpdateCheck.setEnabled( False )
            else:
                return ''
        else:
            message = self.tr('Error checking update')
            if gui:
                QMessageBox.warning(None, self.dlg.windowTitle(), message, QMessageBox.Close)
            return message

        return ''