Fixup draw.c not to special case based on HID name, use flags instead
[geda-pcb/pcjc2.git] / src / todo
bloba656cfd6f9d2da844b9ecacee3813a4691a69999
1 MoveLayers - undo of deleting a layer with stuff on it.   
4 -------------------- HID Validation Stuff --------------------
6 [gtk]
8 [user controlled menus for gtk]
10 - sometimes after using the command window, the hotkeys all seem to
11   quit working.  Why???
13 - Make sure loading a new board updates all the displayed menu checkmarks
15 - play around with the route style buttons and menus to see if it gets 
16   confused ever.
18 - make sure settings are always saved
20 - make sure that we're compatible with the lesstif hid as far as being able to 
21   load the same menu resource file if we want
23 - compare performace before and after over a slow link or on a slow computer.
25 - make the ui append code more printf()-like.  It will simplify the code
26   and make it nicer to read.
28 - look for code duplication in hid/gtk/gui-top-window.c, especially related to
29   layers and tools.  Don't duplicate code if at all possible.
31 Known issues:
33 - Mouse section in the resource file is ignored.  I need to learn about how the mouse buttons are handled in the gtk HID currently so I can hook up that section.
35 - A fair amount of now obsolete code still exists in gui-top-window.c.  I need to do some major house keeping.
38 [existing before user controlled menus]
40 Do something with LayerGroupsChanged action.
43 Verify all config items are saved/loaded properly.
45 Review for additions to make to the Preferences window.
47 Clean up popup: populate with common actions and remove select tool part.
48 Evaluate its value given tearoff menus?
51 -------------------- Lesstif Enhancements --------------------
53 Pan(x, y, zoomfactor) - pans screen, zooms, sets crosshairs on coordinate.
55 Translucent layers
57 Layer/Group master control dialog
59 Remember configuration and restore on startup?
62 -------------------- HID Enhancements --------------------
64 PNG: get clears right.
65 PNG: add options for gif and jpeg.  Maybe this HID needs
66      a different name...
67 PNG: add option to specify output image max dimension
69 Add direct-to-pdf exporter?
71 Put Xaw GUI back in?
74 -------------------- Core Issues/Enhancements ---------------
76 SearchObjectByLocation() needs to search front side silk, elements,
77 etc, before back side ones.
80 -------------------- Action Enhancements --------------------
82 Default functions for ":"
83  - tab expansion
85 Generic "set hid attribute" action.
88 -------------------- Long Term Projects --------------------
90 Switch to topological autorouter.
92 Global "puller" optimizer.
94 Constrain all objects to have the same fields first in their data
95 structures; convert most internal functions to use this AnyObject type
96 instead of N functions for N object types.  (Prelude to C++ objects?)
98 Win32 and MacOS HIDs.
100 -------------------- Punch list from sdb --------------------
103 I played around with an existing design: the two-sided optical proximity
104 sensor board I wrote about in Circuit Cellar.  A tarball of this project is
105 available on my website.  Here are some notes
107 *  Grab a single track and move it around.  Sometimes, PCB prevents me from
108    moving it beyond a point above and to the left of the track's original
109    starting point.   This happens regularly if I do this:
110    1.  Click on teh track.  It lights up.
111    2.  Grab the track with the left mouse button.  Then drag it with left
112        mouse button down.  The track won't move above or to the left of its
113        start point.
114    Maybe this has something to do with preventing motion to negative
115    coordinates, and PCB is looking at component-relative coordinates instead
116    of absolute board coords?
118 dm:  there in 20070208
120 *  Bug or feature?  I run the DRC checker.  The DRCs are written out to the
121    pcb.log file.  However, the pcb.log window does not rise to the top.
122    Rather, it remains hidden behind my main PCB window.
124 dm:  there in 20070208
126 *  "File -> revert" removes all my silk refdes text, and replaces it with the
127    component description from the element file.  It looks like this action
128    tries to put text(3) on the baord, when it should put text(2).
130 dm:  can't reproduce on my board.  Need to investigate.  Looks like no change.
132 *  "File -> revert" also changes many of my SMT pads from rectangular to round
133    end.
135 dm:  can't reproduce.
138 *  "Edit -> cut/copy/paste selection to buffer".  Is there any reason the key
139    bindings for these are not the standard bindings:
140    cut: <ctrl>-X
141    copy: <ctrl>-C
142    paste: <ctrl>-V
143    Yes, it may be in a .gtkrc file now, but IMO these should be the default.
145 dm:  will switch after usermenu merge.
147 *  We have "edit -> select/unselect all", and we have "select ->
148    select/unselect all objects".  Do we need two menu items doing the same
149    thing?  Or if they do different things, can we make the text reflect what
150    they do?
152 dm: They are identical.  I have mixed feelings.  It is wierd to have 2.  Yet, it seems like they go under select but most programs have edit->select all....  I'll make a note, but this is the same as in the trunk right now.
154 *  "Edit -> move selected to current layer" doesn't seem to do anything.
156 dm: existing bug.  confirmed.
158 *  "View -> open pinout menu" does nothing.  No spew appears on console.
160 dm:  need to select something or have crosshair over an element.
162 *  "View -> pin/via show name/number" does nothing.  No spew appears on
163    console.
165 dm: same deal
166 *  If I do "view -> current layer -> delete current layer", the layer is
167    deleted.  However, the remaining layers are re-colored.  It looks like the
168    current layer is deleted from a list, but the colors are based upon list
169    position, so the remaining layers are re-colored if they live after teh
170    deleted layer.
172    Anyway, the layers shouldn't be recolored when I delete a layer.
174 dm: existing bug in gtk HID only (lesstif works right)
176 actually.... lesstif doesn't recolor until you restart pcb and then it
177 is recolored.  It is because we don't store the color with the layer
178 in the pcb file.
180 *  Again, "view -> current layer -> move current layer up/down" re-colors my
181    layers.  I'd rather have the color follow the layer so that e.g. my GND
182    planes remain green.
184 dm: see above
186 *  "Settings -> orthogonal moves" doesn't work correctly.  If I start a track,
187    it will only go in an orthogonal direction, but then if I plant the track
188    by clicking once and try to veer off in an orthogonal direction, then the
189    track won't go orthogonal relative to my planted point.  Rather, it still
190    wants to move in an orthogonal relative to my start point.
192 *  "Settings -> all directions lines" and "settings -> orthogonal moves"  can
193    both be selected at once.  These are incompatible settings.  I suggest these
194    drawing settings should be in an menu section with radio buttons which
195    prohibit checking more than one box at a time.
199 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
201 *  WHile fiddling with a different setting,
202    I just noticed that trying to optimize rats only highlights pads now.  I
203    suspect this has to do with when I removed a layer.  The code which used to
204    tell the rats to light up is now telling the pads to light up, probably
205    because it is pointing to the wrong element in the layer list.
207 *  "Select -> move selected elements to other side" doesn't move a selected
208    element to the other side.  Rather, it asks you to click on the objects you
209    want to move.  That is, it is "verb noun" rather than "noun verb".  Bug or
210    feature?  These days, most UIs use the "noun verb" convention for one-step
211    actions like this.
213 *  "Select -> remove selected objects" is "noun verb".  This is good.
214    However, it's the same as selecting an object and hitting <delete>, right?
215    Why should it appear here.  Isn't this action under "edit" in most modern
216    UIs?
218 *  On the same topic:  As you pointed out, hitting the <delete> key deletes
219    the object under the cursor.  This is not the expected behavior nowadays.
220    What should happen is that all selected objects (i.e. those which are lit
221    up) should be deleted.
223 *  A general observation:  If I use the "lock" tool to lock down a component,
224    then I can't select it.  That's OK.  However, it would be nice if a dialog
225    box would pop up and tell me that the component is locked.  Right now it
226    can be very confusing if I locked a component and then forgot it was
227    locked.  I can't figure out why I can't select it......
229 *  This is weird.  "Select -> convert selection to element" asks me to select
230    the mark.  I click in the middle of a component.  THen, depending upon luck
231    or perhaps history, PCB lights up a component *next to* the one I just
232    clicked.  And it also lights up a piece of etch in the vicinity of the
233    component I just clicked.  ???
235 *  "Select -> optimize selected rats" -- what does this do?  Is it the same as
236    "Connects -> optimize rats nest?".  If so, then it should be removed form
237    the "select" menu.
239 *  A general comment:  Lots of things in the "select" pull-down don't belong
240    under the heading of "select".  Rather, I'd call this menu "actions", or
241    possibly "tools".  THen, lots of the nice actions only available via the
242    command line widget can be grouped under this menu title.  As for a name, I
243    prefer "actions" 'cause that's what they are.
245 *  "Select -> auto route" and "select -> rip up autorouted tracks"  also
246    appear under "connections".  They don't need to be under the "select" menu.
250 *  General comment: the way the buffer works has alwyas bugged me.  When you
251    copy or cut somthing to the buffer, you get a ghost image of hte
252    footprint.  This is OK.  However, the ghost follows the cursor around while
253    you go to the menu to select the next action.  This is a PITA since the
254    view field of the design moves when you get to the top of the window while
255    reaching for the menu.  (Yes, I realize we all use
256    the hotkeys to trigger actions, but newbies don't know to do this yet.)
258 *  "Buffer -> #1/#2/etc"  What do they do?   OK, I realize they allow you to
259    select one of five buffers to operate on.  Maybe this should be renamed
260    "Buffer -> operate on buf 1", "Buffer -> operate on buf2", etc.
262 *  "Connects -> apply vendor drill mapping" doesn't report success of
263    failure.   In my case, I have no vendor drill file, but when I do "connects
264    -> apply vendor drill mapping" nothing happens.  I'd expect a pop-up box to
265    tell me about my error (no file).
267 *  "Connects -> report found pins/pads" throws up box saying "the following
268    pins/pads are FOUND:" with nothing after that.
271 *  On the upper right, teh box whihc holds the cursor's coordinates resizes as
272    you move the cursor around and the
273    coordinate numbers grow and shrink.  This
274    makes the text to the left of the box jump around.  It would look better if
275    the coordinate box was a fixed size, holding space for e.g. 8 digits each
276    (i.e. XXXXXX.XX).
278 *  Next to the cursor coordinate box is another box which looks like it should
279    hold some coordinates.  However, it holds nothing.  What is it for?
280    Unimplemented feature?
282 *  An annoyance:  Eariler, I tested the "disperse elements" menu item.  It
283    placed some components below the white drawing area, in the grey no-go
284    area.  Now I can't grab them because the cursor is prevented from moving
285    into the grey area.
287    IMO, the cursor should be permitted to move into the grey area.  Also you
288    should be permitted to drag components, etch, or anything else into the
289    grey area.  Yes, the grey area is outside the bounds of the board, but the
290    only things that should do is clip any graphic objects to the edge of the
291    white area when you generate Gerbers.  From teh standpoint of drawing, you
292    should have full access to the grey area.
294    One strong reason in favor of this is that it's quite common to put
295    unplaced components outside the board during placement stage.  You can sort
296    and segregate them out there.  Then, as
297    you place the components, you can grab them from outside the board and
298    place them where you want.  Right now, that's more of a PITA since the
299    components are initially imported all on top of one anther.  Then, if you
300    disperse them, they cover the board area where you want to eventually place
301    them.
303 *  Finally, a general comment.  I've never been 100% happy with the top-level
304    menus in PCB.  In my opinion, I'd make them as follows:
306 --  File
307 --  Edit
308 --  View
309 --  Settings
310 --  Actions (currently is selections, but should hold items related to acting
311     on things you have selected.)
312 --  Footprints -- currently is buffer.  Should permit manipulations related to
313     editing, creating, saving, rotating, mirroring, etc. of footprints.
314     Might add other menu items related to dealing with footprints.
315 --  Routing -- currently is connects, but should be renamed to reflect that its
316     primary purpose is related to things related to laying down physical
317     tracks and
318     dealing with the autorouter.  Could also include anything related to
319     changing track size or other etch manipulations.
320 --  Nets -- Deals with highlighting connections, maybe toggling rats, opening
321     the nets dialog, etc.  Also, anything
322     else related to the abstract connections between circuit
323     elements. --  Info --  Window
325 The idea is to make the menus reflect the physical things on teh board which
326 the user is concerned with.  Right now the menus are more a reflection of
327 PCB's internals (i.e. connections, buffer, etc.)
329 Once the top level menus are re-named, then I'd do some re-factoring/shuffling
330 of functionality into the new menus.