File: TODO

package info (click to toggle)
golly 2.1-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 9,560 kB
  • ctags: 5,064
  • sloc: cpp: 38,119; python: 3,203; perl: 1,121; makefile: 58; java: 49; sh: 22
file content (155 lines) | stat: -rw-r--r-- 5,484 bytes parent folder | download
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
Andrew's list:
==============

- Optimize rendering by eliminating lots of DrawRectangle/DrawBitmap calls.
  Instead, each layer has a viewport-sized buffer into which we "draw"
  and then convert that to a wxBitmap and call DrawBitmap *once*.
  Other advantages:
  1. We could expose the buffer to scripting commands (setpixel/getpixel)
     so that scripts could do fancy stuff like overlay images/text.
  2. It should make it easier further down the track if we wanted to avoid
     wx's DrawBitmap (which I suspect is not optimal) and use OpenGL or
     SDL or SFML.  On Mac, use Quartz?

- Revisit universal scripting idea, but use shared memory for IPC
  rather than redirecting stdin/out.

- Auto stop script if it creates too many temp files (for undo).
  This can happen if a long-running script doesn't call new/open
  when it probably should.  See my email to Nathaniel with subject
  "Re: Golly methuselah search script".

- Change all Python commands to g_* for consistency with Perl commands.
  Unfortutely, we can't really keep the old commands in same module
  because doing "from golly import *" exposes old and new commands and
  so a script like goto.py that calls a non-Golly open command will fail.
  We could put old commands in a separate module called "oldgolly".
  Maybe best to leave this change for when the scripting API needs
  significant changes due to multi-rect selections.

- Avoid any remaining algo assumptions (search *_ALGO):
  - Need IsParityShifted() method to avoid QLIFE_ALGO assumption?

- Allow dragging zoom-in cursor to zoom into rect.

- Support toroidal universes (see LifeLab).

- Stop generating if pattern becomes empty, constant or p2 (qlife only)
  and display suitable message in status bar.  Or maybe just add
  Gabriel's oscillation detection as an option (see oscar.py).

- Allow non-rectangular (and disjoint) selections.

- Implement a history bar for hlife (and maybe other algos?).

- Add simple methuselah/spaceship/osc/still-life searches as in LifeLab???

- Fix rotation/reflection of JvN states.  Probably need Begin/EndTransform
  methods, and maybe GetTransformedState as well for use in transform().
  Is there any point doing this given that there are non-symmetric rules
  like LifeOnTheEdge where the above approach won't work?
  For example:
x = 9, y = 8, rule = LifeOnTheEdge
.CA$BAC$7.A$6.2BA$6.BC$.2A$BAC$.B!
  How could we rotate/reflect the spaceship at the top
  to get the equivalent spaceships at the right and bottom?

- Fix glitches in the way the algo button works:
  - On Mac we want button to look selected before menu appears.
  - On Win we want to be able to press-select-release.

- Fix wxMac bug: Set Rule's help win can't regain focus after clicking
  in scroll bar (and thus we can't copy text).

- Add case studies to BUILD file: how to add a new menu item, how to add
  a new algorithm, etc.


Tom's list:
===========

File I/O

- Have hlifealgo .mc compatible with ghashbase .mc
- Generalized RLE in MC?

Algos

- Unzoom color merging
- Better status reports (% of hashtable full)

Scripting

- Tape construction script for replicator

Samples

- Small JVN examples

Fun

- htreebase
- hgridbase (finite universe; torus, etc.)
- allow (base) x (slow) algorithm "multiplication"
- pluggability of externally-defined algos
- perl/python slowcalc callbacks
- cache of slowcalc
- generational gc
- 32-bit indexed hashlife on 64-bit platforms

Other

- Improve batchmode.

- Fix qlifealgo::lowerRightPixel to prevent off-by-one error when
  selecting large pattern like caterpillar.


User suggestions:
=================

Nick Gotts:
- Need a way to copy exact gen/pop counts to clipboard.
  [No longer necessary now that a script can get this info?]

Jason Summers:
- For better viewing of patterns that move, have a way to automatically
  move the view X cells horizontally and Y cells vertically every Z gens.
  [Could be done quite easily via a script that prompts for X,Y,Z.]
- Allow diagonal selection rectangles.

Dave Greene:
- Provide a way to click-and-drag a selection to move it around.
- Make page and arrow scrolling amounts configurable (in Prefs > View).
- Add a getview() script command that returns current viewport rect
  and a setview(rect) command to change viewport size and location.
- Make info window a floating window and keep it open (but update
  its contents) when user loads another pattern.

H. Koenig:
- Multiple windows.  [No real need now that we have multiple layers.]

Gabriel Nivasch:
- Make paste pattern semi-transparent.  [Tried it -- somewhat confusing.]
- Add a Default button to each Preferences pane (at bottom left?).

Bill Gosper:
- Modify info window so it can be used to edit and save comments.
- For scales > 1:1 make the pixel color depend on lg(# of ones in it).

Brice Due:
- Provide MCell-like editing capabilities.
- Provide a thumbnail option as an alternative to tiled layers;
  ie. the current layer would be displayed in a large "focal" viewport.
  All layers would be displayed as small, active thumbnails (at left
  or top edge of focal viewport, depending on aspect ratio?).
- Allow mc files to set step base and/or exponent via comment line like
  #X stepbase=8 stepexp=3
  [No need now that zip files can contain pattern + script?]

Tim Hutton:
- Add a script command to save comments in a pattern file.  Add optional
  param to existing save() command?

William R. Buckley:
- Provide an option to increase spacing between buttons.