runtime/NevowServer.py
changeset 2267 e83aa36b6627
parent 2262 4195545e2d17
parent 2266 ed415982a9aa
child 2311 bef2b4b87370
equal deleted inserted replaced
2265:2de61e2fbf14 2267:e83aa36b6627
    28 import os
    28 import os
    29 import platform as platform_module
    29 import platform as platform_module
    30 from zope.interface import implements
    30 from zope.interface import implements
    31 from nevow import appserver, inevow, tags, loaders, athena, url, rend
    31 from nevow import appserver, inevow, tags, loaders, athena, url, rend
    32 from nevow.page import renderer
    32 from nevow.page import renderer
       
    33 from nevow.static import File
    33 from formless import annotate
    34 from formless import annotate
    34 from formless import webform
    35 from formless import webform
    35 from formless import configurable
    36 from formless import configurable
    36 from twisted.internet import reactor
    37 from twisted.internet import reactor
    37 
    38 
    75 
    76 
    76 
    77 
    77 class MainPage(athena.LiveElement):
    78 class MainPage(athena.LiveElement):
    78     jsClass = u"WebInterface.PLC"
    79     jsClass = u"WebInterface.PLC"
    79     docFactory = loaders.stan(
    80     docFactory = loaders.stan(
    80         tags.div(render=tags.directive('liveElement'))[
    81         tags.invisible[
    81             tags.div(id='content')[
    82             tags.div(render=tags.directive('liveElement'))[
    82                 tags.div(render=tags.directive('PLCElement'))]
    83                 tags.div(id='content')[
    83         ])
    84                     tags.div(render=tags.directive('PLCElement'))]
       
    85             ],
       
    86             tags.a(href='settings')['Settings']])
    84 
    87 
    85     def __init__(self, *a, **kw):
    88     def __init__(self, *a, **kw):
    86         athena.LiveElement.__init__(self, *a, **kw)
    89         athena.LiveElement.__init__(self, *a, **kw)
    87         self.pcl_state = False
    90         self.pcl_state = False
    88         self.HMI = None
    91         self.HMI = None
   139 
   142 
   140     def getBindingNames(self, ctx):
   143     def getBindingNames(self, ctx):
   141         return self.bindingsNames
   144         return self.bindingsNames
   142 
   145 
   143     def addInfoString(self, label, value, name=None):
   146     def addInfoString(self, label, value, name=None):
   144         if type(value) is str:
   147         if isinstance(value, str):
   145             def default(*k):
   148             def default(*k):
   146                 return value
   149                 return value
   147         else:
   150         else:
   148             def default(*k):
   151             def default(*k):
   149                 return value()
   152                 return value()
   213     # We deserve a slash
   216     # We deserve a slash
   214     addSlash = True
   217     addSlash = True
   215 
   218 
   216     # This makes webform_css url answer some default CSS
   219     # This makes webform_css url answer some default CSS
   217     child_webform_css = webform.defaultCSS
   220     child_webform_css = webform.defaultCSS
       
   221     child_webinterface_css = File(paths.AbsNeighbourFile(__file__, 'webinterface.css'), 'text/css')
   218 
   222 
   219     implements(ISettings)
   223     implements(ISettings)
   220 
   224 
   221     docFactory = loaders.stan([
   225     docFactory = loaders.stan([tags.html[
   222         tags.html[
   226         tags.head[
   223             tags.head[
   227             tags.title[_("Beremiz Runtime Settings")],
   224                 tags.title[_("Beremiz Runtime Settings")],
   228             tags.link(rel='stylesheet',
   225                 tags.link(rel='stylesheet',
   229                       type='text/css',
   226                           type='text/css',
   230                       href=url.here.child("webform_css")),
   227                           href=url.here.child("webform_css"))
   231             tags.link(rel='stylesheet',
   228             ],
   232                       type='text/css',
   229             tags.body[
   233                       href=url.here.child("webinterface_css"))
   230                 tags.h1["Runtime settings:"],
   234         ],
   231                 webform.renderForms('staticSettings'),
   235         tags.body[
   232                 tags.h2["Extensions settings:"],
   236             tags.a(href='/')['Back'],
   233                 webform.renderForms('dynamicSettings'),
   237             tags.h1["Runtime settings:"],
   234             ]
   238             webform.renderForms('staticSettings'),
   235         ]
   239             tags.h1["Extensions settings:"],
   236     ])
   240             webform.renderForms('dynamicSettings'),
       
   241         ]]])
   237 
   242 
   238     def configurable_staticSettings(self, ctx):
   243     def configurable_staticSettings(self, ctx):
   239         return configurable.TypedInterfaceConfigurable(self)
   244         return configurable.TypedInterfaceConfigurable(self)
   240 
   245 
   241     def configurable_dynamicSettings(self, ctx):
   246     def configurable_dynamicSettings(self, ctx):