about summary refs log tree commit diff stats
path: root/arc/charterm/info.rkt
blob: 64eeaefecd0fd0495d4e1267e0bc57291b84c4ba (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#lang setup/infotab

(define mcfly-planet       'neil/charterm:3:1)
(define name               "CharTerm")
(define mcfly-subtitle     "Character-cell Terminal Interface in Racket")
(define blurb              (list name ": Character-cell Terminal Interface"))
(define homepage           "http://www.neilvandyke.org/racket-charterm/")
(define mcfly-author       "Neil Van Dyke")
(define repositories       '("4.x"))
(define categories         '(misc))
(define can-be-loaded-with 'all)
(define scribblings        '(("doc.scrbl" () (library))))
(define primary-file       "main.rkt")
(define mcfly-start        "charterm.rkt")
(define mcfly-files        '(defaults
                              "charterm.rkt"
                              "demo.rkt"
                              "test-charterm.rkt"))
(define mcfly-license      "LGPLv3")

(define mcfly-legal
    "Copyright 2012 -- 2013 Neil Van Dyke.  This program is Free Software; you
can redistribute it and/or modify it under the terms of the GNU Lesser General
Public License as published by the Free Software Foundation; either version 3
of the License, or (at your option) any later version.  This program is
distributed in the hope that it will be useful, but without any warranty;
without even the implied warranty of merchantability or fitness for a
particular purpose.  See http://www.gnu.org/licenses/ for details.  For other
licenses and consulting, please contact the author.")
>Accumulator.__init__(self) self.scroll_begin = 0 def draw(self): base_clr = deque() base_clr.append('in_taskview') lst = self.get_list() if self.old_lst != lst: self.old_lst = lst self.need_redraw = True if self.need_redraw: self.win.erase() if not self.pointer_is_synced(): self.sync_index() if self.hei <= 0: return self.addstr(0, 0, "Task View") self.color_at(0, 0, self.wid, base_clr, 'title') if lst: for i in range(self.hei - 1): i += self.scroll_begin try: obj = lst[i] except IndexError: break y = i + 1 clr = deque(base_clr) if self.pointer == i: clr.append('selected') descr = obj.get_description() self.addstr(y, 0, descr, self.wid) self.color_at(y, 0, self.wid, clr) else: if self.hei > 1: self.addstr(1, 0, "No task in the queue.") self.color_at(1, 0, self.wid, base_clr, 'error') self.color_reset() def finalize(self): y = self.y + 1 + self.pointer - self.scroll_begin self.fm.ui.win.move(y, self.x) def task_remove(self, i=None): if i is None: i = self.pointer self.fm.loader.remove(index=i) def task_move(self, absolute, i=None): if i is None: i = self.pointer self.fm.loader.move(_from=i, to=absolute) def press(self, key): try: tup = self.env.keybuffer.tuple_without_numbers() if tup: cmd = self.commandlist[tup] else: return except KeyError: self.env.key_clear() else: if hasattr(cmd, 'execute'): try: cmd.execute_wrap(self) except Exception as error: self.fm.notify(error) self.env.key_clear() def get_list(self): return self.fm.loader.queue