1
from twisted.internet import task
2
from nevow import loaders, livepage, tags as t
3
from nevow.taglibrary.livetags import component, componentGlue
4
from nevow.taglibrary.progressbar import progressBar, progressBarGlue
7
class Progressbar(livepage.LivePage):
17
def data_bar1(self, ctx, data):
18
return { 'name': 'bar1' }
19
def data_bar2(self, ctx, data):
20
return { 'name': 'bar2', 'percent': self.progress['bar2'] }
21
def data_bar3(self, ctx, data):
22
return { 'name': 'bar3', 'percent': self.progress['bar3'] }
23
def data_bar4(self, ctx, data):
24
return { 'name': 'bar4', 'percent': self.progress['bar4'] }
26
def goingLive(self, ctx, client):
27
self.progress = self.progress.copy()
29
def handle_click(self, ctx, value):
31
if self.progress[value] >= 100:
34
self.progress[value] += 1
35
livepage.IClientHandle(ctx).send(component[value].setPercent(str(self.progress[value])))
36
t = task.LoopingCall(send)
39
docFactory = loaders.stan(
42
t.title["ProgressBar Example"],
44
componentGlue.inlineGlue,
45
progressBarGlue.inlineGlue,
48
t.invisible(data=t.directive('bar1'), render=progressBar),
49
t.p[ t.a(href="", onclick=[livepage.server.handle('click', 'bar1'), livepage.stop])['Start meter'] ],
50
t.invisible(data=t.directive('bar2'), render=progressBar),
51
t.p[ t.a(href="", onclick=[livepage.server.handle('click', 'bar2'), livepage.stop])['Start meter'] ],
52
t.invisible(data=t.directive('bar3'), render=progressBar),
53
t.p[ t.a(href="", onclick=[livepage.server.handle('click', 'bar3'), livepage.stop])['Start meter'] ],
54
t.invisible(data=t.directive('bar4'), render=progressBar),
55
t.p[ t.a(href="", onclick=[livepage.server.handle('click', 'bar4'), livepage.stop])['Start meter'] ],