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