| 117 | Inventory().numberOfInventoryLookupsPerformed = 0 |
| 118 | Timer(1, resetlookups, ()).start() |
| 119 | def drawtab(stdscr): |
| 120 | if menutab in range(1, len(menu)+1): |
| 121 | if menutab == 1: # Inbox |
| 122 | stdscr.addstr(3, 5, "To", curses.A_BOLD) |
| 123 | stdscr.addstr(3, 40, "From", curses.A_BOLD) |
| 124 | stdscr.addstr(3, 80, "Subject", curses.A_BOLD) |
| 125 | stdscr.addstr(3, 120, "Time Received", curses.A_BOLD) |
| 126 | stdscr.hline(4, 5, '-', 121) |
| 127 | for i, item in enumerate(inbox[max(min(len(inbox)-curses.LINES+6, inboxcur-5), 0):]): |
| 128 | if 6+i < curses.LINES: |
| 129 | a = 0 |
| 130 | if i == inboxcur - max(min(len(inbox)-curses.LINES+6, inboxcur-5), 0): # Highlight current address |
| 131 | a = a | curses.A_REVERSE |
| 132 | if item[7] == False: # If not read, highlight |
| 133 | a = a | curses.A_BOLD |
| 134 | stdscr.addstr(5+i, 5, item[1][:34], a) |
| 135 | stdscr.addstr(5+i, 40, item[3][:39], a) |
| 136 | stdscr.addstr(5+i, 80, item[5][:39], a) |
| 137 | stdscr.addstr(5+i, 120, item[6][:39], a) |
| 138 | elif menutab == 3: # Sent |
| 139 | stdscr.addstr(3, 5, "To", curses.A_BOLD) |
| 140 | stdscr.addstr(3, 40, "From", curses.A_BOLD) |
| 141 | stdscr.addstr(3, 80, "Subject", curses.A_BOLD) |
| 142 | stdscr.addstr(3, 120, "Status", curses.A_BOLD) |
| 143 | stdscr.hline(4, 5, '-', 121) |
| 144 | for i, item in enumerate(sentbox[max(min(len(sentbox)-curses.LINES+6, sentcur-5), 0):]): |
| 145 | if 6+i < curses.LINES: |
| 146 | a = 0 |
| 147 | if i == sentcur - max(min(len(sentbox)-curses.LINES+6, sentcur-5), 0): # Highlight current address |
| 148 | a = a | curses.A_REVERSE |
| 149 | stdscr.addstr(5+i, 5, item[0][:34], a) |
| 150 | stdscr.addstr(5+i, 40, item[2][:39], a) |
| 151 | stdscr.addstr(5+i, 80, item[4][:39], a) |
| 152 | stdscr.addstr(5+i, 120, item[5][:39], a) |
| 153 | elif menutab == 2 or menutab == 4: # Send or Identities |
| 154 | stdscr.addstr(3, 5, "Label", curses.A_BOLD) |
| 155 | stdscr.addstr(3, 40, "Address", curses.A_BOLD) |
| 156 | stdscr.addstr(3, 80, "Stream", curses.A_BOLD) |
| 157 | stdscr.hline(4, 5, '-', 81) |
| 158 | for i, item in enumerate(addresses[max(min(len(addresses)-curses.LINES+6, addrcur-5), 0):]): |
| 159 | if 6+i < curses.LINES: |
| 160 | a = 0 |
| 161 | if i == addrcur - max(min(len(addresses)-curses.LINES+6, addrcur-5), 0): # Highlight current address |
| 162 | a = a | curses.A_REVERSE |
| 163 | if item[1] == True and item[3] not in [8,9]: # Embolden enabled, non-special addresses |
| 164 | a = a | curses.A_BOLD |
| 165 | stdscr.addstr(5+i, 5, item[0][:34], a) |
| 166 | stdscr.addstr(5+i, 40, item[2][:39], cpair(item[3]) | a) |
| 167 | stdscr.addstr(5+i, 80, str(1)[:39], a) |
| 168 | elif menutab == 5: # Subscriptions |
| 169 | stdscr.addstr(3, 5, "Label", curses.A_BOLD) |
| 170 | stdscr.addstr(3, 80, "Address", curses.A_BOLD) |
| 171 | stdscr.addstr(3, 120, "Enabled", curses.A_BOLD) |
| 172 | stdscr.hline(4, 5, '-', 121) |
| 173 | for i, item in enumerate(subscriptions[max(min(len(subscriptions)-curses.LINES+6, subcur-5), 0):]): |
| 174 | if 6+i < curses.LINES: |
| 175 | a = 0 |
| 176 | if i == subcur - max(min(len(subscriptions)-curses.LINES+6, subcur-5), 0): # Highlight current address |