Browse Source

Working debug/scroll system

Petra Lamborn 4 years ago
parent
commit
1d4eecf350
1 changed files with 44 additions and 19 deletions
  1. 44
    19
      fedicurses.py

+ 44
- 19
fedicurses.py View File

@@ -6,6 +6,27 @@ def newLine(ncwin, lines=1):
6 6
     cy, cx = ncwin.getyx()
7 7
     ncwin.move(cy + lines, 0)
8 8
 
9
+def printPost(win, post, parser):
10
+    win.addstr(post["account"]["acct"], curses.A_BOLD)
11
+    win.addstr(':', curses.A_BOLD)
12
+    newLine(win)
13
+    parser.feed(post["content"])
14
+
15
+def printAtLevel(stdscr, col1, col2, posts, parser, level):
16
+    col1.clear()
17
+    col2.clear()
18
+    col1.move(0, 0)
19
+    col2.move(0, 0)
20
+    printPost(col1, posts[level], parser)
21
+    printPost(col1, posts[(level + 1) % len(posts)], parser)
22
+    try:
23
+        col2.addstr(str(posts[level]))
24
+    except curses.error:
25
+        pass
26
+    stdscr.noutrefresh()
27
+    col1.noutrefresh()
28
+    col2.noutrefresh()
29
+    curses.doupdate()
9 30
 
10 31
 class PostParser(HTMLParser):
11 32
     def __init__(self, ncwin, defncatt):
@@ -29,7 +50,10 @@ class PostParser(HTMLParser):
29 50
             self.curatt = self.curatt ^ curses.A_BOLD
30 51
 
31 52
     def handle_data(self, data):
32
-        self.win.addstr(data, self.curatt)
53
+        try:
54
+            self.win.addstr(data, self.curatt)
55
+        except curses.error:
56
+            pass
33 57
 
34 58
 
35 59
 # print(mastodon.timeline()[0]["content"])
@@ -45,31 +69,32 @@ def main(stdscr):
45 69
     # stdscr.addstr("test")
46 70
     curses.halfdelay(10)
47 71
     my, mx = stdscr.getmaxyx()
48
-    c1w = c2w = (mx - 1) // 2
72
+    c1w = c2w = (mx - 3) // 2
49 73
     if (mx % 2) != 0:
50 74
         c2w = c2w - 1
51
-    colw1 = curses.newwin(1, 1, my - 1, c1w)
52
-    colw2 = curses.newwin(1, 1 + c1w + 1, my - 1, c2w)
53
-    #colw1.border()
54
-    #colw2.border()
75
+    colw1 = curses.newwin(my - 2, c1w, 1, 1)
76
+    colw2 = curses.newwin(my - 2, c2w, 1, 1 + c1w + 2)
77
+    stdscr.border()
78
+    # colw1.border()
79
+    # colw2.border()
55 80
     parser = PostParser(colw1, 0)
56
-    colw1.move(0,0)
57
-    try:
58
-        for post in posts:
59
-            colw1.addstr(post["account"]["acct"], curses.A_BOLD)
60
-            colw1.addstr(':', curses.A_BOLD)
61
-            newLine(colw1)
62
-            parser.feed(post["content"])
63
-    except:
64
-        pass
65
-    colw1.refresh()
66
-    colw2.refresh()
67
-    stdscr.refresh()
81
+    # colw1.move(0,0)
82
+    # stdscr.addstr(0, 0, 'test')
83
+    # colw2.addstr(0, 0, 'test2')
84
+    # colw1.addstr(0, 0, 'test3')
68 85
     i = 'c'
69 86
     q = 0
87
+    printAtLevel(stdscr, colw1, colw2, posts, parser, q)
70 88
     con = True
71 89
     while con:
72 90
         i = stdscr.getch()
73
-        con = (i != ord('q'))
91
+        if (i == ord('q')):
92
+            con = False
93
+        elif (i == ord('j')):
94
+            q = (q + 1) % len(posts)
95
+            printAtLevel(stdscr, colw1, colw2, posts, parser, q)
96
+        elif (i == ord('k')):
97
+            q = (q - 1) % len(posts)
98
+            printAtLevel(stdscr, colw1, colw2, posts, parser, q)
74 99
 
75 100
 curses.wrapper(main)