forked from masterzora/tawny-cdk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
168 lines (122 loc) · 6.82 KB
/
TODO
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
SlitherNix CDK TODO List (You can find the original Tawny list below)
* mentry broken when you go beyond the screen then hit home and end a couple times
/home/snake/work/src/git/github.com/slithernix/slithernix-cdk/lib/slithernix/cdk/widget/m_entry.rb:217:in `set_top_row': wrong number of arguments (given 2, expected 1) (ArgumentError)
from /home/snake/work/src/git/github.com/slithernix/slithernix-cdk/lib/slithernix/cdk/widget/m_entry.rb:304:in `inject'
from /home/snake/work/src/git/github.com/slithernix/slithernix-cdk/lib/slithernix/cdk/widget/m_entry.rb:202:in `activate'
from examples/mentry:83:in `main'
from examples/mentry:97:in `<main>'
* Widgets do not scale
Generating a scrolling list of 65k entries is insanely slow. Basically need
to support pagination/lazy loading of data somehow.
* If template comes up first in traverse, other widgets don't appear until you hit enter
* AlphaList doesn't work right on unsorted list
Can see it in the traverse example,
* UScale broken inside traverse
Goes on forever
* Traverse focus should highlight a box's border
Instead it moves the cursor, cursor should only be on on
certain widgets.
* Scroll/Selection should be able to re-start at beginning if scrolled to end
* Marquee example can't be exited cleanly
exit on q
* Viewer doesn't exit cleanly on escpae
* Viewer widget scrolls too far
It should stop when at 100 but goes down too far shows a bunch of
blank space.
* Figure out how to do a kind of standardish-RGB integration
Right now it's just color pairs. Should find a way to look up via RGB stuff
* Down the road, add yaml description feature
Basically, create a way to describe a TUI via a yaml manifest
* RoloDex example doesn't expand box size after adding new entries
Basically what it says, the listing of the group box says stays small
* Traverse example can't be exited cleanly
* GNU Readline integration for entry
That way we get shit like history and other readline things, ctrl-w
home, etc. Probably should be a construction parameter.
* Traverse example's "center" isn't aligned
Should above that middle window.
* Little command shell demo exits uncleanly on escape
./command.rb:216:in `main': undefined method `upcase' for 1:Integer (NoMethodError)
upper = command.upcase
^^^^^^^
from ./command.rb:278:in `<main>'
* Appointment Demo needs a key thing
It's operated by various keystrokes and there is no indication on the screen
as to what they are, you are just supposed to know.
* Graph widget a little off
It has the wrong names on the axes, and 5 is printed twice.
* Calendar example doesn't exit cleanly on escape press
./calendar_ex.rb:134:in `main': undefined method `ctime' for -1:Integer (NoMethodError)
puts 'Selected Time: %s' % ret_val.ctime
^^^^^^
Did you mean? times
from ./calendar_ex.rb:139:in `<main>'
* Aesthetics
This code was written to sort of mirror the C library obviously, so a lot of
is downright ugly and not very Ruby-esque.
* Testing
There are zero tests right now. D'oh!
Tawny-Cdk TODO List
------------------------------------------------------------------------------
Now that Tawny CDK is basically a complete copy of Thomas Dickey version of
Mike Glover's CDK it is essentially usable, but there's still a lot to do:
* Documentation
- Most of the original comments from the .c files were preserved but many
of those are less than helpful and some areas where they might be more
helpful are lacking. Further, the .h files have a few potentially
useful comments that were not preserved. Further, module, class, and
method docs are either lacking or nonexistent in most places. Tawny CDK
won't see a major version release until some better docs are in place.
* Code cleanup
- This project was how I learned Ruby so there are probably a fair number
of Ruby conventions being broken all over the place. This goes double
since I stayed fairly close to the original C in some places where it
wasn't necessarily appropriate.
* Continue restructuring
- Related to but distinct from the cleanup. The original C code was a
very impressive approximation of polymorphic object-oriented code.
Since Ruby is actually object-oriented I've mostly translated this into
this paradigm but some work still remains. Some of the codebase can
definitely benefit from a more aggressive approach to the object
orientation and polymorphic behaviour. Further, I need to take a more
critical eye at seeing what works better as inherited classes and what
works better as mixins since apparently those are different things in
Ruby.
* Error handling
- In part to allow for more rapid development and in part because I still
need to get more familiar with Ruby's exception handling but the code
is nowhere near as robust as it should be. In some cases, such as a lot
of the file handling, this means implementing intelligent rescues. In
other cases this means dealing more robustly with sensible but unexpected
parameter types.
* Package it all up
- Tawny CDK won't see a major version release until I work on packaging it
all up.
* Compatiblity version
- Right now I've significantly renamed and restructured a lot of things to
better facilitate development but have still attempted to remain somewhat
faithful to the original version. At some point I'd like to fix this with
a sort of split: a less faithful 'primary' version that makes more sense
in Ruby and a as-faithful-as-possible 'compatibility' version that wraps
the primary version into the same (more-or-less) names and structure as
the original.
* Support other Curses packages
- Right now this is all developed for a very specific Ncurses package.
Ruby has multiple Curses packages so it would be nice to provide broader
support.
* Fixes
- The code has a few "FIXME(original)" tags strewn around. Some of these
appear to be significantly easier to fix in Ruby and might even provide
some insight to allow me to kick fixes back to Thomas's project.
* The Cdk TODO List
- The Dickey/Glover version has its own TODO list with several items that
would be interesting to add. As with fixes, some of them may be easier
to implement in the Ruby version and then use the insights gained to
kick back to the C.
* Collections
- It's simple: a widget that is really a collection of widgets. Fully take
advantage of real object-orientation and polymorphism and make a widget
that collects widgets and handles them as one. Have its activate really
activate the focused widget, move affect all widgets in the collection as
one, and things like that. Basically, make it really easy to combine
widgets in useful manners