Ejemplo n.º 1
0
	def __init__(self, listener):
		self.proc     = None
		self.parser   = None		
		self.project  = BlsProject()
		self.listener = listener
		self.one_file = True
		self.killed   = False
Ejemplo n.º 2
0
class CompileBls(aexec.ProcessListener):
	"Компиляция bls файлов"

	def __init__(self, listener):
		self.proc     = None
		self.parser   = None		
		self.project  = BlsProject()
		self.listener = listener
		self.one_file = True
		self.killed   = False

	def gen_compile_lst(self, psrc, puser, plist, is_full):
		self.to_listener(u'Построение compile.lst...\n')

		result = self.project.init(psrc, puser)
		if not result:
			self.to_listener(self.project.get_last_err())
			self.error()
		self.check()

		result = self.project.circle_check()
		if not result:
			self.to_listener(self.project.get_last_err())
			self.error()
		self.check()

		result, cnt = self.project.gen_compile_lst(is_full, plist)
		if not result:
			self.to_listener(self.project.get_last_err())
			self.error()
		self.check()

		return cnt

	def run(self, bls_file, one_file, is_full, callback):
		try:
			time_beg = time.time()
			path_r   = PathResolver(bls_file)
			puser    = path_r.GetUserDir()
			psrc     = path_r.GetBlsDir()
			plist    = os.path.join(puser, 'compile.lst')
			
			self.check()

			self.callback = callback
			self.one_file = one_file
			if one_file:
				cnt_cmp_lst = 1
				cnt_total   = 1				
			else:
				cnt_cmp_lst = self.gen_compile_lst(psrc, puser, plist, is_full)
				cnt_total   = self.project.get_total_cnt()

			self.check()

			self.proc = None
			try:
				self.parser = BLSCompilerParser(self, cnt_total, cnt_cmp_lst, time_beg)
				self.proc   = aexec.AsyncProcess(self)			
				if one_file:
					p, args = AppRunner().RunCompileOneFile(bls_file)
				else:
					p, args = AppRunner().RunCompileList(bls_file, plist)
				self.proc.connect_to_process(p, args)

			except Exception, e:
				self.to_listener(u'Ошибка при запуске процесса компилирования:\n%s' % str(e))
		except KilledError, e:
			pass
		except: