def pageHeaderCode(self, page, verbose): """ Generate page header code. """ if verbose: inform('generate page [ %s ] headers code' % page['name']) return NCodeGen.pagesHeader(page)
def _convertBitmap(self, path, objects, compress, backcolor, verbose): """ Convert parsed bitmap to NGL_Bitmap object path - path for input bitmap compress - type of compressing - 'None', 'RLE', 'JPG', 'Auto' backcolor - background color for transparent input bitmap verbose - increase output verbosity flag """ if os.path.exists(path): image = QImage(path) name = os.path.basename(path).split('.')[0] ngl_bitmap = NBitmapsConverter.convertQImage(image, name, 'format16', compress, backcolor) ngl_bitmap.objects = objects if verbose: inform(('converting bitmap {name}, size {width}x{height}, ' 'compress {compress}, data len {size} bytes' ).format(name = name, width = image.size().width(), height = image.size().height(), compress = ngl_bitmap.compressed, size = ngl_bitmap.data_len_in_bytes)) return ngl_bitmap else: error(('File "{0}" not found! Expected path - "{1}" not exist' ' :( :( :( ').format(bitmap['name'], bitmap['path']))
def _convertBitmap(self, path, objects, compress, backcolor, verbose): """ Convert parsed bitmap to NGL_Bitmap object path - path for input bitmap compress - type of compressing - 'None', 'RLE', 'JPG', 'Auto' backcolor - background color for transparent input bitmap verbose - increase output verbosity flag """ if os.path.exists(path): image = QImage(path) name = os.path.basename(path).split(".")[0] ngl_bitmap = NBitmapsConverter.convertQImage(image, name, "format16", compress, backcolor) ngl_bitmap.objects = objects if verbose: inform( ( "converting bitmap {name}, size {width}x{height}, " "compress {compress}, data len {size} bytes" ).format( name=name, width=image.size().width(), height=image.size().height(), compress=ngl_bitmap.compressed, size=ngl_bitmap.data_len_in_bytes, ) ) return ngl_bitmap else: error( ('File "{0}" not found! Expected path - "{1}" not exist' " :( :( :( ").format( bitmap["name"], bitmap["path"] ) )
def pageHeaderCode(self, page, verbose): """ Generate page header code. """ if verbose: inform("generate page [ %s ] headers code" % page["name"]) return NCodeGen.pagesHeader(page)
def main(): parser = createArgParser() args = parser.parse_args() # if no args print help and exit if not len(sys.argv[1:]): parser.print_help() error('No arguments found :( exit...') if not os.path.exists( args.qt_uifile ): error( 'Qt ui file path not correct :( exit... ' ) app = QApplication(sys.argv) uifile = args.qt_uifile outdir = args.ngl_out_dir verbose = args.verbose bitmap_compress = ( args.bitmap_compress, args.bitmap_jpeg_quality ) # create nuic object and parse Qt ui file nuic = NUIC( uifile ) ppage = nuic.parser.parse() nuic.informUser( 'parse_end', verbose ) # convert all fonts, generate common fonts header code ngl_fonts = nuic.convertFonts( ppage['fonts'], verbose ) ngl_fonts_header = nuic.fontsHeaderCode( ngl_fonts, verbose ) # convert all bitmaps, generate common bitmaps header code ngl_bitmaps = nuic.convertBitmaps( ppage['bitmaps'], bitmap_compress, ppage['background_color'], verbose ) ngl_bitmaps_header = nuic.bitmapsHeaderCode( ngl_bitmaps, verbose ) # generate page and objects code pagecode = nuic.pageCode( ppage, ngl_bitmaps, ngl_fonts, verbose ) pageheadercode = nuic.pageHeaderCode( ppage, verbose ) headerscode = nuic.objectsHeaderCode(ppage, ngl_bitmaps, ngl_fonts, verbose) # inform by end of conversion and generation code nuic.informUser( 'convert_end', verbose ) # create dirs for save generated code code_dirs = nuic.createDirs( basepath=outdir, pagename=ppage['name'] ) nuic.informUser('create_dirs', verbose) # save all code nuic.save( pagename = ppage['name'], pagecode = pagecode, pageheadercode = pageheadercode, headerscode = headerscode, bitmaps = ngl_bitmaps, bitmapsheader = ngl_bitmaps_header, fonts = ngl_fonts, fontsheader = ngl_fonts_header, verbose = verbose ) # final app.exit() inform( '-*-*- All works finish! :) --- out code locate in %s' % os.path.abspath(code_dirs['base']) )
def pageCode(self, page, bitmaps, fonts, verbose): """ Generate code (page struct, events functions, page draw func, etc.) for gived page. """ if verbose: inform('generate page code for [ %s ] ' % page['name']) return NCodeGen.generetePageCode(page, bitmaps, fonts)
def objectsHeaderCode(self, page, bitmaps, fonts, verbose): """ Generate objects(Labels, Bitmaps, Buttons, etc.) header code for gived page. """ if verbose: inform("generate object headers code for page [ %s ]" % page["name"]) return NCodeGen.generateObjectsHeader(page, bitmaps, fonts)
def objectsHeaderCode(self, page, bitmaps, fonts, verbose): """ Generate objects(Labels, Bitmaps, Buttons, etc.) header code for gived page. """ if verbose: inform('generate object headers code for page [ %s ]' % page['name']) return NCodeGen.generateObjectsHeader(page, bitmaps, fonts)
def pageCode(self, page, bitmaps, fonts, verbose): """ Generate code (page struct, events functions, page draw func, etc.) for gived page. """ if verbose: inform("generate page code for [ %s ] " % page["name"]) return NCodeGen.generetePageCode(page, bitmaps, fonts)
def saveCode(self, **kwargs): # page = self.parser.parsedPage() _dir = self.dirs[kwargs["dircode"]] _basename = (kwargs["name"]).lower() _code = kwargs["code"] _file = os.path.abspath(os.path.join(_dir, _basename)) self._write(_file, "w", _code) if kwargs["verbose"]: inform("saved [ %s ], path -- %s" % (_basename, _file))
def saveCode(self, **kwargs): # page = self.parser.parsedPage() _dir = self.dirs[ kwargs['dircode'] ] _basename = ( kwargs['name'] ).lower() _code = kwargs['code'] _file = os.path.abspath( os.path.join( _dir , _basename ) ) self._write( _file, 'w', _code ) if kwargs['verbose']: inform( 'saved [ %s ], path -- %s' % ( _basename, _file ) )
def _convertFont(self, font, verbose): """ Convert parsed QFont to NGL_Font object """ # charters set to converting char_range = range(ord(" "), ord("~")) chars_sets = "".join([chr(x) for x in char_range]) if verbose: inform("converting font %s, %spt, bold %s" % (font.family(), font.pointSize(), font.bold())) name = NGL_Font.formatName(font.family(), font.pointSize(), font.bold()) # convert and return return NFontConverter.convertQFont(chars_sets, name, font)
def _convertFont(self, font, verbose): """ Convert parsed QFont to NGL_Font object """ # charters set to converting char_range = range(ord(' '), ord('~')) chars_sets = ''.join([chr(x) for x in char_range]) if verbose: inform( 'converting font %s, %spt, bold %s' % (font.family(), font.pointSize(), font.bold())) name = NGL_Font.formatName(font.family(), font.pointSize(), font.bold()) # convert and return return NFontConverter.convertQFont(chars_sets, name, font)
def qtDesignerStart(): """ Set widgets/plugins paths and start QtDesigner """ # Get base path and QProcess system environment base = os.path.dirname(__file__) env = QProcessEnvironment.systemEnvironment() # Path for tell python where it can find the widgets directory pybase = os.path.join(base, 'python') # Path for tell QtDesigner where it can find the plugins directory wbase = os.path.join(base, 'widgets') # Insert paths to QProcess system environment env.insert('PYQTDESIGNERPATH', pybase) env.insert('PYTHONPATH', wbase) # inform user inform('env add "PYQTDESIGNERPATH" plugins path - ' + pybase) inform('env add "PYTHONPATH" widgets path - ' + wbase) # Create QProcess and set environment designer = QProcess() designer.setProcessEnvironment(env) # Get QtDesigner binaries path designer_bin = QLibraryInfo.location(QLibraryInfo.BinariesPath) # Platform specefic if sys.platform == 'darwin': designer_bin += '/Designer.app/Contents/MacOS/Designer' else: designer_bin += '/designer' # inform user inform('designer bin - ' + designer_bin) inform('start QtDesigner...') # Start QtDesigner designer.start(designer_bin) designer.waitForFinished(-1) sys.exit(designer.exitCode())
def saveResources(self, objects, dir_name, verbose): for obj in objects: _file = os.path.abspath(os.path.join(self.dirs[dir_name], obj.name + ".c")) self._write(_file, "w", obj.code) if verbose: inform("saved [ %s ], path -- %s" % (obj.name, _file))
def fontsHeaderCode(self, fonts, verbose): if verbose: inform( 'generate fonts header file...' ) return NFontCodeGen.generateFontsHeader( fonts )
def main(): parser = createArgParser() args = parser.parse_args() # if no args print help and exit if not len(sys.argv[1:]): parser.print_help() error("No arguments found :( exit...") if not os.path.exists(args.qt_uifile): error("Qt ui file path not correct :( exit... ") app = QApplication(sys.argv) uifile = args.qt_uifile outdir = args.ngl_out_dir verbose = args.verbose bitmap_compress = (args.bitmap_compress, args.bitmap_jpeg_quality) # create nuic object and parse Qt ui file nuic = NUIC(uifile) ppage = nuic.parser.parse() nuic.informUser("parse_end", verbose) # convert all fonts, generate common fonts header code ngl_fonts = nuic.convertFonts(ppage["fonts"], verbose) ngl_fonts_header = nuic.fontsHeaderCode(ngl_fonts, verbose) # convert all bitmaps, generate common bitmaps header code ngl_bitmaps = nuic.convertBitmaps(ppage["bitmaps"], bitmap_compress, ppage["background_color"], verbose) ngl_bitmaps_header = nuic.bitmapsHeaderCode(ngl_bitmaps, verbose) # generate page and objects code pagecode = nuic.pageCode(ppage, ngl_bitmaps, ngl_fonts, verbose) pageheadercode = nuic.pageHeaderCode(ppage, verbose) headerscode = nuic.objectsHeaderCode(ppage, ngl_bitmaps, ngl_fonts, verbose) # inform by end of conversion and generation code nuic.informUser("convert_end", verbose) # create dirs for save generated code code_dirs = nuic.createDirs(basepath=outdir, pagename=ppage["name"]) nuic.informUser("create_dirs", verbose) # save all code nuic.save( pagename=ppage["name"], pagecode=pagecode, pageheadercode=pageheadercode, headerscode=headerscode, bitmaps=ngl_bitmaps, bitmapsheader=ngl_bitmaps_header, fonts=ngl_fonts, fontsheader=ngl_fonts_header, verbose=verbose, ) # final app.exit() inform("-*-*- All works finish! :) --- out code locate in %s" % os.path.abspath(code_dirs["base"]))
def fontsHeaderCode(self, fonts, verbose): if verbose: inform("generate fonts header file...") return NFontCodeGen.generateFontsHeader(fonts)
def informUser(self, state, verbose): if state == "parse_end": if verbose: inform("ui file version - %s" % self.parser.uiVersion()) inform('page - "%s"' % self.parser.parsedPage()["name"]) objects_classes = self.parser.getParsedObjects() objects = [] for class_key in objects_classes.keys(): # iterate objects in this objects class for obj_key in objects_classes[class_key]: objects.append(obj_key) inform("objects - %s" % ", ".join(objects)) bitmaps, fonts = self.parser.getParsedResourses() bitmaps_paths = [os.path.basename(bmp) for bmp in bitmaps] fonts_familys = [font.family() for font in fonts] inform("bitmaps files - %s" % bitmaps_paths) inform("fonts - %s" % fonts_familys) inform("--- Qt UI file parsed successful, start convert and generate code...") elif state == "convert_end": if verbose: pass inform("--- Converting and generate successful, create dirs...") elif state == "create_dirs": if verbose: for _dir in self.dirs.keys(): path = os.path.abspath(self.dirs[_dir]) inform("created [ %s ] dir - %s" % (_dir, path)) inform("--- Creating dirs done, save...") if verbose: newline()
def informUser(self, state, verbose): if state == 'parse_end': if verbose: inform('ui file version - %s' % self.parser.uiVersion()) inform('page - "%s"' % self.parser.parsedPage()['name']) objects_classes = self.parser.getParsedObjects() objects = [] for class_key in objects_classes.keys(): # iterate objects in this objects class for obj_key in objects_classes[class_key]: objects.append(obj_key) inform( 'objects - %s' % ', '.join(objects) ) bitmaps, fonts = self.parser.getParsedResourses() bitmaps_paths = [os.path.basename(bmp) for bmp in bitmaps] fonts_familys = [font.family() for font in fonts] inform( 'bitmaps files - %s' % bitmaps_paths ) inform( 'fonts - %s' % fonts_familys ) inform( '--- Qt UI file parsed successful, start convert and generate code...' ) elif state == 'convert_end': if verbose: pass inform('--- Converting and generate successful, create dirs...') elif state == 'create_dirs': if verbose: for _dir in self.dirs.keys(): path = os.path.abspath( self.dirs[ _dir ] ) inform( 'created [ %s ] dir - %s' % (_dir, path) ) inform('--- Creating dirs done, save...') if verbose: newline()
def saveResources(self, objects, dir_name, verbose): for obj in objects: _file = os.path.abspath( os.path.join( self.dirs[dir_name], obj.name + '.c' ) ) self._write( _file, 'w', obj.code ) if verbose: inform( 'saved [ %s ], path -- %s' % (obj.name, _file) )
def bitmapsHeaderCode(self, bitmaps, verbose ): if verbose: inform('generate bitmaps header file...') return NBitmapCodeGen.generateBitmapsHeader(bitmaps)
def bitmapsHeaderCode(self, bitmaps, verbose): if verbose: inform("generate bitmaps header file...") return NBitmapCodeGen.generateBitmapsHeader(bitmaps)