MCPcopy Create free account
hub / github.com/antirez/freakwan / NodesListView

Class NodesListView

views.py:14–64  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12import time
13
14class NodesListView:
15 def __init__(self,fw,display):
16 self.fw = fw # Reference to the application object.
17 self.display = display
18 self.page = 0 # At each refresh, a different page is shown.
19 self.page_change_time = None # Set at first refresh & page change.
20 self.items_per_page = None # Will be set after the first refresh.
21
22 def refresh(self):
23 if not self.display: return
24 if self.page_change_time == None:
25 self.page_change_time = time.ticks_ms()
26
27 self.display.fill(0)
28 self.display.text("Nodes seen",0,0,1)
29 self.display.line(0,10,self.display.width-1,10,1)
30 neigh = self.fw.neighbors
31
32 # Select next page at each refresh. Wrap around when
33 # we already displayed them all.
34 if self.items_per_page != None and \
35 time.ticks_diff(time.ticks_ms(),self.page_change_time) > 8000:
36 self.page += 1
37 if self.page * self.items_per_page >= len(neigh):
38 self.page = 0
39 self.page_change_time = time.ticks_ms()
40 print("page",self.page)
41
42 # Render the list of nodes for this page.
43 y = 12
44 item_id = 0
45 for node_id, m in neigh.items():
46 # Only show items belonging to this page.
47 if self.items_per_page == None or \
48 item_id >= self.page*self.items_per_page:
49 self.display.text(f"{item_id+1} {m.nick}({m.seen})",0,y,1)
50 y += 8
51 if y+7 >= self.display.height: break
52 item_id += 1
53 self.display.contrast(255)
54 self.display.show()
55
56 # Set the items_per_page if this is the first refresh.
57 if self.items_per_page == None:
58 while y+7 < self.display.height: # Virtually reach end of screen.
59 y += 8
60 item_id += 1
61 self.items_per_page = item_id + 1
62
63 def min_refresh_time(self):
64 return 5

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected