def select_scroll(self, i = 1): ctools.dputs(self.selected) if self.selected != None: n = self.selected + i if n > self.last: oldlast = self.last self.scroll(n - self.last) self.select(self.last) elif n < 0: self.scroll(n) else: self.select(n) else: self.select(0)
def __init__(self, win): self.win = win (my, mx) = win.getmaxyx() (by, bx) = win.getbegyx() ctools.dputs((by, bx)) self.wname = win.derwin(my - 1, 10, 0, 0) self.winfo = win.derwin(1, mx, my - 1, 0) self.wtext = curses.newpad(my, mx - 10) self.wtext_refp = (0, 0, by, bx + 10, my, mx) self.win.leaveok(1) self.wname.leaveok(1) self.wtext.leaveok(1) self.winfo.leaveok(1) self.winfo.bkgd("-", curses.color_pair(4))
def main(self): selectmode = False view = self.views[self.now] while True: curses.flushinp() c = self.stdcur.getch() ctools.dputs("Key: 0x%x" % c) if c == ord(' '): selectmode = not selectmode view.clear_selected() elif c == curses.KEY_DOWN: if selectmode: view.select_scroll() else: view.scroll() elif c == curses.KEY_UP: if selectmode: view.select_scroll(-1) else: view.scroll(-1) elif c in (curses.KEY_ENTER, 0x0a): if selectmode: sid = view.get_selected_statusid() self.menu_popup(sid) else: self.status_update() elif c == ord('q'): break else: if c in self.views: ctools.dputs("Changed: 0x%x" % c) view.enable = False self.now = c view = self.views[self.now] view.enable = True view.refresh()
def run(self): # extract cached status if gets user_timeline if self.func.func_name == "user_timeline": cached = set() for i in self.statuses.itervalues(): if i.user.id == self.kwargs["user"]: cached.add(i.id) if cached: self.add(cached) while True: try: # Get Timeline last = self.func(*self.args, **self.kwargs) except Exception, e: last = None ctools.dputs("[Error] TwitterAPI ") ctools.dputs(e) ctools.dputs(self.func) self.on_timeline_refresh() # If Timeline update if last: # Append status cache new = set() for i in last: new.add(i.id) self.added_event(i) # Add statuses to timeline self.add(new) # update lastid self.lastid = last[-1].id self.kwargs["since_id"] = self.lastid # debug print # print "[debug] reload", time.strftime("%H:%M:%S"), # print self.func.func_name, self.args, self.kwargs # Reload lock self.lock.clear() if self.interval != -1: self.lock.wait(self.interval) else: self.lock.wait()
def getstr(self): curses.flushinp() curses.noecho() curses.curs_set(1) self.win.move(self.y, self.x) self.startend = (0, 0) self.win.keypad(1) self.win.clrtoeol() self.win.refresh() s = unicode() i = 0 while True: (y, x) = self.win.getyx() c = self.win.getch() ctools.dputs("Entry: 0x%x" % c) if c == 0x0A: break # \n elif c in (curses.KEY_BACKSPACE, 0x08): if i <= 0: continue s = s[: i - 1] + s[i:] i -= 1 self.rewrite_text(s, i) elif c == curses.KEY_DC: s = s[:i] + s[i + 1 :] self.rewrite_text(s, i) elif c == curses.KEY_LEFT: if i <= 0: continue i -= 1 self.rewrite_text(s, i) elif c == curses.KEY_RIGHT: if i >= len(s): continue i += 1 self.rewrite_text(s, i) elif curses.KEY_MIN <= c <= curses.KEY_MAX: pass else: # UTF-8 input if c & 0x80: f = c << 1 while f & 0x80: f <<= 1 c <<= 8 c += self.win.getch() & 0xFF c = ctools.utf2ucs(c) if ctools.isascii(c) and not ctools.isprintable(c): continue s = u"%s%s%s" % (s[:i], c, s[i:]) i += 1 self.rewrite_text(s, i) curses.curs_set(0) self.win.move(self.y, self.x) self.win.clrtoeol() self.win.refresh() return s