include("import") func doStart() include("struct") fvar(old, cname) cname = "hi"+project_name() old=block.select(BLK_HEAD) println('#!/usr/bin/python') println('# -*- coding: UTF-8 -*-') println('#-----------------------------------------------------') println('# ',code(project_name ()),'.py') println('#-----------------------------------------------------') println('') block.select(old) need_sys() old = block.select(BLK_LOC) println('# Program body') println('if __name__ == "__main__":') block.inclvl() println('run = ' && code(cname) && '()') println('run.main()') block.declvl() block.select(old) old = block.select(BLK_FUNC) println('def hi_input(self, prompt=u""):') block.inclvl() println('return unicode(raw_input(prompt.encode(sys.stdout.encoding)),sys.stdout.encoding)') block.declvl() println('') block.select(old) old = block.select(BLK_BODY) println('def main(self):') block.inclvl() sys.initall() println('') event(onStart,'') if (isdef(AutoClose)) //println('self.hi_input(u"Нажмите клавишу Enter для завершения...")') println('self.hi_input(u"Press Enter to close...")') end block.declvl() block.select(old) old = block.select(BLK_CLASS) println('class ' && code(cname) && ':') block.inclvl() println('# Global vars') block.copyhere(BLK_GLOB) println('') println('# Functions') block.copyhere(BLK_FUNC) println('') println('# Program body') block.copyhere(BLK_BODY) block.delete(BLK_GLOB) block.delete(BLK_BODY) block.declvl() block.select(old) old = block.select(BLK_HEAD) println('') println('# imports') block.copyhere(BLK_IMPORT) event(onImport) println('') println('# Main class') block.copyhere(BLK_CLASS) println('') println('#######################################################################') block.copyhere(BLK_LOC) block.delete(BLK_IMPORT) block.delete(BLK_FUNC) block.delete(BLK_CLASS) block.delete(BLK_LOC) block.select(old) fvar(mk, main) mk = block.reggen() block.select(mk) println("from distutils.core import setup") println("import py2exe") println("import sys") println("import shutil") println("import subprocess") println("import os") println("#") println("if len(sys.argv) == 1:") println(" sys.argv.append(\"py2exe\")") println(" sys.argv.append(\"-q\")") println("#") println("options = {\"py2exe\": {\"compressed\": 1,") println(" \"optimize\": 2,") println(" \"upx\": 0,") println(" \"upx_exe\": 0,") println(" \"bundle_files\": 1,") println(" \"excludes\":['difflib','doctest','unittest']}}") println("#") println("upx_exe = os.path.normpath(r'" + sys.codedir() + "..\..\..\plug\upx.exe" + "')") println("################################################################") println("from py2exe.build_exe import py2exe") println("#") println("class build_installer(py2exe):") println(" def initialize_options(self):") println(" # Add a new \"upx\" option for compression with upx") println(" py2exe.initialize_options(self)") println(" self.upx = 0") println(" self.upx_exe = 0") println(" ") println(" def copy_file(self, *args, **kwargs):") println(" # Override to UPX copied binaries.") println(" (fname, copied) = result = py2exe.copy_file(self, *args, **kwargs)") println(" basename = os.path.basename(fname)") println(" if (copied and self.upx and") println(" (basename[:6]+basename[-4:]).lower() != 'python.dll' and") println(" fname[-4:].lower() in ('.pyd', '.dll')):") println(" subprocess.call([upx_exe, \"-9\", \"--force\", os.path.normpath(fname)])") println(" return result") println(" ") println(" def patch_python_dll_winver(self, dll_name, new_winver=None):") println(" # Override this to first check if the file is upx'd and skip if so") println(" if not self.dry_run:") println(" if not subprocess.call([upx_exe, \"-qt\", dll_name]):") println(" pass") println(" else:") println(" py2exe.patch_python_dll_winver(self, dll_name, new_winver)") println(" # We UPX this one file here rather than in copy_file so") println(" # the version adjustment can be successful") println(" if self.upx:") println(" subprocess.call([upx_exe, \"-9\", \"--force\", os.path.normpath(dll_name)])") println(" ") println(" def run(self):") println(" # First, let py2exe do it's work.") println(" py2exe.run(self)") println(" if self.upx_exe:") println(" subprocess.call([upx_exe, \"-9\", \"--force\", \"-o"+lng.project_name()+".exe\", r\"dist\\"+lng.project_name()+".exe\"])") println(" else:") println(" shutil.copyfile(r\"dist\\"+lng.project_name()+".exe\", \""+lng.project_name()+".exe\")") println("# shutil.rmtree('dist', True)") println("# shutil.rmtree('build', True)") println("# os.remove('setup.py')") println(" ") println("################################################################") println("setup(") println(" options = options,") println(" # The lib directory contains everything except the executables and the python dll.") println(" zipfile = None,") println(" console = ['"+lng.project_name()+".py'],") println(" # use out build_installer class as extended py2exe build command") println(" cmdclass = {\"py2exe\": build_installer},") println(" )") main = sys.codedir() + "setup.py" block.save(main) block.delete(mk) end