5 Code cleanups (no particular order):
10 Go through and format the code. it's really gross right now
12 Re name end_angle in o_arc* to be sweep_angle
14 Go through and make sure all mallocs with strings are sane
16 It's becoming critical to add comments... (very critical)
18 Clean up COPY vs ENDCOPY (MOVE as well) in x_event
20 Change current_attribute and related setting funcs to be more
23 Go through and add null checks and print statements
25 o_connect_midpoint etc... fix/get rid of the offset2 stuff
27 IMPORTANT go through and fix object_tail and return_tail on all places
29 Careful with all lists which have a head, in particular attributes,
30 (they have a head, which has a null "object" pointer), which causes
31 some grief, see note in o_attrib.c about the grief
33 Total chaos between selected/object_head and replicated coded
35 Agg! get rid of all window_current's and global_window_current
37 Go through and clean up switch, case, break tabbing.
38 Related to above, way too many switch/case statements...
40 The object_parent variable and how it is used, is a slight kludge,
41 but I don't know of any other way of getting o_attrib_attach to
42 search the right list, depending on if you are reading a regular
43 component to object_head or a complex which goes to object->complex.
44 It becomes an issue, that you have to search the list.
46 move a_zoom a_pan to i_* world
48 perhaps rename a_basic to something else
50 go through and fix left, top, right, bottom to be what they really
51 mean (0,0 is in the lower left)
53 get some consistancy with *_world world_* etc.. *_world_*
56 DONE Make zoom in, zoom out, pan a single function. Now this is doable
58 DONE Remove gd/gd.h from every file... in gschem and libgeda
60 DONE Inconsistant naming of o_current, object, current etc...
62 DONE Get accurate names for o_list... routines. like o_list_delete_all
63 which doesn't delete all (it doesn't delete the head)
65 FIRST Figure out gtk_signal_connect and friends: proper last param.
68 DONE The p_connect stuff is unused and needs to be removed
70 DONE Created o_net_translate_world (been using line function)
72 DONE Replace all struct st_object with a typedef
74 ----------------------
78 Feature additions (no particular order):
79 ----------------------
81 Seperate translate in the X and Y directions (in addition to the
82 current coupled X and Y translate)
84 Simplify i_update_* so that static strings are being re-set
88 Added rc keyword for pin/net thickness (the value) and for visual
91 there was an analog to the 'array' command where you select
92 a group of stuff and hit array, enter the number of rows and
93 columns, and the relative spacing between them, and the copies
94 the thing nxm times and draws it all for you.
96 when first editing a text object, after the popup box appears with
97 the highlited selection, hitting the right arrow key would clear
98 the highlight and keep the cursor at the end of the text.
100 Text as objects: Visual texts to be selected separately. All
101 text geometry stored relative to its "mother object" so that
102 the text moves when the "mother" does.
104 Go through and make sure everything has a default (every release)
106 Added LogFilename keyword
108 Document all the features of the dialog boxes (returns etc...)
110 Document filename naming restrictions:
111 - Symbols are named filename.sym
112 - Schematics are named filename_#.sch where # is sheet number
113 - Sym/Sch names need to be unique.
114 - ONE dot per filename!
116 Generalize the way source files are displayed, ie if you get a .gif
117 the program should run a image program, use mime.types and mailcap
120 Change directory option?
122 Open symbol pops up a new window, configurable through rc file
124 Configurability of mouse button order (left vs right handed)
126 Configurable "hit return and close dialog box" for attributes,
129 Configurability as to what mode a cancel (with right mouse button)
132 Breaking of nets when you connect in the middle.
134 Two "indicators" in some way (suggest to the right of the pulldowns)
135 that indicates if you're in 'toggle snap' or not, and if you're in
136 'toggle grid' or not. 'Toggle grid' might not be useful because you
137 should see it :-) Then 'Toggle outline' is another choice?
139 Another menu option to rotate one component? Or check if the
140 selection is just one component and via a gschemrc item give the
141 user the possibility to rotate the component around it's origin
142 or a common point? Rotate more selected objects the way it is
145 Complex within a Complex?
146 Probably not yet at least not yet. (might work mostly now, but not
147 completely) This is not the same thing as hierarchical design.
149 A set of compile or runtime flags to control "fluff" (ie make things
150 go as fast as possible)
152 metric units instead of mils (in addition to mils)
154 Not sure I like that selectable vs unselectable flag in complex's
155 Fix with locking layers
157 Fix o_edit to handle multi edits. Should be just a code clean:
158 get rid of all direct access to new_sel_head and friends
159 pass in structure that is being edited...
160 Move object/structure code out of x_dialog.c
162 PIN/NET thickness configurability
164 Add code so that when you switch between actionfeedback modes
165 and your inside an action you get instant feedback
167 Not a well behaved X program: finish wm hints, icon, X commandline args
170 DONE Add config option for geometry of the window. (or command line option)
173 DONE Fix the stupidity of when net consolidation is on, you unselect
174 everything. This was temporary till you rewrite
175 o_net_consoliate_lowlevel (in libgeda)
177 DONE Code to have all attributes visible
179 DONE Make sure snap spacing is set to 100 when doing symbol translates
180 (warn user in log window)
182 DONE Added the ability to rotate embedded components
184 DONE Fix the color scheme and make it flexable.
186 OKAY Figure out if you want the net draw/add action to end when you draw
187 a zero length net (configureable?)
189 DONE Check and see what we are doing with invisible attibutes, if we are
190 rendering them or not (to speed things up), fixed by NOT creating
191 the attribute (or text)
193 DONE Check for incorrect angles on text... warn user
195 DONE Add dashed lines etc...
197 DONE When you rotate a component, associated attributes get de-assosciated
198 write code to fix this
200 DONE Search for schematic in memory and don't load it from disk if it is.
202 DONE Add the ability to specify $HOME in an rc file for a path
203 ( do you want to do ~ as well? )
205 DONE Do sanity checks on all drawing input
207 DONE Better handling of dot/square size routine drawing based on zoom
210 DONE Don't allow zero length objects in general
212 DONE Alignment of text objects
214 DONE Move schematic filenames toward the _# convention. Where the #
215 (is a number) signifies the sheet number it's on. Will make moving
216 between sheets easier.
218 DONE A toggle invisiblity ALL objects
220 DONE Automatic saving
222 DONE mouse coordinates
224 DONE Document the ortho/non ortho ability of nets
226 NAH Consider using an aspect frame to control the aspectratio of the
227 drawing area (enforce aspect ratio then indirectly)
229 DONE Dialog box for printing...
232 DONE Default behavior of caps vs case sensitive labels/text?
233 make this configurable
235 GONE fix dialog box to be able to handle NEW discards... see NEW define
238 DONE Editing of objects:
239 TEXT - color size string
240 LINE/CIRCLE/ARC/BOX color endpoints?
243 DONE configuration ability for ortho pins and nets
244 This wasn't done, but you can draw non-orth lines and nets. (non ortho
245 pins might be added later)
247 OKAY Pins need their own conn_recalc routine
249 DONE Boxes (box and selection) that go in both directions... left->right
252 DONE Attribute dialog box. which lets you select the standard attributes
254 DONE Font system must be replaced by a more flexable system. Ie arbitrary
255 text sizes allowed and the choosing of the font should be based on
258 DONE Add lock down component code and interface hook.
260 DONE Add a new dialog box for saving and managing pages. Use a different
261 mechanism for calling the saveas dialog box.
263 DONE Panning: the working area follows the mouse.
265 DONE Move/Copy actions start right away after hot key press
267 DONE Go back and look at 4 nets coming together problem (not showing dot)
269 DONE Added text dialog box which behaves like attribute add.
271 DONE Better toggle buttons for visibility etc (sub instead: GtkSpinButton)
273 MOSTLY Object clipping...
276 WORKING component slotting (ie dealing with the number of slots in a packages)
278 WORK Analog support (draw symbols)
286 2 = crude basics working
288 4 = a lot fluff added
292 0 remove all // comments
295 checks for all system calls (with perror)
299 1 macro/extensiable lang
300 1 Make symbol (odd bug with hitting S twice then it works ? )
302 3 object clipping out of active window
303 3 dashed lines (slightly hard, but time consuming to change code value?)
304 3 sloting (as in pin numbers in multpacks) of components
306 3 Standard place for symbols/symbol hierarchy
307 4 stretch/edit of nets
309 4 color selection (better color handling)
310 4 boundingbox vs outline
311 4 hierarchical design
312 4 pins (still need to check conn funcs)
314 4 multibuffers (make sure all routines don't hardcode new_sel_head)
317 5 push/pop into a symbol
318 5 mirror of primatives
321 5 rotate of primatives
325 5 finer grid (selectable snappage)
327 5 multi select box! / window select
328 5 contrained move/copy
329 5 fix all return values
330 5 Change color of highlight to light grey
331 5 prototypes for everything
332 5 Change file format to use letters for types instead of #'s
333 5 outline copies should be more color realistic
334 5 middle button to repeat last command?
335 5 attributes with names= etc...
336 5 backingstore and improved expose event handling
339 5 Contrained lines (with control key like o_drawbounding())
343 netlists (belongs in gnetlist)
347 transparent zooms and pans
348 client lib to do above and protocol
354 have cursor jump around if snap on
359 - A solution to the current block problem (offset wrong) is to
360 write out the block as it is in memory to the file.. and then
361 when it is loaded again it will be correct... hmmmmm.. use
362 the left/top coords as the starting x and y then instead of the
365 - A better solution would be to translate all the objects to zero zero
366 and then save the object as a symbol.
367 Of course this is what I did
369 Requires a color display
371 Doesn't work too well with AutoRaise
372 This has improved, but I still need to work on this.
376 -----------------------------------------------------------------------------
378 Q: Copying/Moving objects that aren't on the grid, causes them to snap
379 onto the grid if snap is on. What's the deal with that?
381 A: This is a "normal" behavior. It is an artifact of how I do grid/snap
382 locking. Don't move/copy objects which are not snapped to the
383 grid with snap on. Since this is not a general purpose drawing program,
384 don't work with the snap off. You should only have to do that if you are
385 adding text in key places or drawing symbols. I am thinking on how
386 to improve my snap/grid locking to be more robust.
392 ------------------------------------------------------------------------------
393 - A possible redo of the boundingbox idea, what if you searched through
394 all individual boundingboxes on all objects (especially complex)
396 - Coord system needs total rewrite. Maybe not, but it is lacking in that
402 ------------------------------------------------------------------------------
404 midpoint droppings on moves/copies
409 -----------------------
411 (this list is not complete, there are still many more people who suggested
412 stuff, and each of the listed people suggested other things. I just
413 haven't had time to move the ideas from my mailbox to here)
415 suggestions by: Andrew Dyer
416 - View logic compatibility
417 - web enabled : schematics/symbols/models viewing/distributing on the web etc.
418 - in-memory connections database
419 - revision control (cvs rcs)
421 - EDIF (and tango netlists) and other friends
422 - extension lang/ macro lang (tcl, forth ? )
423 - EDITOR support for editing big symbols
426 suggestions by: Erik de Castro Lopo
427 - SPICE netlist format
428 - Scrollbars and a better zoom (center of window)
429 - properties dialog box for components
430 - Design Rule Checking and dialog box suggestions
431 - better window/aspect ratio control (get rid of mostly)
432 - more dynamic window size (give user more control)
434 suggestions by: Emmanuel Rouat
435 - connected nets staying with components with distortion.
437 suggestions by: Matt Ettus
438 - RCS/CVS support (another vote for this)
439 - project management program ("glue" between programs)
440 - remove concept of filename from gschem ??? (a design librarian)
442 suggestions by: borges@ifi.uio.no
443 - Set a dialog box size on component select.
444 - escape key to cancel.
445 - libraries with this subsloting idea? .
446 - Scrollbar on the middle button (configuration)
447 - toolbox with icons.
448 - alternate move/copy behavior. Just select object and drag.
450 suggestions by: Harry Eaton
451 - spread-sheet window that contains properties of whatever you're
452 interested in on the schematic (could be a list of elements, names,
453 spice model names, package types, etc, or a list of nets, and their
456 suggestions by: Kyriacos Iacovou
457 - draw/outline commands with the mouse to select the various modes
459 suggestions by: Stefan Petersen
460 - As few keystrokes/mouse clicks as possible -> stay in mode until users
462 - alternate move/copy behavior: Just click and drag.
464 suggestions by: Jeff McNeal
465 - Another vote for nets update when you move a component
466 - Strokes. A la CADENCE or Mentor.
467 - Go to FreeHDL intermediate format instead of VHDL?
469 suggestions by: Michael Linnemann <Linnemann@berg.net>
470 - A manual keyboard search entry for entering symbols.
471 - better symbol lookup searching catagorizing mechanism
473 suggestion by: Magnus Danielson <cfmd@swipnet.se>
474 - Oh, shouldn't we rewake the idea of a symbol/symbol library contribute
475 button? You know, when a user wishes to contribute a symbol, a number
476 or symbols or even a full library (directory) he/she can just walk down
477 the File menu and select Contribute Symbol... which will do screening,
478 encapsuling and then mail/ftp the symbol to you (geda.seul.org).
482 Future Specifications for gschem
483 -----------------------
491 be one complete net (not done yet)
494 (filled|empty) squares/cross at the end of nets
495 (filled|empty) circles at midnet connection points
512 execute special action
516 Operations (for all objects)
522 Constrained/Free move (SHIFT/CTRL keys)
524 multiselect/deselect (SHIFT/CTRL keys)
538 Page system (neads to be done early)
541 Printing to postscript
553 library path selection
559 should be easy to use