def __init__(self, listener): self.proc = None self.parser = None self.project = BlsProject() self.listener = listener self.one_file = True self.killed = False
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: