Example #1
0
	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))