def on_gen(self): '''生成工程''' if not self.currentConfig: return #获取工程名及有效路径 project_name = self.et_project_name.text() project_location = self.et_project_location.text() qdir = QDir(project_location) if not qdir.exists(): if not qdir.mkpath(project_location): QMessageBox.warning(self, '警告', '路径无效!') return project_location = qdir.absolutePath() if not project_location.endsWith( '/') and not project_location.endsWith('\\'): project_location += os.sep project_location.replace('\\', '/') if project_name.isEmpty() or project_location.isEmpty(): QMessageBox.warning(self, '警告', '项目名称或路径不能为空!') return self.currentConfig.project_name = app.QString2str(project_name) self.currentConfig.project_location = app.QString2str(project_location) content = self.currentConfig.toJson() fileInfo = QFileInfo(self.path) if not self.path.isEmpty(): path = app.QString2str(self.path) with open(path, 'w+') as f: f.write(content) item = self.lw.currentItem() item.setData(QtCore.Qt.UserRole, content) template_name = self.currentConfig.template_source template_dir = app.g_pwd + os.sep + 'templates' + os.sep + template_name.encode( 'utf-8') with open(template_dir + os.sep + 'config.json', 'r') as f: self.currentConfig.config_content = f.read() ret_json = app.render(self.currentConfig.config_content, config=self.currentConfig) self.currentConfig.config = json.loads(ret_json) for file in self.currentConfig.config['files']: sourcepath = template_dir + os.sep + file['source'].encode('utf-8') targetdir = self.currentConfig.project_location + self.currentConfig.project_name targetpath = targetdir + os.sep + file['target'] fi = QFileInfo(targetpath) qdir = fi.absoluteDir() if not qdir.exists(): qdir.mkpath(fi.absolutePath()) with open(sourcepath, 'r') as f: content = f.read() content = app.render(content, config=self.currentConfig) #渲染文件 with open(targetpath, 'w+') as f: f.write(content.encode('utf-8')) QMessageBox.information(self, '提示', '生成成功!')
def initializePage(self): super(FrameworkLibraryPage, self).initializePage() exsits = [] for moudel in app.g_configurations.modules: exsits.append(moudel['name']) self.checkboxs = [] index = 0 ret_json = app.render(app.g_configurations.config_content, config=app.g_configurations) app.g_configurations.config = json.loads(ret_json) for moudel in app.g_configurations.config['moudels']: checkBox = QCheckBox(moudel['name']) checkBox.setToolTip(moudel['description']) if moudel['buildin']: checkBox.setCheckState(Qt.Checked) checkBox.setEnabled(False) elif moudel['name'] in exsits: checkBox.setCheckState(Qt.Checked) else: checkBox.setCheckState(Qt.Unchecked) row = index / 3 offset = index % 3 self.gLayout.addWidget(checkBox, row, offset) self.checkboxs.append(checkBox) index += 1
def serve_dir_directory_index(): if os.path.exists("app.py"): # if app.py exists we use the render function import app return app.render() if os.path.exists("index.html"): return send_from_directory(static_file_dir, 'index.html') else: return "<h1 align='center'>404</h1><h2 align='center'>Missing index.html file</h2><p align='center'><img src='https://ucarecdn.com/3a0e7d8b-25f3-4e2f-add2-016064b04075/rigobaby.jpg' /></p>"
def on_gen(self): '''生成工程''' if not self.currentConfig: return #获取工程名及有效路径 project_name = self.et_project_name.text() project_location = self.et_project_location.text() qdir = QDir(project_location) if not qdir.exists(): if not qdir.mkpath(project_location): QMessageBox.warning(self, '警告', '路径无效!') return project_location = qdir.absolutePath() if not project_location.endsWith('/') and not project_location.endsWith('\\'): project_location += os.sep if project_name.isEmpty() or project_location.isEmpty(): QMessageBox.warning(self, '警告', '项目名称或路径不能为空!') return self.currentConfig.project_name = app.QString2str(project_name) self.currentConfig.project_location = app.QString2str(project_location) template_name = self.currentConfig.template_source template_dir = app.g_pwd + os.sep + 'templates' + os.sep + template_name with open(template_dir + os.sep + 'config.json', 'r') as f: self.currentConfig.config_content = f.read() ret_json = app.render(self.currentConfig.config_content, config=self.currentConfig) self.currentConfig.config = json.loads(ret_json) for file in self.currentConfig.config['files']: sourcepath = template_dir + os.sep + file['source'] targetdir = self.currentConfig.project_location + self.currentConfig.project_name targetpath = targetdir + os.sep + file['target'] fi = QFileInfo(targetpath) qdir = fi.absoluteDir() if not qdir.exists(): qdir.mkpath(fi.absolutePath()) with open(sourcepath, 'r') as f: content = f.read() content = app.render(content, config=self.currentConfig) #渲染文件 with open(targetpath, 'w+') as f: f.write(content.encode('utf-8')) QMessageBox.information(self,'提示','生成成功!')
def create_html_report(self, items, file_name): """Generating html report file""" # Check OS to choose type of path used path = self._check_report_path(file_name, 'html') # Init html page markdown report_data = self.write_report_data_html(items) if type(report_data) is list: typ = '0' else: typ = '1' context = { 'general_report_data': self.general_report_data, 'file_name': file_name, 'report_data': report_data, 'type': typ } # Write into the file with open(path, "w+") as f: html = render('report_template.tpl', context) f.write(html) webbrowser.open_new("file:///" + path)
import app import ST7789 import RPi.GPIO as GPIO app = app.App() BUTTONS = [5, 6, 16, 24] LABELS = ['A', 'B', 'X', 'Y'] GPIO.setmode(GPIO.BCM) GPIO.setup(BUTTONS, GPIO.IN, pull_up_down=GPIO.PUD_UP) def handle_button(pin): label = LABELS[BUTTONS.index(pin)] app.handle_input(label) for pin in BUTTONS: GPIO.add_event_detect(pin, GPIO.FALLING, handle_button, bouncetime=100) disp = ST7789.ST7789( port=0, cs=ST7789.BG_SPI_CS_FRONT, # BG_SPI_CS_BACK or BG_SPI_CS_FRONT dc=9, backlight=13, # 18 for back BG slot, 19 for front BG slot. spi_speed_hz=80 * 1000 * 1000 ) while True: disp.display(app.render()) time.sleep(0.5)
logging.debug("cfg :" + settings.cfg_file) # Main loop dt = 1 / settings.FPS * 1000 # dt is the time since last frame. dirty = True while settings.running: # Event management events = pygame.event.get() for event in events: dirty = True if event.type == pygame.QUIT: settings.running = False if event.type == pygame.KEYUP: if event.key in [keys.RG350_BUTTON_B, keys.RG350_BUTTON_SELECT]: settings.running = False app.handle_events(events) if dirty: app.render() screen.render() realScreen.blit(settings.screen, (0, 0)) pygame.display.flip() dirty = False dt = clock.tick(settings.FPS) pygame.quit() sys.exit() quit()
from app import render import sys render(sys.argv)