예제 #1
0
    def pageHeaderCode(self, page, verbose):
        """ Generate page header code.
        """
        if verbose:
            inform('generate page [ %s ] headers code' % page['name'])

        return NCodeGen.pagesHeader(page)
예제 #2
0
    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']))
예제 #3
0
    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"]
                )
            )
예제 #4
0
    def pageHeaderCode(self, page, verbose):
        """ Generate page header code.
        """
        if verbose:
            inform("generate page [ %s ] headers code" % page["name"])

        return NCodeGen.pagesHeader(page)
예제 #5
0
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']) )
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
0
    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)
예제 #9
0
    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)
예제 #10
0
    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))
예제 #11
0
    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 ) )
예제 #12
0
    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)
예제 #13
0
    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)
예제 #14
0
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())
예제 #15
0
 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))
예제 #16
0
    def fontsHeaderCode(self, fonts, verbose):
        if verbose:
            inform( 'generate fonts header file...' )

        return NFontCodeGen.generateFontsHeader( fonts )
예제 #17
0
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"]))
예제 #18
0
    def fontsHeaderCode(self, fonts, verbose):
        if verbose:
            inform("generate fonts header file...")

        return NFontCodeGen.generateFontsHeader(fonts)
예제 #19
0
    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()
예제 #20
0
    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()
예제 #21
0
 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) )
예제 #22
0
    def bitmapsHeaderCode(self, bitmaps, verbose ):
        if verbose:
            inform('generate bitmaps header file...')

        return NBitmapCodeGen.generateBitmapsHeader(bitmaps)
예제 #23
0
    def bitmapsHeaderCode(self, bitmaps, verbose):
        if verbose:
            inform("generate bitmaps header file...")

        return NBitmapCodeGen.generateBitmapsHeader(bitmaps)