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