1 MoveLayers - undo of deleting a layer with stuff on it.
4 -------------------- HID Validation Stuff --------------------
8 [user controlled menus for gtk]
10 - sometimes after using the command window, the hotkeys all seem to
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
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.
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.
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
67 PNG: add option to specify output image max dimension
69 Add direct-to-pdf exporter?
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 ":"
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?)
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
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
138 * "Edit -> cut/copy/paste selection to buffer". Is there any reason the key
139 bindings for these are not the standard bindings:
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
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
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
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
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
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
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
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
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
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
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
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:
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
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.