Easy Web App (for Python)
=========================
Create web applications easily. 

This is a `PyPI package <https://pypi.python.org/pypi/easy-web-app>`_
for the `rest-web-gui <https://github.com/ma-ha/rest-web-ui>`_ framework.

Focus is on *web applications* (not simple web pages). 
A lot of plug-ins are available to get a portal it quickly configured:

- Forms
- Tables / lists
- Content: via MediaWiki API, plain HTML views, or help dialogs
- I/O: control switches/drawer, gauges, graphs, LEDs, displays, ...
- i18n: switch language
- Maps: POIs, routes, traffic, ...
- Page to page navigation with navigation tabs, menus, links and session data
- Source code display
- Security: HTTP Basic authentication or OAuth 
- ...

This is how it may look like:

.. image:: https://raw.githubusercontent.com/ma-ha/easy-web-app/master/examples/demo-screen.png

Check out the `online demos <http://mh-svr.de/pong_dev>`_.

Remark: It is also available as `Node.js API package <https://www.npmjs.com/package/easy-web-app>`_.

Getting started
===============
Prepare:
--------
1. Create a web application project folder, e.g.
   ``mkdir ~/myapp``
2. Create a virtual Python environment for this folder:
   ``virtualenv ~/myapp``
3. Change into the project folder and activate the virtual environment:
   ``cd ~/myapp; source bin\activate``
4. Install this package:
   _TBD_

Create first web app with Python:
---------------------------------
Create a file, e.g. ``firstapp.py``  
  
::

	from easywebapp.webapp import Portal 
	import easywebapp.page_layout as page
	
	mainpage = page.PageLayout( 'First Page' )
	
	# initialize portal
	portal = Portal( 'My Portal', 8000, mainpage )
	
	# define a custom web service 
	portal.addURL( '/myservice', 'myservice' )
	
	class myservice:
	    def GET( self ):
	        return 'Hello World'
	
	# start the web server
	portal.run()

TODOs
-----
- [x] First working *rest-web-ui* integration
- [x] PyPI package
- [ ] configure port from init
- [x] portal.getPage( name )  
- [x] portal.addPage( pageId [, title] [, viewDef] [, viewConfig] ) 
- [ ] Portal pages navigation tabs
- [x] page.addView( def [, config]  )
- [x] page.addColumnsRow( id, width )
- [x] row.addView( def [, config] )
- [x] row.addColumnsRow ( id, height )
- [x] column.addView ( def [, config] )
- [x] column.addRowsColumn ( id, width )  
- [ ] I/O server and API
