예제 #1
0
 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)
예제 #2
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))
예제 #3
0
파일: main.py 프로젝트: techno/twittext
 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()
예제 #4
0
    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()
예제 #5
0
파일: entry.py 프로젝트: techno/twittext
    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