def OnCheck(self, event): # close eventually existing previous instance self.list.ClearInstance() self.SetStatusBarText() try: # create trees fstree = FilesystemTree(self.rootDir, self.preferences.includes, \ [ os.path.sep + self.metaName ] + self.preferences.excludes) fstree.open() dbtree = DatabaseTree(self.dbFile, self.sigFile) dbtree.open() memtree = MemoryTree() memtree.open() except MyException as e: e.showDialog('Checking ' + self.rootDir) return try: # create progress dialog progressDialog = FileProcessingProgressDialog(self, 'Checking ' + self.rootDir) progressDialog.Show() stats = fstree.getNodeStatistics() progressDialog.Init(stats.getNodeCount(), stats.getNodeSize()) # execute task fstree.registerHandlers(progressDialog.SignalNewFile, \ progressDialog.SignalBytesDone) fstree.diff(dbtree, memtree) memtree.commit() fstree.unRegisterHandlers() except UserCancelledException: progressDialog.SignalFinished() return except MyException as e: progressDialog.Destroy() e.showDialog('Checking ' + self.rootDir) return # signal that we have returned from calculation, either # after it is done or after progressDialog signalled that the # user stopped the calcuation using the cancel button progressDialog.SignalFinished() self.list.SetInstance(Instance(self.preferences, memtree, dbtree, fstree)) self.list.readonly = False self.SetStatusBarText('Checked ' + str(stats))