[pygccxml-commit] SF.net SVN: pygccxml:[1570] ui/web
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2009-01-14 09:53:49
|
Revision: 1570 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1570&view=rev Author: roman_yakovenko Date: 2009-01-14 09:53:39 +0000 (Wed, 14 Jan 2009) Log Message: ----------- adding ability to display generated XML Modified Paths: -------------- ui/web/code_generator.py ui/web/main.py ui/web/templates/generator_tmpl.html Added Paths: ----------- ui/web/form_processor.py Removed Paths: ------------- ui/web/forms.py Modified: ui/web/code_generator.py =================================================================== --- ui/web/code_generator.py 2009-01-14 09:50:52 UTC (rev 1569) +++ ui/web/code_generator.py 2009-01-14 09:53:39 UTC (rev 1570) @@ -4,9 +4,24 @@ from pyplusplus import _logging_ from pygccxml import declarations from pyplusplus import module_builder +import xml.sax.saxutils class manager_t: + def __init__( self ): + pass + def show_xml( self, file_configuration ): + try: + reader = parser.project_reader_t( config=config.gccxml ) + content = reader.read_xml( file_configuration ) + return content, '' + #return xml.sax.saxutils.escape( content ), '' + except Exception, error: + user_msg = [ 'Error occured during code generation process!' ] + user_msg.append( 'Error:' ) + user_msg.append( str( error ) ) + return '', '\n'.join( user_msg ) + def show_declarations( self, file_configuration ): try: reader = parser.project_reader_t( config=config.gccxml ) @@ -14,7 +29,6 @@ global_ns = declarations.get_global_namespace( decls ) tmp = [] declarations.print_declarations( decls, verbose=False, writer=lambda x: tmp.append( x.rstrip() ) ) - print os.linesep.join( tmp ) return os.linesep.join( tmp ), '' except Exception, error: user_msg = [ 'Error occured during code generation process!' ] Copied: ui/web/form_processor.py (from rev 1567, ui/web/forms.py) =================================================================== --- ui/web/form_processor.py (rev 0) +++ ui/web/form_processor.py 2009-01-14 09:53:39 UTC (rev 1570) @@ -0,0 +1,79 @@ +import config +import web +from pygccxml import parser +import wizard + +class generator_t: + def __init__( self, code_generator, input ): + self.__input = input + self.__code_generator = code_generator + self.__handlers = { + "VIEW_XML" : self.on_view_xml + , "VIEW_DECLS" : self.on_view_decls + , "GENERATE_BP_CODE" : self.on_generate_bp_code + , "GENERATE_BP_PYPP_CODE" : self.on_generate_bp_pypp_code + , "GENERATE_CTYPES_CODE" : self.on_generate_ctypes_code + , "GENERATE_CTYPES_PYPP_CODE" : self.on_generate_ctypes_pypp_code + } + + def __create_fc( self, prefix ): + fto_key = prefix + '_TAKE_CODE_FROM' + code_key = prefix + '_SOURCE_CODE' + file_key = prefix + '_FILE_NAME' + if self.__input[fto_key] == 'text': + return parser.create_text_fc( self.__input[ code_key ] ) + else: + return parser.create_source_fc( self.__input[ file_key ] ) + + def on_view_xml( self ): + fc = self.__create_fc( 'GCCXML' ) + decls_tree, warnings = self.__code_generator.show_xml( fc ) + return decls_tree, warnings + + def on_view_decls( self ): + fc = self.__create_fc( 'GCCXML' ) + decls_tree, warnings = self.__code_generator.show_declarations( fc ) + return decls_tree, warnings + + def on_generate_bp_code( self ): + fc = self.__create_fc( 'BP' ) + code, warnings = self.__code_generator.generate_bpl_code( fc ) + return code, warnings + + def on_generate_bp_pypp_code( self ): + w = wizard.wizard_t() + code = w.create_bpl_code( config.gccxml, self.__create_fc( 'BP' ) ) + return code, '' + + def on_generate_ctypes_code( self ): + pass + + def on_generate_ctypes_pypp_code( self ): + pass + + def not_found_handler( self ): + raise RuntimeError( 'Error - unknown submit action' ) + + def __select_handler( self ): + for key, handler in self.__handlers.iteritems(): + if key in self.__input: + return handler + else: + return self.not_found_handler + + def process( self ): + handler = self.__select_handler() + return handler() + + + #~ source_code = request_data[ self.__source_code.name] + #~ if self.__show_decls.name in request_data: + #~ generated = self.__code_generator.show_declarations( source_code ) + #~ elif self.__generate_pypp_code.name in request_data: + #~ generated = self.__code_generator.generate_pypp_code( source_code ) + #~ elif self.__generate_bpl_code.name in request_data: + #~ generated, warnings = self.__code_generator.generate_bpl_code( source_code ) + #~ else: + #~ generated = 'error - unknown submit action' + #~ return generated, warnings + Deleted: ui/web/forms.py =================================================================== --- ui/web/forms.py 2009-01-14 09:50:52 UTC (rev 1569) +++ ui/web/forms.py 2009-01-14 09:53:39 UTC (rev 1570) @@ -1,122 +0,0 @@ -import config -import web -from pygccxml import parser -import wizard - -class Label(web.form.Input): - tmpl = """<label name="%(name)s" %(atts)s>%(value)s</label>%(note)s""" - def render(self): - value = '' - if self.value is not None: - value = web.net.websafe(self.value) - return self.tmpl % dict( name=web.net.websafe(self.name) - , value=value - , atts=self.addatts() - , note=self.rendernote(self.note) ) - -class RawHTML(web.form.Input): - def __init__(self, html, *validators, **attrs): - web.form.Input.__init__( self, '', *validators, **attrs ) - self.__html = html - def render(self): - return self.__html - -class SimpleForm( web.form.Form ): - tmpl = """<form %(attrs)s>\n%(inputs)s\n</form>\n""" - def __init__(self, *inputs, **kw): - web.form.Form.__init__( self, *inputs, **kw ) - self.__kw = kw - self.__kw.pop( 'validators', None ) - - def render_addattrs( self ): - attrs = [] - for (n, v) in self.__kw.iteritems(): - attrs.append( ' %s="%s"' % (n, web.net.websafe(v)) ) - return ''.join( attrs ) - - def render( self ): - controls = [] - controls.append( self.rendernote(self.note) ) - for i in self.inputs: - if i.pre: - controls.append( i.pre ) - controls.append( i.render() ) - if i.post: - controls.append( i.post ) - return self.tmpl % dict( attrs=self.render_addattrs(), inputs='\n'.join( controls ) ) - - -class generator_t: - def __init__( self, code_generator, input ): - self.__input = input - self.__code_generator = code_generator - self.__handlers = { - "VIEW_XML" : self.on_view_xml - , "VIEW_DECLS" : self.on_view_decls - , "GENERATE_BP_CODE" : self.on_generate_bp_code - , "GENERATE_BP_PYPP_CODE" : self.on_generate_bp_pypp_code - , "GENERATE_CTYPES_CODE" : self.on_generate_ctypes_code - , "GENERATE_CTYPES_PYPP_CODE" : self.on_generate_ctypes_pypp_code - } - - def __create_fc( self, prefix ): - fto_key = prefix + '_TAKE_CODE_FROM' - code_key = prefix + '_SOURCE_CODE' - file_key = prefix + '_FILE_NAME' - if self.__input[fto_key] == 'text': - return parser.create_text_fc( self.__input[ code_key ] ) - else: - return parser.create_source_fc( self.__input[ file_key ] ) - - def on_view_xml( self ): - fc = self.__create_fc( 'GCCXML' ) - decls_tree, warnings = self.__code_generator.show_declarations( fc ) - return decls_tree, warnings - - def on_view_decls( self ): - fc = self.__create_fc( 'GCCXML' ) - decls_tree, warnings = self.__code_generator.show_declarations( fc ) - return decls_tree, warnings - - def on_generate_bp_code( self ): - fc = self.__create_fc( 'BP' ) - code, warnings = self.__code_generator.generate_bpl_code( fc ) - return code, warnings - - def on_generate_bp_pypp_code( self ): - w = wizard.wizard_t() - code = w.create_bpl_code( config.gccxml, self.__create_fc( 'BP' ) ) - return code, '' - - def on_generate_ctypes_code( self ): - pass - - def on_generate_ctypes_pypp_code( self ): - pass - - def not_found_handler( self ): - raise RuntimeError( 'Error - unknown submit action' ) - - def __select_handler( self ): - for key, handler in self.__handlers.iteritems(): - if key in self.__input: - return handler - else: - return self.not_found_handler - - def process( self ): - handler = self.__select_handler() - return handler() - - - #~ source_code = request_data[ self.__source_code.name] - #~ if self.__show_decls.name in request_data: - #~ generated = self.__code_generator.show_declarations( source_code ) - #~ elif self.__generate_pypp_code.name in request_data: - #~ generated = self.__code_generator.generate_pypp_code( source_code ) - #~ elif self.__generate_bpl_code.name in request_data: - #~ generated, warnings = self.__code_generator.generate_bpl_code( source_code ) - #~ else: - #~ generated = 'error - unknown submit action' - #~ return generated, warnings - Modified: ui/web/main.py =================================================================== --- ui/web/main.py 2009-01-14 09:50:52 UTC (rev 1569) +++ ui/web/main.py 2009-01-14 09:53:39 UTC (rev 1570) @@ -2,7 +2,7 @@ import sys import web -import forms +import form_processor import code_generator urls = ( "/", "generator" @@ -21,7 +21,7 @@ class generated: def POST(self, r_url=None ): - form = forms.generator_t( code_generator.manager_t(), web.input() ) + form = form_processor.generator_t( code_generator.manager_t(), web.input() ) generated_frender = web.template.frender('templates/generated_tmpl.html') generated, warnings = form.process() return generated_frender(generated, warnings) Modified: ui/web/templates/generator_tmpl.html =================================================================== --- ui/web/templates/generator_tmpl.html 2009-01-14 09:50:52 UTC (rev 1569) +++ ui/web/templates/generator_tmpl.html 2009-01-14 09:53:39 UTC (rev 1570) @@ -11,7 +11,7 @@ </head> <body> <h2>pygccxml & py++ demo</h2> - <form action="/generated.html" method="post" id="SourceCodeForm"> + <form action="/generated.html" method="post" name="CODE_GENERATOR_FORM"> <p>In the following tabs you can configurate GCC-XML compiler. It is not a must</p> <div class="tabber"> <div class="tabbertab"> @@ -36,7 +36,7 @@ <h2>pygccxml demonstration</h2> <p></p> <input type="radio" name="GCCXML_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> - <input type="file" name="GCCXML_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="text" name="GCCXML_FILE_NAME" size="80" style="margin-left: 5mm" /><br /> <input type="radio" name="GCCXML_TAKE_CODE_FROM" value="text"/>Code:<br/> <textarea name="GCCXML_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> <br/> @@ -49,7 +49,7 @@ <h2>Boost.Python code generator</h2> <p></p> <input type="radio" name="BP_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> - <input type="file" name="BP_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="text" name="BP_FILE_NAME" size="80" style="margin-left: 5mm" <input type="radio" name="BP_TAKE_CODE_FROM" value="text"/>Code:<br/> <textarea name="BP_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> <br/> @@ -62,9 +62,9 @@ <h2>ctypes code generator</h2> <p></p> <a>Dynamic/shared library path:</a> - <input type="file" name="CTYPES_SHLIB_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="text" name="CTYPES_SHLIB_FILE_NAME" size="80" style="margin-left: 5mm" /><br/> <input type="radio" name="CTYPES_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> - <input type="file" name="CTYPES_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="text" name="CTYPES_FILE_NAME" size="80" style="margin-left: 5mm" /><br/> <input type="radio" name="CTYPES_TAKE_CODE_FROM" value="text"/>Code:<br/> <textarea name="CTYPES_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> <br/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |