28 import os |
28 import os |
29 import platform |
29 import platform |
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 |
74 |
75 |
75 |
76 |
76 class MainPage(athena.LiveElement): |
77 class MainPage(athena.LiveElement): |
77 jsClass = u"WebInterface.PLC" |
78 jsClass = u"WebInterface.PLC" |
78 docFactory = loaders.stan( |
79 docFactory = loaders.stan( |
79 tags.div(render=tags.directive('liveElement'))[ |
80 tags.invisible[ |
80 tags.div(id='content')[ |
81 tags.div(render=tags.directive('liveElement'))[ |
81 tags.div(render=tags.directive('PLCElement'))] |
82 tags.div(id='content')[ |
82 ]) |
83 tags.div(render=tags.directive('PLCElement'))] |
|
84 ], |
|
85 tags.a(href='settings')['Settings']]) |
83 |
86 |
84 def __init__(self, *a, **kw): |
87 def __init__(self, *a, **kw): |
85 athena.LiveElement.__init__(self, *a, **kw) |
88 athena.LiveElement.__init__(self, *a, **kw) |
86 self.pcl_state = False |
89 self.pcl_state = False |
87 self.HMI = None |
90 self.HMI = None |
178 # We deserve a slash |
181 # We deserve a slash |
179 addSlash = True |
182 addSlash = True |
180 |
183 |
181 # This makes webform_css url answer some default CSS |
184 # This makes webform_css url answer some default CSS |
182 child_webform_css = webform.defaultCSS |
185 child_webform_css = webform.defaultCSS |
|
186 child_webinterface_css = File(paths.AbsNeighbourFile(__file__, 'webinterface.css'), 'text/css') |
183 |
187 |
184 implements(ISettings) |
188 implements(ISettings) |
185 |
189 |
186 |
190 |
187 docFactory = loaders.stan([tags.html[ |
191 docFactory = loaders.stan([tags.html[ |
188 tags.head[ |
192 tags.head[ |
189 tags.title[_("Beremiz Runtime Settings")], |
193 tags.title[_("Beremiz Runtime Settings")], |
190 tags.link(rel='stylesheet', |
194 tags.link(rel='stylesheet', |
191 type='text/css', |
195 type='text/css', |
192 href=url.here.child("webform_css")) |
196 href=url.here.child("webform_css")), |
|
197 tags.link(rel='stylesheet', |
|
198 type='text/css', |
|
199 href=url.here.child("webinterface_css")) |
193 ], |
200 ], |
194 tags.body[ |
201 tags.body[ |
|
202 tags.a(href='/')['back'], |
195 tags.h1["Runtime settings:"], |
203 tags.h1["Runtime settings:"], |
196 webform.renderForms('staticSettings'), |
204 webform.renderForms('staticSettings'), |
197 tags.h2["Extensions settings:"], |
205 tags.h1["Extensions settings:"], |
198 webform.renderForms('dynamicSettings'), |
206 webform.renderForms('dynamicSettings'), |
199 ]]]) |
207 ]]]) |
200 |
208 |
201 def configurable_staticSettings(self, ctx): |
209 def configurable_staticSettings(self, ctx): |
202 return configurable.TypedInterfaceConfigurable(self) |
210 return configurable.TypedInterfaceConfigurable(self) |