#
# This file is part of GNU Enterprise.
#
# GNU Enterprise is free software; you can redistribute it
# and/or modify it under the terms of the GNU General Public
# License as published by the Free Software Foundation; either
# version 3, or (at your option) any later version.
#
# GNU Enterprise is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with program; see the file COPYING. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
# Copyright 2000-2009 Free Software Foundation
#
# FILE:
# uidrivers/html/GFhtmlApp.py
#
# DESCRIPTION:
#
# NOTES:
#

import sys, cgi, webbrowser
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
from GFServer import GFRequestHandler

from gnue.common import events

_htmlApp = None
_dhtml = {}


def gethtmlApp(uidriver):
    global _htmlApp
    if not _htmlApp:
        _htmlApp = GFhtmlApp(uidriver)
    return _htmlApp


class GFhtmlApp:

    _mainLoop= None
    _MainWindowList = []
    running = True

    def __init__(self, uidriver):
        self.uidriver = uidriver
        global _dhtml
        global _htmlApp
        self._dhtml = _dhtml
        self._htmlApp = _htmlApp
        self._form = None

    def setForm(self,form):
        self._form = form

    def MainLoop (self):

        if self._mainLoop==None:
            self._mainLoop=1
            print 'BaseHTTPServer started at http://127.0.0.1:8000'
            server = HTTPServer(('',8000), GFRequestHandler)
            server.app = self

            # open browser:
            webbrowser.open("http://localhost:8000/")
            while self.running:
                server.handle_request()

    def quit(self):
        self.running=False
        # sys.exit()

def textEncode(a):
    return a