[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.
|