File: progress.py

package info (click to toggle)
nevow 0.10.0-4
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 3,280 kB
  • sloc: python: 21,511; ansic: 136; sh: 65; xml: 42; makefile: 31; sql: 5
file content (61 lines) | stat: -rw-r--r-- 2,320 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from twisted.internet import task
from nevow import loaders, livepage, tags as t
from nevow.taglibrary.livetags import component, componentGlue
from nevow.taglibrary.progressbar import progressBar, progressBarGlue


class Progressbar(livepage.LivePage):
    addSlash = True

    progress = {
        'bar1': 0,
        'bar2': 20,
        'bar3': 30,
        'bar4': 50,
        }
    
    def data_bar1(self, ctx, data):
        return { 'name': 'bar1' }
    def data_bar2(self, ctx, data):
        return { 'name': 'bar2', 'percent': self.progress['bar2'] }
    def data_bar3(self, ctx, data):
        return { 'name': 'bar3', 'percent': self.progress['bar3'] }
    def data_bar4(self, ctx, data):
        return { 'name': 'bar4', 'percent': self.progress['bar4'] }

    def goingLive(self, ctx, client):
        self.progress = self.progress.copy()

    def handle_click(self, ctx, value):
        def send():
            if self.progress[value] >= 100:
                t.stop()
            else:
                self.progress[value] += 1
                livepage.IClientHandle(ctx).send(component[value].setPercent(str(self.progress[value])))
        t = task.LoopingCall(send)
        t.start(1)

    docFactory = loaders.stan(
        t.html[
            t.head[
                t.title["ProgressBar Example"],
                livepage.glue,
                componentGlue.inlineGlue,
                progressBarGlue.inlineGlue,
            ],
            t.body[
                t.invisible(data=t.directive('bar1'), render=progressBar),
                t.p[ t.a(href="", onclick=[livepage.server.handle('click', 'bar1'), livepage.stop])['Start meter'] ],
                t.invisible(data=t.directive('bar2'), render=progressBar),
                t.p[ t.a(href="", onclick=[livepage.server.handle('click', 'bar2'), livepage.stop])['Start meter'] ],
                t.invisible(data=t.directive('bar3'), render=progressBar),
                t.p[ t.a(href="", onclick=[livepage.server.handle('click', 'bar3'), livepage.stop])['Start meter'] ],
                t.invisible(data=t.directive('bar4'), render=progressBar),
                t.p[ t.a(href="", onclick=[livepage.server.handle('click', 'bar4'), livepage.stop])['Start meter'] ],
            ]
        ]
    )
 
def createResource():
    return Progressbar()