1 Xcircuit v3.x Change Log (file CHANGES)
2 ----------------------------------------------------------------------
4 Please note that there is an automatically-generated, up-to-date list
5 of the most recent code changes at the URL
7 http://opencircuitdesign.com/xcircuit/changes.html
9 Occasionally I spend some time to convert that list into text and put it
10 back here. So if you're looking for the most recent changes, try the
13 Version 3.6 (January 2006 to present)
14 ----------------------------------------------------------------------
15 369 v3.6 rev 21 4/7/06
16 Incorporated Michael Goffioul's code for (native) Windows
19 368 v3.6 rev 20 4/5/06
20 Fixed an error with the -noconsole -nowindow startup, where
21 the option switches were passed to GUI_init; XCircuit now
22 searches the arguments for a Tk window name rather than relying
23 on the number of arguments to figure out whether or not it is
24 running in batch mode.
25 Also: Fixed an error in a Wprintf() statement when a library
28 368 v3.6 rev 19 3/31/06
29 Fixed the select color, which got changed to cyan because the
30 wrong line was deleted from the source file. Also, implemented
31 a policy of removing redundant points after a line has been
32 drawn, because some drawing programs use left-button + middle-
33 button, and I've seen several xcircuit novices doing this.
34 Also: Fixed the undo mechanism with respect to rotates and
35 flips, so that rotates and flips during a move or copy operation
36 don't screw up the undo operation.
37 Also: Changed the look of the GUI a bit, with softer colors and
38 no red borders around the buttons and message widgets.
40 367 v3.6 rev 18 3/30/06
41 Added command option "config database" to update the internal
42 list of colors, fonts, and other values that should be able
43 to be set with the Tk "option" command. This now allows colors
44 to be redefined from within the startup script. Removed the
45 "query" color, which is no longer used, and the "filter2" and
46 "bar2" colors, which are (and never were) necessary.
48 366 v3.6 rev 17 3/28/06
49 Reorganized the source code to separate most of the Xt GUI
50 functions into two separate files, xtgui.c and xtfuncs.c.
52 365 v3.6 rev 16 3/27/06
53 Changed the "keybind" function to be per-window so that the
54 scroll-wheel and auto-increment functions work in multiple
56 Also: Corrected a bad error that allowed an object instance
57 being moved to be selected when "carrying" it into another
58 object, causing xcircuit to crash.
59 Also: Changed the behavior of Tcl expression parameters so that
60 the parameter evaluation is done ONLY as part of the opsubstitute()
61 routine; this places some restrictions on the use of expression
62 parameters but should avoid problems where expression parameters
64 Also: Created a new symbol "netpointer" in the generic library
65 that implements a "netlist get" function. Corrected a number of
66 errors related to properly executing expression parameters.
67 Also: Added "analoglib3.lps" and "digitallib.lps" to the installed
69 Also: Corrected the library zoom/position problem definitively
70 (see note for revision 13).
72 364 v3.6 rev 15 3/22/06
73 Added command options "library writable" and "library changed".
74 Removed the "Library: " string from the beginning of library
75 names. Modified the "Write All" Tcl script to handle automatic
76 writeback of libraries that have changed, and to note libraries
77 that have changed but which are not writable.
79 364 v3.6 rev 14 3/21/06
80 Added the "-target <library>" option to the "page load" command.
81 This allows objects in a file to be placed somewhere other than
82 the "User Library", without having to move them by hand. Let
83 XCOps(library) stand for *both* the -replace and -target libraries.
84 Fixed the Tcl wrapper script procedures accordingly.
85 Also: Added command-line options "xcircuit --help" and
86 "xcircuit --version" providing essential information.
87 Also: Added command option "library compose", although the fact
88 that the library does not get composed in certain cases needs to
90 Also: Added variable xobjs.hold = XCOps(hold); when FALSE, the
91 mouse HOLD modifier is disabled (perhaps this should be an
92 integer that sets the delay time, with 0 = disabled?).
93 Also: Fixed menu command callbacks that were broken for several
96 363 v3.6 rev 13 3/18/06
97 Various fixes to correct problems found running various steps
98 while writing tutorial number 3: Fixed Alt-f key binding for
99 font changes, user library redraw (still is wrong somewhere),
100 variable substitution in filenames, and a few others.
102 362 v3.6 rev 12 3/17/06
103 Added the ability to move objects both within a library and between
104 libraries simply by using the "library move" macro (Shift-M) to
105 pick up the object, then transferring it between library pages.
106 Also, virtual copies can be made of any object in the library (not
107 just those that have paramters), and the virtual copies can be
109 Also: Fixed the "-noconsole -nowindow" invocation, which was
111 Also: Added variable and tilde expansion to filenames in the
112 "%F" and "%f" escapes in info labels.
114 361 v3.6 rev 11 3/15/06
115 Corrected a number of event errors, including the inability to
116 select from the library via a button tap and drop into "move"
118 Also: Implemented a version of James Vernon's mouse button hints.
119 Also: Corrected the LaTeX mode output to properly account for files
120 with non-".ps" extensions (e.g., ".eps").
122 360 v3.6 rev 10 3/14/06
123 Corrected an error which prevented edited library object names
124 from being applied to the object name. This resulted in confusion,
125 because the library would show the modified name, while the
126 object itself retained its original name.
127 Also: Added multiple window handling to the undo/redo mechanism.
128 Also: Added a window close procedure and a command "config delete"
131 359 v3.6 rev 9 3/13/06
132 A number of fixes to the key binding and function dispatch
133 routines from rev 8: Fixed Finish_Copy mode, fixed handling
134 of ASCII keystrokes in text entry modes, fixed retention of
135 view scale and position after displaying a library page.
136 Fixed error in prohibiting justification action in "normal"
138 Also: A number of fixes to the wrapper window menus for
139 multiple pages: Changed library and page menus to be shared,
140 applied new color, font, and encoding functions to all windows,
141 and fixed the Tk color picker call for the "add new color" menu
144 359 v3.6 rev 8 3/12/06
145 Major overhaul of the key binding and function dispatching
146 mechanisms to accomodate multiple windows.
147 Still to be done: Some menu items (lists of Libraries and
148 Pages, for example) need to be shared among all windows.
149 Need a window close routine. Need a routine to transfer a
150 selection between two windows. Need to handle multiple
151 windows in undo/redo.
152 Also: Fixed a warning message on number of parts that should
153 apply only to library objects, not pages.
155 358 v3.6 rev 7 2/24/06
156 Changed the meaning of CAD_HOME to point to "libdir", such
157 that distributions can set it to something like /usr/share
158 without causing trouble. Changed CAD_HOME to CAD_ROOT so as
159 to prevent it from breaking backward-compatibility.
161 357 v3.6 rev 6 2/23/06
162 Fixed a spurious "Error: end of file" message.
163 Corrected the configure.in once again because Tcl/Tk defines
164 TCL_INCLUDE_SPEC but *not*, stupidly enough, TK_INCLUDE_SPEC.
166 356 v3.6 rev 5 2/21/06
167 Added the Shift-Button-1 bindings to duplicate Button-2
168 functions as an alternative to using "xcircuit -2".
169 Also: Added a flag bit to the line styles representing
172 355 v3.6 rev 4 2/13/06
173 Fixed an error with the LaTeX mode ".tex" output to correctly
174 handle the filename when the extension of the xcircuit file
175 is not the default ".ps". Also, changed the configure script
176 to add some other standard locations to the directory search
177 for tclConfig.sh and tkConfig.sh, and made use of the
178 TCL_INCLUDE_SPEC and TK_INCLUDE_SPEC from those files to set
179 the INC_SPECS definition. Thanks to John Rigg for pointing
180 out these problems with the Debian compile.
181 Also: Fixed a bug that can potentially cause XCircuit to
182 crash when a box is drawn.
184 354 v3.6 rev 3 2/3/06
185 Added a number of "undo" functions for minor things that had
186 been left unimplemented, including linewidth changes, scale
187 changes, style changes, and text justification and option
188 settings (flip invariance, latex mode, etc.). Thanks to Joel
189 Kuusk for pointing out the omissions.
191 353 v3.6 rev 2 1/22/06
192 Updated a number of changes from around version 3.5.3 that
193 broke the non-Tcl-based version of xcircuit (not exhaustively
196 352 v3.6 rev 1 1/20/06
197 Finally got around to correcting the crash backup behavior
198 so that xcircuit ignores crash backup files belonging to an
199 active process (i.e., another xcircuit currently running).
201 351 v3.6 rev 0 1/7/06
202 Restructured variables internally to acommodate multiple
203 layout pages. This is only a start, as currently new
204 windows have no callbacks created.
205 Also: Created an enhanced version of the "Make Matching
206 Symbol" routine, and created a new routine and menu selection
207 "SPICE to Symbol", which creates a symbol for, and link to,
208 a SPICE file containing a subcircuit definition.
209 Also: Longtime error: Corrected the quick screen intersection
210 check to include the schematic bounding box. Otherwise, when
211 only pin and info labels intersect the window, nothing is drawn.
213 Version 3.5 (November 2005 to January 2006)
214 ----------------------------------------------------------------------
215 350 v3.5 rev 5 12/19/05
216 Added command option "object <handle> library [<library>]"
217 where the final optional argument was previously unavailable.
218 If present, the final argument declares a new library for the
219 object. If not present, the number of the library containing
220 the object is returned.
221 Also: Corrected lib/tcl/symbol.tcl where the "%n" was missing
222 from the end of the subcircuit call statement.
224 349 v3.5 rev 4 12/14/05
225 Fixed an error in netlisting which causes the netlister to
226 write "X.." lines in the SPICE output of "trivial" symbols
227 like the "dot" object.
229 348 v3.5 rev 3 12/13/05
230 Fixed another fatal error in file writing due to having a
232 Also: Revised the Wprintf() calls to accept variable
233 argument lists, rewrote the Tcl versions of W*printf() as
234 calls to a script rather than being hard-coded as a specific
235 Tk function. This allows me to rewrite the script equivalent
236 of Wprintf() to print to both the message widget and the
237 console output, so the console now gets a complete record of
238 warning, error, and informational messages produced by
240 Also: Fixed two fatal errors with "Load Dependencies", one
241 which crashed xcircuit due to a typo in the Tcl code for
242 command "page links load", and the other which created an
243 infinite loop if loadfile() failed to load a file inside
244 the recursive call to "page links load".
246 347 v3.5 rev 2 12/8/05
247 Corrected a behavioral error in which xcircuit does not
248 generate netlist output for a symbol containing an info
249 label but no pins. Thanks to Herman Lee for pointing out
251 Also: Corrected a problem in 3.5.1 in which xcircuit
252 changes filenames in a multi-schematic session to match
253 the top-level schematic. It ignored the setting of
254 "dmultiple", and thus would make changes without warning
255 when it generated the crash backup file, for example.
256 Also: Added a widget for managing multi-schematic file
257 writes, with a menu hook from "Files->Write All...".
258 Also: Changed the behavior of "page changes" to include
259 change counts of all descendents. Fixed the Tcl parsing
260 of the "page" command for certain options when a page is
261 specified in the command (e.g., "page 1 fit"). Modified
262 the "page changes" command so that the change count can
263 be altered, thus forcing a page to be recognized as either
264 modified or unmodified.
266 346 v3.5 rev 1 11/21/05
267 Separated the source code into distribution (version 3.4) and
268 development (version 3.5) branches, on the suggestion of
270 Also: Added command option "page changes" which reports the
271 number of changes on a page. Modified some behavior so that
272 starting certain commands like "copy" does not increment the
273 number of changes, so that the command can be canceled without
274 xcircuit thinking that the page has been modified.
275 Also: Added command option "config search file|library <list>"
276 with a colon-separated list <list>, specifying the search order
277 on a specific set of directories. These lists are initially
278 null, and behavior remains the same as before while these lists
279 are null. A non-null search path overrides the default search
280 on the current working directory, and a non-null library search
281 path overrides the search on XCIRCUIT_LIB_DIR and the default
282 install directory path. Modified the library manager to use
284 Also: Allow "library load <filename>" on a regular xcircuit
285 (.ps) file, which has the behavior of loading the objects from
286 the file without loading the pages themselves.
287 Also: Added command option "netlist get -hier" to generate
288 a slash-separated hierarchy using device names and indices.
289 Also: Fixed "netlist goto <name>" to accept the same syntax
290 that is produced by "netlist get -hier", and finished the coding
292 Also: Added command options "netlist select <netname>" and
293 "netlist position <netname>".
294 Also: Changed behavior of the "%" macro so that it also raises
295 the console to the top of the window.
296 Also: Added command option "netlist parse <mode>" (e.g.,
297 "netlist parse spice") that allows some selective parsing from
299 Also: Created a script called "symbol.tcl" that replaces the
300 function of the "Make Matching Symbol" button in the xcircuit
301 menu, with a considerably fancier interface.
302 Also: Modified the command "color set" to accept color names.
304 346 v3.5 rev 0 11/21/05
305 This revision was not posted, but reflects changes made through
306 version 3.4 revision 10 that were removed from the "stable"
307 branch of the distribution.
308 1. Changed the crash backup file name to include the process ID.
309 This is intended to prevent xcircuit process from treating a backup
310 file from another existing xcircuit process as a crash file to be
311 recovered, but the code is not yet finished.
312 2. Enabled creation of parameters on a top-level page, and revised
313 the Tcl "param set" command to handle this case.
314 3. Added a "page links sheet" option to allow querying "sheet A of B".
315 4. Added a "page links load" option to allow symbols to specify which
316 file contains the schematic, and load these prior to writing a netlist.
318 Version 3.4 (August 2005 to November 2005)
319 ----------------------------------------------------------------------
320 345 v3.4 rev 10 11/16/05
321 Removed the problem with automatic generation of pin labels on a
322 symbol during a copy action in the schematic.
323 Also: Added doubly-protected backups to standard file writes.
324 This renames the existing file to filename + tilde ("~") so
325 that the file is not truncated if a crash happens during a
327 Also: Added patch files by Zvezdan Petkovic for proper
328 compilation on OpenBSD.
330 344 v3.4 rev 9 11/14/05
331 Applied (partially) a patch from Larry Doolittle that fixes a
332 pointer bug in the non-Tcl version, and allows compilation of
333 the non-Tcl version on a 64-bit system.
334 Also: Fixed the event mechanism to allow pages to be selected
335 in the page directory (otherwise, pages cannot be swapped).
336 Also: Fixed the Tcl "push" command so that "push selected" now
337 works, and clicking the "push" toolbar button when an object
338 is selected has the expected effect.
339 Also: Fixed the Tcl "label justify" command so that changing
340 vertical justification does not reset the horizontal justfication.
341 Also: Fixed the Tcl-to-xcircuit string conversion so that plain
342 text with spaces is handled as expected (thanks to Mark Martin
343 for pointing out this problem).
345 343 v3.4 rev 8 11/10/05
346 Changed an instance of "regsub" to make it backwardly compatible
347 to Tcl version 8.3; otherwise, xcircuit fails to start up
348 properly when linked to Tcl/Tk 8.3.
350 342 v3.4 rev 7 10/28/05
351 Corrected event handling of schematic/symbol association,
352 which was allowing xcircuit to return to "normal" mode while
353 on a library page, resulting in bizarre behavior, and preventing
354 the schematic/symbol association from being made. Thanks to
355 James Vernon for pointing out the problem.
357 341 v3.4 rev 6 10/25/05
358 Fixed bounding-box calculations on instance loads so that
359 instanced values of expression parameters are handled correctly
360 on file read-in. Also, corrected "resolveparams" to remove
361 cached expression results before writing a page to a file.
362 Also: Added component unnumbering feature (as written, only
363 for devices having the "idx" parameter).
365 340 v3.4 rev 5 10/21/05
366 Added command option "label replace", menu items "Text->
367 Increment" and "Text->Decrement", and key bindings "i" and
368 "I" (respectively) to auto-increment (decrement) numerical
369 values inside text labels. As part of this, I also rewrote
370 and completed the Tcl list-to-XCircuit string conversion
372 Also: Fixed a bug reported by James Vernon due to accessing
373 free'd memory, which appears to be fatal under Cygwin but
376 339 v3.4 rev 4 10/19/05
377 Added command option "library filename" and the ability to
378 save the first file from which a library page was loaded.
379 Also: Added the "page load -replace" and the ability to
380 load/save specific libraries by name. Changed the "File"
381 menu and the popup prompts to allow all of this to be done
382 from the GUI interface.
383 Also: Added more Cygwin handling to the Makefile process,
384 and tested the Cygwin compile and install.
386 338 v3.4 rev 3 10/6/05
387 Some fixes to things broken between versions 3.3 and 3.4:
388 Move "undo" stays on grid. Items being moved during move
389 and copy commands stay with the cursor through pans.
390 Button-3 now does the proper thing for cancellations
393 337 v3.4 rev 2 10/6/05
394 Refined and expanded the hierarchical element handle
395 notation to cover all commands accepting element handles.
396 This will now work for commands such as "element type".
397 Still, only "polygon points", "spline points", and
398 "instance center" commands translate point positions back
401 336 v3.4 rev 1 10/5/05
402 Fixed an error with finishing path edit operations,
403 added "internal units" type to the grid display types,
404 and implemented a (preliminary) hierarchical specification
405 for element handles that can be used with the "polygon
406 points" command to refer point positions back to the
409 335 v3.4 rev 0 10/3/05
410 Substantially revised the interface and input mechanism,
411 removing the remaining methods that were hard-coded to
412 various mouse buttons. Instead, I have implemented the
413 button "Hold" mechanism in a general-purpose manner that
414 also allows definitions of key hold bindings. I removed
415 many of the event modes, including all of the element
416 creation modes available from the GUI tool buttons, as
417 these are more obviously implemented by changing button
418 bindings. This allows the various modes to be switched
419 on and off, and allows wire drawing mode to be just one
420 of the modes rather than the default mode. Adding "wire",
421 "move", and "pan" modes as more-or-less obvious button
422 binding variations. Added ASCII85 and Flate encoding/
423 decoding to the graphic read/write operations. Added
424 a "-2" option to the command-line invocation of xcircuit
425 to set mouse button bindings for 2-button mice.
427 Version 3.3 (September 2004 to July 2005)
428 ----------------------------------------------------------------------
429 334 v3.3 rev 38 9/28/05
430 Corrected multiple-button checking routine to look at
431 the event state only, not the button, as the button
432 entry is changed by some routines. This was preventing
433 the shift-button key bindings from working.
435 333 v3.3 rev 37 9/20/05
436 Corrected SPICE output to generate a line break and
437 continuation "+" character for wraparound lines.
439 332 v3.3 rev 36 9/16/05
440 Fixed an error with netlist output in which parameters are
441 not substituted if xcircuit is run in batch mode.
443 331 v3.3 rev 35 9/15/05
444 Fixed parameter indirection---parameter string was not
445 initialized on library read-in, causing a segfault. Also,
446 changed the behavior of ordered spice lines so that they
447 will be placed after any subcircuits are written, to avoid
448 nesting subcircuits. A syntax "spice@" has been added for
449 lines that really should go in front of everything (except
450 for the special title line #1).
452 330 v3.3 rev 34 9/14/05
453 Implemented "label latex" in the Tcl version, which was
454 missed in the move from Xt to Tcl, and because it is an
455 obscure function, was not noticed for some time. Thanks
456 to Eric West for bringing it to my attention. Also:
457 Applied a patch by Joerg Wunsch that prevents a segfault
458 when rotating a path element.
460 329 v3.3 rev 33 9/8/05
461 Corrected an error in netlisting that would incorrectly
462 identify empty parameter strings as the "idx" parameter.
463 Also, added a "-nowindow" switch to the UNIX command-line
464 invocation to allow xcircuit to be used as a filter (batch
465 process) without creating/displaying an X11 window.
467 328 v3.3 rev 32 9/6/05
468 Changed the handling of netlist writing from symbols, in
469 particular to avoid crashing on encountering unexpected
470 info label contents. Also: Added a "-replace" option to
471 file loads, that causes any object in a file to be
472 overridden by one in a library "master copy". Also: Revised
473 the "library make" command to allow an arbitrary number of
474 empty libraries to be created.
476 327 v3.3 rev 31 8/10/05
477 Fixed a problem with the graphic image handling in which graphic
478 images are saved to the output file if they exist, regardless of
479 whether or not they show up in the output page. Also fixed the
480 PPM reader to handle whitespace and newlines in the header
481 correctly, according to the PPM spec.
482 Also: Added revision information to the "welcome"
483 message in addition to the major.minor version.
484 Also: Some changes to the Makefile to properly handle
485 passing of linker flags in the shared vs. static compiles.
487 326 v3.3 rev 30 7/28/05
488 Fixed a problem with the startup TCL code that causes XCircuit
489 to fail to start if a parse error is found in the user's
490 ~/.Xdefaults file (even a completely unrelated parse error).
491 Thanks to Roland Roberts for the bug report (and, much earlier,
492 Romano Giannetti, although at the time I administered to the
493 symptoms, not the disease.
495 325 v3.3 rev 29 7/22/05
496 And yet more auto-numbering revisions. Ensure clearing of
497 device indices prior to both netlist output and auto-numbering.
498 Also, fixed parseinfo() to correctly handle the mode="" case.
500 324 v3.3 rev 28 7/21/05
501 More fixes to auto-numbering code ($#!@&). Appears to work
502 now for various cases, although I am not satisfied that it
503 covers all situations. One part of the fix forces xcircuit
504 to ignore all fixed component assignments when generating
505 flattened netlists. While this ensures that all component
506 numbers are unique, the output is not what might be expected,
507 especially if there is no hierarchy in the schematic.
508 Probably the parsing for fixed device numbers should *not*
509 be done by parseinfo() but should be handled separately,
510 under the assumption that this handles a limited number of
511 backwardly-compatible cases and that normally it should
512 expect to find "idx" and "class" parameters for each component.
514 323 v3.3 rev 27 7/20/05
515 Revamped the auto-numbering code (again!) to better handle
516 the "class" and "idx" parameter method, and make auto-numbering
517 independent of the netlist format (i.e., SPICE vs. pcb).
518 Device (component) name ("class") was moved from the object
519 structure to the Calllist structure (after all, if the class
520 is parameterized, then an instance may have a different class
521 from the object's default class), and this is generated directly
522 after generating the Calllist structure, since it is independent
523 of the netlist output format.
525 322 v3.3 rev 26 7/19/05
526 Further corrections to revision 20 code. Device classes are
527 now checked and updated for non-pcb devices (e.g., mosfets)
528 when doing autonumbering. Also: parameter setting works
529 for multiple selections; e.g., several transistors can be
530 selected at once and have width or length changed simultaneously
531 for all of them. Thanks to Carsten Thomas for the bug report
534 322 v3.3 rev 25 7/18/05
535 Finally logged into SourceForge and incorporated some of the
536 more recent patches found there. Includes a patch to
537 configure.in by Min Sik Kim, and a patch to fontfile.c by
540 321 v3.3 rev 24 7/17/05
541 Updated keybindings with the new function "Graphic", which
542 otherwise causes the help utility to crash. Thanks to John
543 Rigg for the bug report.
545 320 v3.3 rev 23 7/15/05
546 Added file load and save methods for the "graphic" element,
547 as well as undo/redo operations, a menu item for loading
548 graphic elements, and all essential operations.
550 319 v3.3 rev 22 7/14/05
551 Corrected broken file parsing from revision 21. Image data
552 is now read from "objectread" like everything else inside
555 318 v3.3 rev 21 7/13/05
556 Fixed a bug introduced in revision 20. Also, started adding
557 the new basic element type "graphic", to handle inclusion and
558 placement of arbitrary graphic images. This will eventually
559 replace the buggy and cumbersome "background postscript"
560 rendering via ghostscript.
562 317 v3.3 rev 20 7/8/05
563 Changed the component auto-numbering so that all component
564 values are treated as base-36, to allow handling of non-numeric
565 component numbers. Also, the routine that determines the
566 number to assign will return the smallest unused integer
567 instead of (1 + (largest number found)) so that use of
568 non-numeric values doesn't cause the auto-numbering algorithm
569 to generate strangely large numbers. Also: The auto-numbering
570 algorithm now looks at the parameter "idx" if it cannot find
571 a "pcb"-style info-label. This allows non-pcb parts like
572 transistors in VLSI schematics to be auto-numbered. This is
573 really the preferred way to handle auto-numbering, and all
574 library parts ought to be updated to contain the "idx" parameter.
576 316 v3.3 rev 19 6/28/05
577 Resolved the issue with retaining the stack order of
578 parts through a delete-undo cycle, so that all previous
579 undo records point to the correct parts in the correct
580 order. This eliminates a lot of spurious error messages
581 coming from the undo mechanism.
582 Also: Resolved the issue with polygon/arc/spline/path
583 rotations, where rotations cannot be undone exactly due
584 to accumulating roundoff errors. The solution is simply
585 to treat the rotation as an edit for these element types.
586 Also: Fixed an error with label deletion. Labels that
587 are edited out of existance were not handled properly,
588 an egregious error that was somehow overlooked.
589 Also: Modified console.tcl script to withdraw the
590 console window on a window manager "close" request,
591 rather than exit the application. This bolsters
592 the end-user illusion that the console is a subsidiary
593 window of the layout, rather than vice versa.
595 315 v3.3 rev 18 6/16/05
596 Fixed an error reported by Benoit Bidoggia, in which
597 an attempt to clean up redundant font changes triggers
598 a crash becuase it has been passed the top-level instance
599 instead of NULL (NULL is necessary because this function
600 is called when reading an object definition, at which
601 point there are no instances).
603 314 v3.3 rev 17 6/12/05
604 Fixed another error that showed up in Uwe's schematic,
605 which is that the "test_insideness" algorithm fails if
606 the box is degenerate---which happens for labels that
607 are parameters set to a null string.
609 313 v3.3 rev 16 6/10/05
610 Corrected an error found by Uwe Zimmermann in which
611 xcircuit calls free() on an unallocated space when
612 destroying an object containing an indirect parameter.
613 Also: Added some experimental code replacing the
614 drawing functions with OpenGL. This can be compiled
615 in by passing "--with-opengl" to the "configure"
616 script. However, the code is currently unfinished.
618 312 v3.3 rev 15 5/31/05
619 Added another feature to the change of revision 14:
620 Info labels that have negative sequence numbers (e.g.,
621 "spice-1:", "spice-2:", etc.) will be written after all
622 subcircuit and component output, whereas the usual positive
623 sequenced labels "spice1:", "spice2:", etc., will be written
624 before subcircuit and component output. Each sequenced line
625 is followed by a return character in the output. First and
626 last line of the netlist output is hard-coded (e.g., circuit
627 title and ".end" line in SPICE (see rev 5 comments)).
629 311 v3.3 rev 14 5/27/05
630 Changed behavior of netlist generation to allow (finally!)
631 info labels on a top-level schematic. These labels are
632 written verbatim into the output. Probably needs checks
633 to avoid attempting to process certain embedded escapes
636 310 v3.3 rev 13 4/08/05
637 Fixed an error that missed recalulating the instance
638 bounding box after a text rejustification.
640 309 v3.3 rev 12 3/29/05
641 Changed behavior of the netlist connectivity highlight
642 function in response to a suggestion by Long Yang that
643 pin connection points should be hightlighted, the better
644 to show places where a net does not attach to a pin.
645 Also: Added a feature in response to a comment by John
646 Barry that error messages disappear when netlists are
647 saved if the netlist is not recreated. This feature
648 includes a checkbox in the Tcl wrapper that by default
649 forces regeneration of the netlist on each netlist file
652 IN PROGRESS---Added "idx" to Pagedata; need to separate
653 areastruct.page from the actual printed page number.
654 This simplifies page re-ordering and allows schematic
655 libraries to be "hidden" among the rest of the pages.
656 xobjs.pages and areastruct.page will still refer to the
659 308 v3.3 rev 11 3/12/05
660 Fixed an error, pointed out by Long Yang and Svenn Bjerkem
661 in which xcircuit crashes when descending into an object.
662 This was due to out-of-bounds array addressing, and must
663 have been in the code for some time, but only shows up
664 on some compilers (Solaris?).
666 307 v3.3 rev 10 2/27/05
667 Fixed an error in the flattened netlist output that has
668 probably existed in most revisions of 3.3 to date,
669 where net names are not correctly passed down from
670 parent cell to child cell. Thanks to Mark Chang for
671 pointing out the error.
672 Also: Fixed a bug in the selection mechanism where
673 the selection is not NULLed prior to return from the
674 calling routine if no selections are found.
676 306 v3.3 rev 9 2/5/05
677 More changes to the selection mechanism. Selection
678 mechanism sorts polygons (wires) according to
679 distance of the nearest edit point. Previous
680 selection is always kept and compared against
681 current selection. "pick" is only advanced if the
682 selections are the same. Pointer position when
683 selecting a polygon to edit is restored from the
684 warped position after a button-3 cancel function.
685 Also: Added all edit functions to the "undo"
686 mechanism, as well as label creation.
688 305 v3.3 rev 8 2/4/05
689 Corrected several mistakes in the selection mechanism
690 that left pending (unfinished) events on the stack.
691 Also: Corrected a problem from rev. 7 that did not
692 register unselection events (key "x") with the undo
695 304 v3.3 rev 7 2/1/05
696 Revamped the selection mechanism (finally) to get
697 rid of the cumbersome "click to select or reject"
698 method. The new method picks one element, and
699 cycles through objects so that a different object
700 is selected on each button press, if several elements
701 are found at the pointer position. This method would
702 be equally unwieldy save for a change in the way
703 object instances are selected---the selection routine
704 recursively searches for elements inside objects that
705 are close to the pointer position (albeit with a wider
706 capture range than on the top level). This prevents
707 selecting an object instance with lots of white space
708 if the pointer is in the middle of the white space
709 (such as a frame or border object).
710 Also: Corrected the "Make Matching Symbol" callback.
711 Thanks to Mark Chang for pointing out the error.
713 303 v3.3 rev 6 1/4/05
714 Made additions to the "pcbout.tcl" script to support
715 SMD integrated circuits, and resistors and capacitors
716 (both chip and axial). "pkg" parameter added to the
717 Resistor and Capacitor parts in the "analoglib2"
720 302 v3.3 rev 5 12/16/04
721 Corrected a fatal error in library copies if no valid
722 object is selected. Corrected a compile error (C++-like
723 syntax fails on many compilers). Added option to print
724 or not to print the ".end" statement at the end of a
727 301 v3.3 rev 4 12/10/04
728 Corrected an error that allows "temp label" pins to be
729 assigned the same name for different nets. The number
730 following "int" or "ext" on temp labels is now changed
731 to match the net number when referencing the label name,
732 if it is found to be different.
733 Also: Corrected another bug that causes a crash when
734 copying an edited parameter back to an object. The
735 data record for the PARAM_END structure was not zeroed.
736 This was okay previously because the data record was
739 300 v3.3 rev 3 12/6/04
740 Corrected a problem in which drawn subcircuits and
741 subcircuits declared with an "X.." in the info label
742 will share index numbers, by forcing SPICE output to
743 generate a devname of "X" for each drawn subcircuit
745 Also: Changed the behavior so that device numbering
746 starts at zero, not one. Otherwise, if a device is
747 numbered zero on the drawing (e.g., by having the index
748 number entered by hand), xcircuit will generate a spurious
749 "duplicate part" warning.
751 299 v3.3 rev 2 12/3/04
752 Fixed an error (apparently from 3.3 rev 0) that caused
753 parameters to become hosed if changed (also causes program
755 Also: Added handling of X11 button4 and button5 events for
756 (potential) binding to mouse scroll wheel motion.
758 298 v3.3 rev 1 10/8/04
759 Changed the behavior of the PCB netlist generator to be
760 more intelligent about finding the bottom of the
761 layout hierarchy. Also, corrected the netlist generator
762 where it allowed a global net to be merged into a local
765 297 v3.3 rev 0 9/28/04
766 Replaced the "hspice" directory with Conrad Ziesler's
767 "spiceparser". The use of routine AddNTermModule() has
768 broken the spice input for now, although once fixed, the
769 results should be much improved.
770 Also, changed the handling of expression parameters so
771 that expression parameter results may be numeric, and
772 evaluated results are saved in the PostScript output as
773 instance values. When traversing the hierarchy during
774 redisplay, commands invoking a "selected" element will
775 pick up the object instance being rendered. The
776 combination of these changes allows the implementation
777 of several useful features such as counter-rotation and
778 displaying the name of an object within the object.
780 Version 3.2 (January 2004 to September 2004)
781 ----------------------------------------------------------------------
782 296 v3.2 rev 27 9/17/04
783 Quick fix to allow the non-Tcl code to compile; the
784 experimental "ngspice" code contains numerous Tcl references,
785 and although it does not depend on Tcl in principle, it is
786 easier just to disable the code for the non-Tcl compile.
787 It will not be missed.
788 Also: Changed the startup method from the hacked-up
789 redirection of $HOME to a standalone "wish"-like executable
790 that sets up "wish" to read in the .xcircuitrc file as its
793 295 v3.2 rev 26 9/7/04
794 Changes based on comments from Dale Grover for correct
795 compilation/linking/installing under "Fink" on Mac OS-X
798 294 v3.2 rev 25 9/6/04
799 Fixed the wrapper code to ignore Tk's standard binding for
800 the Tab and Shift-Tab key events during label text input.
801 Otherwise, the window loses focus, which is an annoyance.
803 293 v3.2 rev 24 8/25/04
804 One major fix to the netlist code to insist that "updatenets"
805 is never run on a symbol. Otherwise, a circuit that has a
806 symbol that is not used anywhere will generate an error when
807 netlisting, resulting in no netlist.
808 Also, many minor fixes/enhancements to the TCL command-line
809 functions, mainly to support scripting. There is now a
810 script called "sue_xc.tcl" that supports the generation of
811 schematics from ".sue" files (in particular, this is to
812 allow xcircuit support for the IIT standard cell library;
813 see http://www.ece.iit.edu/~vlsi/scells/).
815 292 v3.2 rev 23 8/18/04
816 Rather important fix from back in revision 19, in which routine
817 "pointtonet" is supposed to merge crossing wires if they cross
818 on top of a subcell port. This is the method used to connect
819 crossing wires with the "dot" symbol, so it is rather important.
821 291 v3.2 rev 22 6/21/04
822 Added capability to the parameter selection mechanism to handle
823 Tcl-expression parameters of the form "lindex {list} <index>".
824 Such expressions will generate a listbox-type popup window in
825 which the user is prompted to select one of the choices in the
826 list. The parameter will be replaced by the same expression
827 but with <index> changed to reflect the index position of the
828 chosen parameter value. The way to make such parameters in the
829 first place is "parameter make expression <name> {lindex {list}
830 <index>}". To change the expression itself instead of selecting
831 a choice from the list, use "parameter set" instead of the GUI
832 interface. Thanks to Paul Surgeon for suggesting this method.
834 289 v3.2 rev 21 5/58/04
835 More quick fixes: Makefile error installing .tcl and .lps files
836 due to an error in Makefile.am; library object import now checks
837 library version and does not attempt to import libraries that may
838 be missing a dependency list. Distribution libraries updated to
839 make sure all of them will work with the library import function.
840 Tcl function "library <name> <options...>" changed to accept
841 "<name>" when library name is "Library: <name>". This makes more
842 sense, as it allows one to do, for instance:
843 "library load asg_spice"
844 "library asg_spice save asg_spice_new"
846 288 v3.2 rev 20 5/26/04
847 Quick fix to a bug pointed out by Petter Larsson, which must have
848 been in the code for some time, which checks for names incompatible
849 with the PostScript interpreter but then fails to make the change.
850 Also, cleaned out some source code copies left over from bus
851 representation implementation.
853 287 v3.2 rev 19 5/20/04
854 Finally got the bus notation handling into enough of a working
855 condition that I dare to post the distribution. In addition to
856 basic fixes, improvements include handling of buses and partial
857 buses with the "connectivity" function, and in particular,
858 handling of instance-specific labels throughout the netlist
859 (previously was only applicable to the netlist output). The
860 instance-specific labels allow the new "tap" object to work.
861 Added the tutorial file "buses.ps" to the examples directory.
863 286 v3.2 rev 18 5/6/04
864 Removed the requirement that the GUI must be in place prior
865 to startup. XCircuit can be embedded directly in another
866 application with or without its own GUI. Without the GUI,
867 it is necessary to create (and map) a "simple" window
868 (e.g., "simple .mytest.draw -bg white -width 700 -height 400"),
869 and then set the Tcl array variable "XCOps(window)" to be the
870 Tk pathname of this window. This creates a window into which
871 things can be drawn by Tcl command-line commands. To enable
872 button and key actions, it is necessary to do:
874 bind .mywin.draw <ButtonPress> {xcircuit::standardaction %b down %s}
875 bind .mywin.draw <ButtonRelease> {xcircuit::standardaction %b up %s}
876 bind .mywin.draw <KeyPress> {xcircuit::standardaction %k key %s}
877 bind .mywin.draw <Enter> {focus %W}
879 from the Tcl command line. It is also possible to rewrite the
880 wrapper script so that the whole GUI is present but rooted in a
881 location different from ".xcircuit". In that case, set the
882 variable "XCOps(top)" to the top-level window name before
883 invoking xcircuit::start. In either case, one must run "wish"
884 first, then load "xcircuit.so", create the appropriate Tk window
885 or windows, set the appropriate XCOps() variable, then do
888 Handling of bus notation is still unfinished in this (unreleased)
889 version, and probably breaks the schematic capture altogether.
890 This will be fixed prior to an actual distribution release.
892 285 v3.2 rev 17 4/14/04
893 Major enhancement: Handling of bus notation in netlists!
894 Also, Prohibit parameters from shadowing PostScript reserved
895 names and definitions in xcircps2.pro, as is done for object
896 names. Also, finally found and excised the bug that was
897 preventing correct comparison between object definitions on
898 read-in, which was introduced along with the parameter type-
899 promotion code. Fixed another bug which prevented
900 parameterizing position. And, fixed a bug which prevented
901 disabling flip invariance on text from the menu in the TCL
902 version. Also: made more convenient constructor/destructor
903 functions in elements.c, for general purpose use; these are
904 called from tclxcircuit.c. Also: Reimplemented "strdup"
905 as "Tcl_Strdup" in the TCL version; otherwise, there are
906 places where memory is allocated by strdup, bypassing TCL's
907 memory allocation, but free'd by Tcl_Free(). Also: modified
908 the library manager "library import" routine to load any
909 library instances of an object in addition to the object
912 284 v3.2 rev 15 3/15/04
913 Reinstated colors and other parameters as XDefaults-style options
914 in the TCL version using the Tk_GetOption() command. Changed
915 autoconf so that the TCL version is compiled by default (unless
916 not found, or explicitly disabled). Initial work on bus
919 283 v3.2 rev 14 3/03/04
920 Added a library manager (often requested) for handling large
921 lists of parts. Allows objects to be imported from libraries
924 282 v3.2 rev 13 3/03/04
925 Changed the TCL scripts and shell startup file so that the
926 README directions for a test execution prior to install actually
927 work as advertised. Also, finally found a way to force automake
928 to compile the tcl version with just "make" and "make install",
929 thus hopefully eliminating the greatest source of compile-time
930 woes. Re-implemented the .so file loading so that the reported
931 error is the real root cause error, not "file not found". Also:
932 removed Imakefile and all references to it. Also: Added a
933 menu item for the PCB layout generation. This is not yet
936 281 v3.2 rev 12 3/01/04
937 A couple of fixes to bugs reported by Brek Miller. 1) Library
938 copy did not copy parameters correctly (missed both the "key"
939 and "which" entries), and 2) The object comparison mechanism
940 failed to correctly compare objects with parameters due to a
943 280 v3.2 rev 11 2/27/04
944 Some changes to command functions and netlist output. Added
945 file lib/tcl/pcbout.tcl, a script that converts an xcircuit
946 schematic into a preliminary PCB layout. This is very spare
947 at the moment, to say the least; for instance, it only
948 supports 7400-series devices. But it's mostly proof-of-
951 279 v3.2 rev 10 2/26/04
952 Some Makefile/configure changes, esp. for systems like Debian
953 that do not find the Tcl/Tk include files. Also, rearranged
954 the menus so that "linewidth" commands (global and wire line-
955 width) are more obviously placed ("wire linewidth" duplicates
956 the "element border" entry). Thanks to Forrest Cook for this
957 suggestion. Also, rewrote the library load command in
958 xcircuit.tcl so that it prints the actual root cause error
959 instead of complaining about "file not found". Also, rewrote
960 and extended the "help" window in Tcl, making it entirely
961 script-driven from Tcl, and adding help text for each function.
962 This required adding Tcl command "bindkey" variant with no
963 arguments, which returns a list of all functions which can be
964 bound, and "bindkey -func <function>", which definitively
965 asserts that the argument is a function, not a key (because,
966 e.g., "Delete" is both a key name and a function). Also,
967 made XCF_Prompt (key "%") execute xcircuit::raiseconsole in
968 the TCL version (previously undefined in TCL).
970 278 v3.2 rev 9 2/20/04
971 Greatly expanded the undo mechanism, which now covers most of
972 the major xcircuit functions. This is definitely "beta test"
973 code. Also, renamed a number of functions and definitions to
974 be clear about the difference between an element and an
975 object (this confusion was left over from the really early
976 days of the program).
978 277 v3.2 rev 8 2/11/04
979 Improved the ghostscript rendering mechanism so that it can
980 handle (non-encapsulated) pages output from ghostview (which
981 includes some global state-setting commands). Also, greatly
982 improved the rendering by backgrounding the process. Xcircuit
983 draws a blank background and continues until ghostscript
984 reports that the page is finished, at which point the page
985 gets redrawn with the background.
987 276 v3.2 rev 7 2/6/04
988 Some fixes to the ASG and hspice routines; automake now checks
989 for g++-3 <stl> vs. the older <stl.h> header file and adjusts
990 accordingly. The hspice parser no longer produces files
991 netlist.sp and netlist-flat.sp. Compilation of ASG is now
992 disabled by default (and will be until it's stable. . .), and
993 requires "configure --enable-asg" to enable the module.
995 275 v3.2 rev 6 2/5/04
996 Added the ASG and hspice parser modules back in, with additions
997 to the master Makefile and configure script to support compiling
998 both modules into the xcircuit Tcl shared object library
1001 274 v3.2 rev 5 1/29/04
1002 There was a 3.2 previously for the ASG implementation. This is
1003 being done again from scratch, but I'm continuing the revision
1004 numbers where I left off, at 5. Prior to adding ASG back in,
1005 version 3.2 is in the process of implementing the "comprehensive
1006 undo" function by creating the framework for running undo/redo
1007 events and recasting the "delete" function into this framework.
1008 More to be added in coming revisions.
1010 Version 3.1 (January 2003 to January 2004)
1011 ----------------------------------------------------------------------
1012 273 v3.1 rev 38 1/28/04
1013 Removed #ifdef SCHEMA from everything. This should have been
1014 done long ago. . . Also, removed %%PageBoundingBox from the
1015 output for encapsulated PostScript files, as this appears to
1016 screw up output when including the drawing in a document, such
1017 as a LaTeX file. Changed the behavior of the output dialog box
1018 such that the page label is checked before writing, and the page
1019 label is set to the filename if the label is still "Page #"
1020 at the time the label is set. Fixed the behavior of selecting
1021 fill and border styles, especially a critical error with fill
1022 styles that would allow polygons to acquire an invalid state,
1023 causing netlist problems and/or unmatching PostScript output.
1024 Changed the selection behavior such that elements are not
1025 unselected after border/fill/color changes. Fixed the behavior
1026 of network connectivity highlighting to work with multi-page
1027 schematics. Changed some event handling to let most button-
1028 release events act on the mouse position on the previous
1029 button press (this works for drawing wires and editing polygons,
1030 but not for copying elements). Added "%N" escape to the
1031 tag callback mechanism to allow all arguments to be passed to
1032 the callback procedure as a list. Fixed marking of "Closed"
1033 checkbox in the Tcl "Border" menu.
1035 272 v3.1 rev 37 1/23/04
1036 Preparing for XCircuit 3.2 (ASG).
1037 Revised some of the code structure of netlist.c, added routines
1038 NameToPosition(), from the ASG code (xcircuit-3.2), and
1039 PortToPosition(), which is a variant thereof. Added the routine
1040 ratsnest(), called by the command "netlist ratsnest" in the
1041 Tcl console, which demonstrates some of the features required
1042 for true ASG. Also: removes deleted items from the netlist
1043 piecemeal, so that an ASG system can operate on an invalidated
1044 netlist without encountering dereferenced pointers, or elements
1045 which are not on the page they claim to be on.
1046 Also: Fixed another bug similar to that in #271 where no space
1047 was printed after the closing "}" in multipart strings appearing
1048 in parameters, which equally bad results.
1050 271 v3.1 rev 36 1/21/04
1051 Added support for schematics spread over multiple pages. The
1052 method is that all top-level pages that have the same page
1053 label (object name) will be considered part of the same
1054 schematic. One of the pages is considered the "master", or
1055 "primary" page, and keeps the netlist/portlist/calllist for
1056 all the pages. The other pages are the "slave" or "secondary"
1057 pages, and refer to the master page for netlist information.
1058 Also: Fixed a couple of bugs resulting from messing with
1059 the parameter formats, namely 1) put back the check for
1060 equal "which" value in varpcheck and varfcheck, and 2) added
1061 a space after printing a null-string "()" parameter value.
1063 270 v3.1 rev 35 1/16/04
1064 Modified and completed support for expressions in parameters.
1065 In the TCL version, this supports all TCL expressions. In the
1066 non-TCL version, it allows simple character strings to be used
1067 in parameters. The expressions are not translated into
1068 PostScript; the PostScript output records the expression, which
1069 is unused, and the last evaluated result, which is taken to be
1070 the parameter value. Cleaned up more code for numeric and
1071 indirect parameters, and added TCL options "-verbatim" and
1072 "-indirect" to the "parameter" command to facilitate handling
1073 indirect and expression parameters.
1075 269 v3.1 rev 34 1/9/04
1076 Cleaned up and finished most of the stuff having to do with
1077 numeric parameters, parameters promoted from numeric to string
1078 types, parameters on a top-level page, and indirectly-referenced
1079 parameters. Also: Tcl variables moved into a single array.
1080 Also: Some support for arithmetic expressions in parameters.
1081 Very rudimentary at present.
1083 268 v3.1 rev 33 12/16/03
1084 Fixed the text justification routine in TCL ("label justify ...").
1085 Thanks to Petter Larsson for the bug report. Fixed two problems
1086 with "page clear"---one reported by Brek Miller, showing that
1087 the free_single() routine was removing parameters from the
1088 referenced object, not the instance, and one reported by Joel
1089 Kuusk, where the Tcl "clear page" command allows clearing a page
1090 while editing an object instance in the hierarchy of that page,
1091 causing an immediate crash. Finally, corrected prototypes.h
1092 for routines setjustbit() and setpinjustbit() for the non-Tcl
1093 compile, left in an improper state in revision 32. Thanks to
1094 Dave Armbruster for this bug report.
1096 267 v3.1 rev 32 12/10/03
1097 Fixes to the linewidth/border width changing from the menu in the
1098 TCL version, as pointed out by Rob Olsen. Also, on suggestion from
1099 Makram Mansour, added LaTeX label handling.
1101 266 v3.1 rev 31 12/08/03
1102 Three fixes from bug reports by Bliss Carkhuff: "page save" returns
1103 TCL_OK rather than an undefined value, parameter entry requires
1104 exact match to keywords to get text escapes such as "underline", and
1105 substring parameter creation corrected for creating parameters in
1106 the middle of a label. Page save error also pointed out by Mark
1107 Martin, and Rob Olsen who additionally noted the additional error
1108 in linewidth selection (which has also been fixed).
1110 265 v3.1 rev 30 12/01/03
1111 Made another change to the output such that all objects used on
1112 all pages are output first, inside a PostScript DSC block
1113 "DocumentSetup", followed by all the pages. This modification
1114 allows viewers like ghostview to figure out that these objects
1115 may be used by any page, and prevents errors that occur when
1116 skipping pages forwards or backwards in the viewer.
1118 264 v3.1 rev 29 11/26/03
1119 In response to Romano Giannetti, fixed the bounding box
1120 routines so that EPS files are handled the way they used to be.
1121 The only thing required was to set the overall bounding box to
1122 remove the 1" margins; the page bounding boxes remain the same,
1123 and ghostscript, ghostview, and EPS insertions into LaTeX
1124 documents all appear to be handled correctly. Also, added the
1125 "override" commands to the TCL interface, although to match the
1126 rest of the TCL syntax, these have been changed to "library
1127 override", "loadfont override", etc.
1129 263 v3.1 rev 28 11/19/03
1130 Changed the way XCircuit handles embedded bounding boxes
1131 and does page scaling and translation in the output.
1132 Removed the "offsets" comment line from the output and
1133 changed it to a PostScript translation, which means that
1134 all the positional values in the PostScript output on a
1135 top-level page are all in xcircuit internal units, without
1136 offset, and are therefore invariant with scale, page size,
1137 etc. When an embedded bounding box is present, xcircuit
1138 translates the output such that the bounding box is centered
1139 on the page. If "auto-scale" is selected, then the output
1140 is scaled such that the bounding box fits centered on the
1141 page with 1" margins minimum.
1143 262 v3.1 rev 27 11/16/03
1144 Extended the parameter method to include parameters passed
1145 inherited by an object instance from its parent. Fixed the
1146 "make object" method such that parameters are copied into the
1147 new object (as yet, the new object does not correctly inherit
1148 the parameter from the parent). Added preliminary support
1149 for promoting numerical parameters to strings.
1151 261 v3.1 rev 26 11/11/03
1152 More fixes and extensions related to parameter key:value
1153 pairs. Added a popup window in the Tcl version for
1154 editing substring parameters of an object instance,
1155 including functions for formatting ASCII strings from
1156 string parameters and vice versa. Added a function
1157 for the "Add New Color" button in the Tcl version, which
1158 was missing. Command syntax "color <idx>" changed to
1159 "color set <idx>" and option "color add <name>" added.
1161 260 v3.1 rev 25 11/6/02
1162 Changed parameter handling to a key:value pair model.
1163 Revised built-in libraries to take advantage of this
1164 method, using keys like "value", "units", "length",
1165 "width", etc. Expanded and revised the "parameter"
1166 command in Tcl-based XCircuit to provide the key:value
1167 information, as well as providing parameter information
1168 down one level in the hierarchy for an object instance
1169 (using the key "-forward" as the last argument to the
1170 "parameter" command). Added command option "type" to
1171 list parameter types, or to list parameters by type.
1172 Finished code for removing parameters.
1174 259 v3.1 rev 24 9/19/03
1175 Added feature (macro "V" key) to make a library virtual
1176 instance from an object selected on a page. This allows
1177 users to make temporary copies of parameterized (or
1178 rotated, or flipped) objects for quick retrieval.
1179 Several corrections: Xcircuit now checks for symbols
1180 associated with schematics and saves them, even if the
1181 symbols are not used in any schematic. This prevents
1182 associations from being lost after a save/quit/load
1183 cycle in an unfinished schematic. Also: Snap and
1184 polygon edit will invalidate the netlist. Also: "Make
1185 matching symbol" reports an error if the schematic page
1186 has an invalid name.
1188 258 v3.1 rev 23 9/15/03
1189 Corrected revision 22, which duplicated the NameToObject
1190 routine by mistake. Also added TCL wrapper key bindings
1191 for function keys "Page Up" and "Page Down" to increment
1192 or decrement the page number (helps with large numbers of
1195 257 v3.1 rev 22 9/10/03
1196 Moved routine NameToObject from tclxcircuit.c to schema.c,
1197 since it is used by the non-Tcl based code and prevents
1198 compiling the non-Tcl version. Thanks to Swee-Ann Teo for
1199 pointing out the error.
1201 256 v3.1 rev 21 9/5/03
1202 Fixed a problem with the Tcl calls to the zoom functions,
1203 which were passing a NULL event structure. Thanks to Ed
1204 Casas for pointing out this error. Also: Fixed the
1205 Makefile.am file for compilation under Cygwin, which was
1206 presented the wrong name for menudep.o. Thanks to Carlos
1207 Davila for pointing out this error.
1209 255 v3.1 rev 20 9/4/03
1210 Changed key and button handling in Tcl to work using the Tk
1211 "bind" function, with the usual behavior being bound to the
1212 "standardaction" command. Standard actions can be rebound
1213 using the xcircuit "bindkey" command, or keys can be bound
1214 to Tcl procedures using the Tk "bind" command.
1216 254 v3.1 rev 19 8/12/03
1217 Required reconfiguring without Tcl once to generate the
1218 "Makefile.in" in the Xw directory; otherwise, automake 1.7
1219 becomes a requirement.
1221 253 v3.1 rev 18 8/6/03
1222 A fix to the output, correcting the page numbering in the
1223 PostScript page headers. The incorrect numbering can cause
1224 some printers to lock up. . .
1226 252 v3.1 rev 17 7/14/03
1227 Thanks to Ted Roth for fixing my rather too-hasty fix of
1228 revision 16. Also: Some fixes to the autoconf script (also
1229 from Ted Roth), and autoconf script updated to work with the
1230 latest versions of autoconf/automake/aclocal.
1232 251 v3.1 rev 16 7/08/03
1233 Fix to "x" and "y" output for .sim format---thanks to Kath Shih
1234 for pointing out this error.
1236 250 v3.1 rev 14 5/05/03
1237 Incorporated a patch from Max Horn to remove all references
1238 to "malloc.h" from the headers, and fix the configuration file
1239 for Mac OS-X compilation.
1241 249 v3.1 rev 13 4/29/03
1242 Fixed a problem due to automatic search for schematics which
1243 prevents a single page from being saved. The output window
1244 now shows both "schematics" and "subcircuits" with checkboxes;
1245 pushing "schematics" unlinks top-level schematics, and pushing
1246 "subcircuits" can prevent subcircuits from being saved along
1247 with the file. In either case, the filename is blanked out
1248 so the user will not mistakenly overwrite the original file
1249 with a truncated one. In conjunction with this method, the
1250 Tcl "page links" command has been extended to include the
1251 options "independent", "dependent", "total", "pagedependent",
1252 and "all". Eventually, I expect to add an additional option
1253 "list" to list page names instead of simply enumerating them.
1254 Thanks to Mark Jones for pointing out this error.
1256 248 v3.1 rev 12 4/14/03
1257 Fixed the PostScript background rendering, which was only
1258 broken because of a broken implementation of ghostscript
1261 247 v3.1 rev 10 3/21/03
1262 Replaced TkCon with the version used with magic, fixing a
1263 minor issue with handling backslash escape sequences.
1265 246 v3.1 rev 9 2/26/03
1266 Fixed the install for revision 8, which failed to run the
1267 xcircuit.tcl script through the m4 preprocessor. Also, on
1268 recommendation of Mark Jones, added a warning message when
1269 pins exist on a symbol which do not exist in the associated
1272 245 v3.1 rev 8 2/23/03
1273 Resolved numerous issues with cross-application methods.
1274 Overloaded the "label" Tcl procedure to accept both xcircuit
1275 and Tcl syntax, and removed the "bgerror.tcl" file.
1276 Added procedures for calling netgen, IRSIM, and magic while
1279 244 v3.1 rev 5 2/19/03
1280 Fixed (for the third time(!)) occurrences of "getline" which
1281 should have been changed to "setline". Fixed the toolbar
1282 widget so that it recomputes its width when the window size
1283 changes, and so that it does not squeeze the height of the
1286 243 v3.1 rev 4 2/12/03
1287 Added handling of "va_copy" to the configuration script for
1288 systems which do not define it. Also: Added "%x" and "%y"
1289 escapes to the info label syntax, for writing positional
1290 information to the output (helps LVS programs like "netgen"
1291 trace back errors to the schematic). Split the "Manifest"
1292 file into "CHANGES" and "TODO" and started adding revision
1293 numbers to the change log entries to match the revision
1294 number on the website download page.
1296 242 v3.1 rev 3 2/10/03
1297 Added Tcl handling of the string parameter insertion via a
1300 241 v3.1 rev 2 2/04/03
1301 Traced the "No per display information" error to use of an Xt
1302 function (XtDispatchEvent()); replaced with Tk_HandleEvent().
1304 240 v3.1 rev 1 2/03/03
1305 Fixed numerous problems with the Tcl-based version, and added
1306 several missing functions (such as the select filter, and
1307 handling keystroke <return> in the filelist widget).
1309 239 v3.1 rev 0 1/24/03
1310 Finished preliminary version of Tcl-based xcircuit. Relocated
1311 runtime files back to (default) "/usr/local/lib" (instead of
1312 autoconf's default $datadir "/usr/local/share"). Threw in
1313 tkcon.tcl for compatibility with magic/irsim/netgen and recast
1314 fprintf() as macro Fprintf(), which calls "tcl_printf()" in
1315 the Tcl version and "fprintf()" in the other versions. Added
1316 command-line function "-exec <file>" to the Tcl version for
1317 running in batch mode (or alternately, just to bypass the
1318 default startup file).
1320 Version 3.0 (June 2002 to January 2003)
1321 ----------------------------------------------------------------------
1323 On advice from Zhengdao Wang, changed the postscript header to
1324 draw "opaque" styles as solid color, not stipples. All fill
1325 styles except for white (empty) are made opaque by default and
1326 fill style white is made transparent by default. The "opaque"
1327 menu button can set the non-default behavior.
1328 Also: Added a file loading command to the python and
1329 non-interpreter command-line interfaces.
1332 Cleaned up some code with respect to 64-bit pointers, checking
1333 for the size of pointers in "configure", and setting the proper
1334 integer type for pointers in xcircuit.h. Should compile cleanly
1335 on 64-bit systems without the "-taso" switch (which doesn't
1336 exist for Linux/alpha systems).
1339 Added pixmap image handling to Tk/Tcl, and removed SWIG from
1340 the "make" process. Configure option "--enable-wrapper" changed
1341 to "--enable-tcl", "make wrapper" changed to "make tcl", and
1342 "make install-wrapper" changed to "make install-tcl". Added
1343 the toolbar and associated functions. Added "netlist" function
1344 to Tcl for generic netlist handling. Fixed numerous errors in
1345 the Tcl callbacks. Tcl functionality is now about 95% of what
1346 it should be. Non-Tcl version has not been affected by these
1350 Several bug fixes for bugs reported by Massimo Gaspari (see
1354 Fixed bug in the Python "bind" command such that keys not
1355 bound to macros return an xcircuit error, not a Python error
1356 (bug reported by Bob Paddock). Also fixed a bug reported by
1357 Petter Larsson <f97-pla@nada.kth.se> in which the result of
1358 getenv("XCIRCUIT_LIB_DIR") is not check for a NULL value
1359 when executed from (any) interpreter.
1362 Several bug fixes for parameter-functionality bugs found by
1363 Massimo Gaspari <gaspari@tin.it>. Changes are relatively minor
1364 and not worth inducing a version number change.
1367 Abount 90% of the Tcl functionality necessary to duplicate all
1368 existing functions has been completed. This makes the Tcl-wrapped
1369 version useable, but experimental, and a bit crash-prone. The
1370 command set it written up in "README.Tcl". Compiling involves
1371 doing "configure --enable-wrapper" followed by "make wrapper"
1372 and "make install-wrapper". Otherwise, the standard "configure"
1373 and "make" results in the standard version of xcircuit.
1375 Version 2.5 (November 2001 to June 2002)
1376 ----------------------------------------------------------------------
1378 Started on the Tcl-wrapped version of XCircuit. Currently
1379 this is just a big mess. I am posting it to the distribution
1380 with all the wrapper stuff disabled and no instructions on how
1381 to compile it, mainly so I don't have to keep making sure that
1382 bug fixes are reflected in both versions.
1385 Revised the CvtStringToPixel so that it satisfies (or should
1386 satisfy) all X servers doing 8 bpp, even those that return
1387 bogus values on XLookupColor(). Previous "fix" had disabled
1388 private colormap installation.
1389 Also: Improved "gettext.py" to deal with tabs and page breaks,
1390 and takes optional values for maximum lines per page and font
1391 to use. Fixed a bug in "pagebbox.py" and also a related bug
1392 which clipped color values to size short when set by "setattr"
1396 Fixed a bug in which XCIRCUIT_LIB_DIR must be defined or the
1397 program will crash. Also: Added text split and join functions,
1398 and text "up" and "down", mapped to the Up and Down arrow keys.
1401 Changed the format of the output of the Python netlist() function
1402 to better facilitate flattened netlists. Nets are passed by
1403 number and associated to names in a separate dictionary. This
1404 allows names to be changed (as required when flattening) without
1405 altering the netlist. Otherwise, it becomes a big mess. The
1406 new format ends up being smaller than the original. "flatspice.py"
1407 has not yet been completed, though.
1410 Repaired some problems with the Python netlist() function, and
1411 wrote a working version of "spice.py". Will replace the
1412 internal functions when the "sim" and "pcb" scripts are written.
1415 Various changes in response to bug reports: Fixed library and
1416 page object exchange, PCB infolabels on quad parts. Seg fault
1417 due to missing code in "unmakenumericalp" has been worked around,
1418 but the routine still needs to be finished. Patched filelist.c
1419 to query result of stat(). Fixed error with XQueryColors in
1420 8-bit pseudocolor mode.
1423 Got rid of the "passive grab" action, which seems to be the root
1424 cause of the video screen blanking on some systems. Eventually
1425 discovered that "XtAddEventHandler" doesn't work for ButtonMotion
1426 if it's called AFTER the button has already been pressed. With
1427 this fact in hand, it was easy to avoid all the Add/Remove calls
1428 and just add the event handler once, at the beginning.
1431 Replaced the top-level object with a top-level instance, with
1432 all the ensuing fallout. The resulting code is much cleaner.
1435 Fixed the problem of parts being auto-deleted by the netlister
1436 pointed out by Jeremy Brown. Also: Fixed a problem found by
1437 Bob Paddock in which label segments are miscounted on output;
1438 apparently, this only happens using the "gettext" script.
1441 Changed library structure so that every object gets an instance.
1442 This precipitated many code changes. Along the way I fixed up
1443 a bunch of minor errors, too many to list. Bounding boxes in
1444 the PostScript output ("bbox" entry) have become obsolete,
1445 except for font files, where the bounding box is not necessarily
1446 coincident with its contents.
1449 Added key binding for "pin global" (key "G"), which was
1450 documented but was not actually in the program. Thanks to
1451 Jeremy Brown (jhbrown@ai.mit.edu) for pointing this out.
1452 Also: On another suggestion of Jeremy's, added a scrollbar
1453 to the help window. Along the same lines, cleaned up the
1454 "file read" window so that the pixmap is never shorter than
1455 the viewport. Fixed a small error with PostScript background
1456 rendering---newline before "end_insert" avoids problems with
1457 binary-format PostScript. Changed default key binding for
1458 BackSpace to equal behavior of Delete. This seems to be what
1459 most people expect and/or want as default behavior.
1462 Implemented instance-defined bounding boxes and cleaned up a
1463 lot of stuff related to bounding boxes. This was needed to
1464 properly implement the new "libinst" method described below.
1465 Also: Altered the connectivity highlight function so that it
1466 retains the number of the highlighted net in the netlist, and
1467 continues to display the highlight through page changes and
1468 expose events. Fixed a bug in the PCB netlister.
1471 Fixed a few minor inconsistencies related to color allocation.
1472 Also: Implemented a "select previous" command, an undo command
1473 for selections. Third mouse button function ("Escape") will
1474 unselect anything that is selected, but if nothing is selected,
1475 it will retrieve the last selection. Page/object changes
1476 destroy the previous selection record. Also: Added intanced
1477 scale and rotation values to the "libinst" record (values are
1478 optional). This allows, for instance, the "arrowhead90" object
1479 to be replaced by an instance of the original "arrowhead"
1480 rotated by 90 degrees. All libraries updated to include
1481 useful instantiations of objects rotated by 90 degrees:
1482 arrowhead, arrow, circle, jumper, and all of the analoglib2
1483 objects which allow instanced rotation and justification of
1484 their parameter value labels.
1487 Bug fixes to incremental netlisting. Also: Separated the loading
1488 of GUI colors from that for layout colors. The schematic capture
1489 was re-using SNAPCOLOR, AUXCOLOR, and BBOXCOLOR, which causes bad
1490 effects if one attempts to change these values in the X defaults.
1491 Re-used GUI colors were not necessarily duplicated or available
1492 in the layout color palette, which was also confusing. Also:
1493 environment variable XCIRCUIT_LIB_DIR now applies to the search
1494 for the startup script. This enables xcircuit to be tested prior
1495 to installation by doing "setenv XCIRCUIT_LIB_DIR ./lib" in the
1496 top-level source directory.
1499 Changed the behavior of the PostScript background so that it scales,
1500 rotates, and translates with output selections (Landscape vs. Portrait,
1501 and vs. Output Scale), so the behavior is what would be expected. Still
1502 allows only one background image per page, though, and the PostScript
1503 image can't be scaled, rotated, and translated independently of the rest
1504 of the drawing (those things must be done to the image prior to loading).
1507 Minor bugfixes: variable reading (varfscan, varpscan) requires skip
1508 over whitespace. Netlist requires reinstating routine nearpoint()
1509 because matrix transformations have roundoff errors and pin positions
1510 should not be compared exactly. Updated Copyrights to 2002. Netlist
1511 generation has been confirmed on a large schematic design.
1514 First cut at incremental netlisting---implemented a scheme in which
1515 netlists are kept after being generated, until they are invalidated
1516 or the object is destroyed. This scheme allows the netlist structure
1517 to be queried at any time. Netlist creation is independent of the
1518 netlist mode, as it should have been to begin with.
1520 215) v2.5.2 12/26/01
1521 Correction to duplicate object code makes sure that schematic/symbol
1522 association does not get destroyed along with the duplicate object!
1524 Also: Applied Holger Vogt's patches to configure.in for proper
1525 compilation under Cygwin.
1527 214) v2.5.2 12/15/01
1528 XCircuit now allows pin labels to be parameterized, treating them
1529 as an instance-dependent label. While this does not alter the
1530 SPICE and sim netlists, it allows (for example) quad parts such
1531 as four NAND gates of a 7400 chip, each having its own unique
1532 pinout but sharing the same object.
1534 Also: To go with the pin labels, added a method for generating
1535 "virtual copies" of an object to appear on a library page ("V"
1536 key from the library page). The virtual copy is a different
1537 instance of the object, and can take different parameters.
1538 Started on library "quadparts" with 7400-series pinouts to
1539 facilitate use of the new feature with PCB netlisting.
1541 213) v2.5.1 12/06/01
1542 Revised the routines that deal with duplicate objects. New routines
1543 prevent propagation of appended underscores (used to differentiate
1544 between objects with the same name but different structure). The
1545 major change is that a list of aliases is kept for objects with the
1546 same structure but different names, so there is no confusion through
1547 the process of reading the library. When the loading is done, the
1548 aliases are removed and the names are cleaned up.
1550 Also: Switched the copyright to GPL for better compatibility with
1551 other open-source tools, and because it's the Right Thing To Do.
1553 212) v2.5.0 11/28/01
1554 Removed an ill-conceived routine which would delete duplicate
1555 copies of an object even if the names were different. This action
1556 can give rise to very bad inconsistencies. A better idea would be
1557 to try to "clean up" leading underscores whenever an object with
1558 a leading underscore is deleted. However, this is a minor point.
1560 Also: Fixed a string overrun bug in charreport().
1562 211) v2.5.0 11/16/01
1563 Finally (!) added support for parameterized values other than
1564 label (sub)strings. This includes parameterization of all
1565 element values except color (which is handled by an inheritance
1566 model). Includes parameterization of: point position (x, y, or
1567 both), line style, linewidth, scale, rotation, label justification,
1568 and arc radius, minor axis, and endpoint angles. Includes support
1569 loading, saving, displaying, printing, and editing.
1571 Version 2.4 (November 2001)
1572 ----------------------------------------------------------------------
1573 210) v2.4.0 11/14/01
1574 Added python script "pagebbox.py" to create standard page-size
1575 bounding boxes (request from Bob Paddock). Along with this,
1576 I updated the python code to handle colors by name or RGB
1577 components, rather than by index, which is visual-dependent.
1579 209) v2.4.0 11/12/01
1580 Bug fixes to 2.4.0: Fallback resources string must be null-
1581 terminated, added 2 remaining fallback resources that are
1582 not taken care of by the XtGetApplicationResources() routine,
1583 and changed XtAddConverter to XtAppAddConverter. I hope that
1584 the application-specific references will prevent problems
1585 with the timeout functions, and maybe with input focus as well.
1587 Also: Fixed type casting of values retrieved from the message3
1588 widget---values are type "Dimension" and "Position" (usually
1589 defined as unsigned short and short, respectively), not int.
1590 Causes errors under Solaris and probably other systems, too.
1592 208) v2.4.0 11/09/01
1593 Switched to a new method for defining rotation. Rotation in
1594 xcircuit is now given in degrees, which matches the PostScript
1595 output. Flipping is done in the obvious way by declaring a
1596 negative scale value (which is applied only to the X component
1597 in the transformation matrix; Y is always positive). Lookup
1598 tables for sines and cosines are replaced by the math library
1599 functions, which presumably are fast enough not to show any
1600 performance hit on most machines. The redefinition of the
1601 PostScript prologue prompts the move to a new minor version
1602 number. Rotation is still an integer value, so the minimum
1603 rotation increment is 1 degree.
1605 Also: Fixed an error in the PostScript prolog in which text
1606 flip invariance was incorrectly implemented after the addition
1607 of text kerning & scaling methods. Fixed another error in which
1608 XCircuit and PostScript disagree about text orientation due to
1609 roundoff errors. Matrix values must be compared to some epsilon,
1610 not zero, to determine when the orientation is 90 or 270 degrees.
1611 epsilon = 1e-9 works fine.
1613 Also: Changed certain Xt routines to include XtAppContext in the
1614 hope of avoiding the problem with the TimeOut function conflicting
1615 with other X11 programs (namely, screensavers). Hopefully the
1616 addition of fallback_resources to XtOpenApplication will prevent
1617 problems with the X defaults when the X defaults file cannot be
1620 Version 2.3 (May 2001 to November 2001)
1621 ----------------------------------------------------------------------
1622 208) v2.3.6 11/05/01
1623 Added rudimentary "edit-in-place". Currently, this is a bit odd,
1624 because the hierarchy above the object is rotated to match the
1625 "natural" orientation of the object, rather than the other way
1626 around. This should be fixed by allowing rotation and flips to
1627 the top-level page (keep the transformation matrix for the page
1628 rather than just the scale and position). Skewing of the grid
1629 due to rotations is a can of worms, though. Probably rotating
1630 to the nearest 90 degrees would suffice for most purposes.
1631 Edit-in-Place is turned on by default. It can be turned off if
1632 the extra drawing clutters the window.
1634 207) v2.3.6 11/01/01
1635 Fixed a long-standing error in which the "rejustify" routine
1636 was giving labels invalid "justify" bit fields. Fixed a problem
1637 with the "visible pins" in which the visibility flag would always
1638 be reset by a rejustification of the label.
1640 Also: Removed the ":n" suffix from pages in multiple-page files
1641 with the same name. The addition of the suffix was screwing up
1642 the association of symbols to schematics on file reads, and it
1643 seems to work fine without it. Some attempt is made to enforce
1644 unique names for pages associated to symbols, but it seems to
1645 work correctly whether or not names are unique.
1647 Also: Fixed an error in string parameter deletion, and added
1648 a call to mergestring() after deletestring() to connect any
1651 206) v2.3.6 10/25/01
1652 Revamped the file list window on the suggestion of Zhengdao
1653 to highlight files that match the expected file extension.
1654 Extended this idea to include a "file filter" which displays
1655 only those files with matching extensions. This feature can
1656 be turned off by clicking a toggle button in case a file with
1657 an unusual name or extension cannot be seen.
1659 Also: Added a flag to the label justification value which
1660 allows pins to be seen on hierarchical levels other than the
1661 top. Changes to the prolog prompted the change to subversion
1662 6 although the change is fully backward-compatible. Thanks
1663 to Bob Paddock for the suggestion.
1665 205) v2.3.5 10/24/01
1666 Fixed a netlisting bug pointed out by Bryce Denny in which the
1667 layer ordering of label vs. polygon can cause the label to not
1668 be associated with the network under it. This led me to
1669 discover another bug in which a label position would update the
1670 netlist properly but the actual label itself would not be added
1671 to the netlist (the only apparent consequence is that the label
1672 is not hightlighted during a connectivity check).
1674 Also: Fixed the behavior of the .xcircuitrc file loading so that
1675 keys can be rebound from the file. Added Python commands for
1676 pan and zoom, and wrote an example script which rebinds keys "Z"
1677 and "z" to a python function which combines the pan and zoom.
1678 Separated zoom functions between those with and without screen
1681 204) v2.3.4 10/22/01
1682 Fixed some buggy behavior with respect to loading and setting
1683 default fonts in .xcircuitrc and xcstartup.py. Thanks to Jeremy
1684 Braun (jtbraun@MIT.EDU) for reporting these errors in detail.
1685 Also: Fixed a missing requirement in checking object name
1686 syntax. A PostScript name must be a string which cannot be
1687 interpreted as a number. Thus, "+9" and "1E9" are illegal
1688 names. Thanks to Bob Paddock (bpaddock@csonline.net) for
1691 Also: Changed behavior with respect to environtment variables,
1692 allowing "TMPDIR" to set the temporary directory and allowing
1693 an override of the "XAPPLRESDIR" directory. Added a list of
1694 environment variables used by xcircuit to the manual page.
1696 Also: Revised the tempfile mechanism once again to include a
1697 check on the number of times a file has been modified; heavy
1698 modification will induce a temp-file save even if the timer
1701 203) v2.3.4 10/19/01
1702 Implemented a "changed" file mechanism which checks for changes
1703 to pages and objects and queries for confirmation if there are
1704 unsaved changes upon quitting. Changed filename behavior so that
1705 all filenames have their own malloc'd space, instead of sharing
1706 filenames. Extended file backup to include different filenames
1707 on different pages. Added a toggle box on the output popup
1708 window so that a page can be unlinked from a multipage file,
1709 and displays the number of pages in the file. Added the simple
1710 popup window (no text entry) to the list of python calls.
1712 202) v2.3.4 10/18/01
1713 Fixed the crash file recovery so that ONLY the given crash file
1714 can be loaded (load and cancel are the only choices). Also,
1715 the actual temp file name is hidden from view, and the original
1716 filename is recovered from the "%%Title:" header line.
1717 Also: Fixed the problem in which startwire() was called after
1718 a popup window button was selected.
1721 Names of pages added to the library and page directories.
1722 Thanks to Bob Paddock <bpaddock@csonline.net> for suggesting
1725 Also: Updated "configure.in" to check for the infamous python
1726 version 1.5, and disable the python interface if found.
1729 RPM package makefile fixes (thanks to Alex Habig
1730 <habig@neutrino.d.umn.edu>). Also: changed undelete() to
1731 xc_undelete() to avoid conflict with OpenBSD/FreeBSD system
1732 calls. Thanks to Mike Andrews <mikea@mikea.ath.cx> for
1733 bringing this to my attention.
1736 Implemented a Python interface into the netlist structures.
1737 Set up for use of Python scripts to generate all netlist
1738 output, as well as dealing with non-PostScript format input.
1740 Also: fixed a problem with crash recovery caused by the
1741 program exiting on call to Py_Exit. Improved the crash
1742 recovery mechanism to automatically find crash files on
1743 startup, and prompt user to load.
1745 Also: added more Python functions, for page clear, page change,
1746 add key bindings to Python functions, and create menu buttons
1747 with callbacks to Python functions. Added Python functions for
1748 calling a popup prompt, file browser.
1751 Fixed more man page problems with the make process. Added
1752 default values for Python libraries when the Python Makefile
1753 can't be found. Made the rcfile parsing more robust, esp.
1754 so it doesn't crash if it attempts to read a non-script file.
1757 Added auto-numbering of component numbers using netlist mode
1758 "idxpcb". This works for all component numbering (including
1759 SPICE and sim) where the component number is parameterized and
1760 denoted by a question mark ("?"). Thanks to Lapo Pieri
1761 <lapo@iroe.fi.cnr.it> for the suggestion and some code to
1762 implement the function outside of xcircuit.
1764 Also: Fixed Imakefile so that imake uses m4 to generate the
1765 man page correctly on "make install.man".
1768 Fixed two errors, one which split global nets in hierarchical PCB
1769 netlists, the other which failed to find nested parameters.
1772 Some changes to the GNU autoconf (with much help from Albert
1773 Chin) for correct parsing of the path to python, avoidance of
1774 errors when generating the man page, and re-instantiation of
1775 the keyboard input focus workaround.
1777 Also: Removed the behavior of turning pins back into labels
1778 when creating objects or moving labels between pages or
1779 objects. Added behavior that if a pin is removed (or moved
1780 out of an object), and the pin has a unique string, any pin
1781 on the corresponding symbol/schematic will revert to a plain
1782 label. This was the intended behavior.
1785 Added label strings to the Python setattr() command. Added a
1786 getcursor() command to Python. Created a python script called
1787 "gettext(filename)" which creates an xcircuit label from the
1788 contents of an ASCII file.
1791 Quick fix to an error in interpreting key names for key bindings.
1794 Added environment variable XAPPLRESDIR so that application
1795 defaults come from the location specified by the configure script,
1796 not /usr/lib/X11/app-defaults. This also allows app-defaults to
1797 be used even if xcircuit is compiled without root privileges.
1798 The configure script was modified to compile in Xpm, if it can
1802 Changed netlist behavior so that wires only connect at endpoints
1803 (although an endpoint may attach TO any location along a segment
1804 of another wire). Optimized a few routines for speed. Netlist
1805 output now changes symbol font and standard font "mu" (i.e.,
1806 micro) to "u". Fixed a bug preventing correct loading of files
1807 containing multi-part strings as parameters.
1810 Cleaned up some behavior with respect to component numbering,
1811 including fixing numbering for flattened SPICE output. Added
1812 a PCB library for generic IC parts.
1815 Corrected the parseinfo() routine so that it correctly uses the
1816 symbol, not the schematic, to pick up information about a pcb
1817 name. Changed some of the library objects (namely the passive
1818 devices like Resistor and Capacitor) so that pin names are PCB-
1819 like and device can be given a part number. Changed the netlist
1820 compiler behavior so that all indices are numbered relative to
1821 a particular component, rather than numbered relative to all
1825 Replaced the imake build with a GNU configure build. Thanks to
1826 Albert Chin-A-Young <china@thewrittenword.com> for setting up
1827 the scripts for automake/autoconf. For purposes of compliance
1828 with modern directory nomenclature, startup files and such are
1829 now installed in /usr/local/share/ instead of /usr/local/lib/.
1831 Also: Added a "show pin positions" feature (recommended by
1832 Larry Doolittle) to the Options menu, which allows pin locations
1833 to appear on the hierarchical level above, to help in finding
1834 pin connections into objects.
1837 More patches from Larry Doolittle, some cleaning up cruft flagged
1838 by compiling with -Wall, and re-patching a string function (an
1839 error which I am unable to duplicate. But I will take his word
1840 for it). Also, worked on Xw/TextEdit.c to implement horizontal
1841 scrolling of text (so it will no longer run off the end of the
1844 Also, finally implemented a way to check for overlapping objects
1845 caused by a copy or move (this is not exhaustive, but covers the
1846 most obvious ways this can happen). This is especially critical
1847 for schematics, because multiple circuit elements will end up in
1848 the netlist when they cannot be seen on the schematic.
1851 Applied patch from Larry Doolittle <ldoolitt@recycle.lbl.gov>
1852 to correct error in line length computation when writing output.
1853 Also modified file reader to treat lines ending with "{" as
1854 continuation lines (such as the beginning of a label), if they
1855 don't look like object definitions.
1857 Also: Copying library objects now also copies the parameters,
1858 and the page viewing parameters. Corrected an error wherein
1859 stringcopy() calls makesegment(), although the former is
1860 supposed to ignore parameters, and the latter doesn't. Also,
1861 instantiated a slightly "improved" object compare that is able
1862 to compare objects against objects with underscore-prepended name
1863 adjustments, in an attempt to avoid a proliferation of underscores.
1864 Fixed an error that reset "version" in the middle of a file read
1865 if a font was loaded. Updated some of the "examples" files to the
1869 Added tilde ('~') expansions to filenames. Thanks to Norman
1870 Werner <norman.werner@student.uni-magdeburg.de> for patches which
1871 seeded the final version of this code.
1874 Changed the Imakefile for Python-2.1 and added instructions to the
1875 README file on how to make a shared (.so) python library.
1878 Corrected a few errors which showed up on other compilers (thanks
1879 once again to Albert Chin, <china@thewrittenword.com>).
1882 Fixed an error caught by John Livsey (<jlivsey@bigpond.com>) in
1883 which loading old library files causes the version number to
1884 revert to 1.9, causing havoc when reloading saved files. This
1885 has been fixed along with code to check more decisively for
1886 which label syntax is in the file, and adjust the version number
1887 accordingly rather than depend solely on the version number
1888 extracted from the file header.
1891 Cleaned up errors found in the netlist code while doing a large
1892 chip project. Added flattened SPICE output and changed SPICE
1893 output to be compatible with "hspice" syntax. Netlist compilation
1894 runs about three times faster than before, but should be able to
1898 Completed the full hierarchy search on subschematics. searchconnect()
1899 makes a call to search_on_siblings(), looking for any connection from
1900 any object in the hierarchy of viewable (sub)schematics to the object
1901 under consideration. Added a bounding box disjoint test to reduce
1902 unnecessary searching. Could use a lot more optimization, though.
1904 Also, from the March 27 version, genportpins() has been merged back
1905 into gencalllist(). Spice and Sim netlists are correct for numerous
1906 torture tests given to xcircuit.
1908 Corrected errors in text generation stemming from the new
1909 PostScript profile (thanks to Jeremy T Braun <jtbraun@MIT.EDU>
1910 for patches). Ultimately, decided to more closely match the
1911 PostScript and XCircuit label formats by declaring an overall
1912 scale outside of the label segments. All font scales declared
1913 by "cf" commands are therefore relative, not absolute. The
1914 change in output format prompted the change to version number
1917 Version 2.2 (December 2000 to May 2001)
1918 ----------------------------------------------------------------------
1920 Completely overhauled the method for text strings, implementing
1921 a linked-list method. In conjunction with this change, also
1922 overhauled parameters to be called bottom-up rather than top-
1923 down, thus eliminating the need for tracking reallocated
1924 memory (which was not compiling correctly under the latest
1925 version of gcc). Also made other structural changes, removed
1926 the text backspace character, and replaced it with a tabbing
1927 system. Made key bindings for text home, end, left, right,
1928 delete, return, and special character insert, as well as the
1929 new tabbing commands. PostScript profile revised to
1930 incorporate the tabbing features.
1931 Also: Overhauled the netlist generator. The result is much
1932 cleaner and more understandable. The main difference is that
1933 the Netlist structure is comprised of nets and pins (no
1934 separate Pinlist), and the Paramlist (now called a Portlist
1935 to distinguish from object parameters) calls by net number,
1936 not by pin name. Ports are accessed dictionary-style, by
1937 key-value pairs (port ID : netID). The netlist is generated
1938 in by three recursive routines, gennetlist(), genportpins(),
1939 and gencalllist(). genportpins() now searches for net
1940 connections arbitrarily far down into the netlist hierarchy.
1941 gencalllist() resolves net numbers and removes empty calls
1942 as it traverses the hierarchy.
1943 Also: Implemented recursive selection for finding network
1944 connectivity, so any net visible on the page can be queried
1945 for both a net name and highlighting the network.
1946 Also: Implemented automatic redraw of text with parameters,
1947 so that parameters which are edited are immediately updated
1948 wherever they occur in the current top-level page.
1949 Also: Thanks to Masao Kawamura (kawamura@mlb.co.jp) Media Lab.
1950 Inc., Japan, for tracking down several bugs, including a very
1951 bad one in which the admittedly dubious syntax
1953 acts like (the intended)
1954 a[x] = a[x - 1]; x--;
1955 when compiled with -g (debug) option, but acts like
1957 when compiled without debug. Also, temporary files have been
1958 reimplemented using mkstemp(), which is more secure than
1959 tempnam() and tmpnam().
1962 Added significantly to the Python interface, including access to
1963 all elements on a page by dictionary key:value pair assignment.
1964 Added mouse button handling to the key binding, and changed the
1965 help window to reflect current key bindings.
1968 Fixed a bug in the PostScript profile introduced with version 2.2,
1969 wherein string bounding boxes were computed incorrectly because
1970 user space was rotated.
1973 Implemented code for user-defined key bindings; set up default
1974 key bindings to match all prior versions of xcircuit, and added
1975 python and script commands to bind and unbind keys with function
1979 Cleaned up a lot of code, making the subroutine parameter lists
1980 consistent. Added all the necessary function prototypes as a
1981 separate prototypes.h file, and removed unused parameters and
1982 unused variables. Fixed a few heretofore unnoticed bugs in the
1983 process. Thanks to Karim Kaschani (karim.kaschani@arcormail.de)
1984 for instigating this process, although I failed to find the bugs
1985 he was experiencing, and may have to revamp the label and
1986 parameter string concept (again!) to fix it. Also, thanks to
1987 David Nicholls (davidallannicholls@hotmail.com) for a fix to
1988 nosprint(), although I didn't implement the rest of his
1989 thoughtfully provided code (and there was a lot of it!),
1990 preferring to leave much of it to Python scripts, which are
1991 coming soon. Expanded the Python functions, but so far, still
1992 mostly experimental.
1995 Completely redefined the command-line, including the startup
1996 script and .xcircuitrc file to be Python scripts, and embedded
1997 the Python interpreter into xcircuit.
1999 173) v2.2.0 12/19/00
2000 Made additions to the command-line functions; also, declared
2001 the library inclusion commands "loadlibrary" and "loadfontencoding"
2002 to be obsolete, and changed the startup file "builtins.lps" to
2003 a startup script called "startup.script". This makes a lot more
2006 172) v2.2.0 12/15/00
2007 Finally declared version to be stable enough for a non-beta
2008 release. Revised methods for generating schematics and symbols
2009 in the circuit hierarchy. Added (a modified) analoglib2.lps
2010 (circuit elements with parameters) to the "builtins" list.
2011 Fixed errors with sim and pcb netlist outputs, and cleaned up
2012 other minor things. Object types are now "fundamental",
2013 "trivial", and "subschematic", as well as "normal" object,
2014 with the type depending partly on context.
2016 Version 2.1b (July 2000 to December 2000)
2017 ----------------------------------------------------------------------
2018 171) v2.1b9 (beta) 11/30/00
2019 Added full functionality for text blocks (carriage-return),
2020 kerning, scaling, and color change within labels.
2022 170) v2.1b8 (beta) 11/11/00
2023 More fixes to the parameterization and netlist functions (thanks
2024 to Terry Hancock <hancock@earthlink.net> for help with testing
2025 and debugging this extraordinarily complex code). Created a new
2026 PostScript prolog which not only fixes one very long-standing
2027 error, but also allows text blocks with carriage returns and
2028 kerning within text blocks. These functions have not yet been
2029 reflected in the xcircuit code.
2031 169) v2.1b7 (beta) 10/30/00
2032 Possible fix (again!) to the input focus problem: Added an
2033 event handler to catch map and unmap events, so xcircuit should
2034 never attempt to set input focus on an unmapped window. Also:
2035 extention to information labels allows labels to be broken into
2036 parts, i.e., "sim1:", "sim2:", etc., and extended the protocol
2037 of '%' sequences to include %r (carriage-return), %t (tab), and
2038 %% ('%' symbol, literal).
2040 168) v2.1b7 (beta) 10/25/00
2041 Extended PCB netlist capability: An info label beginning with
2042 "pcb:" now indicates the object name to be used in naming the
2043 pins. The info label can contain all the %-escapes used for
2044 spice: and sim: info labels, and similarly, can use parameters
2045 with the Alt-p key sequence. A new escape "%n" has been added
2046 which inserts the name of the object into the output. The new
2047 pcb method can be used to explicitly define instances of an
2048 object (i.e., "cap_1", "cap_2") or to redefine a name locally
2049 ("inverter" becomes "1/6 74HC04", for instance).
2051 167) v2.1b6 (beta) 10/23/00
2052 Fixed a fatal bug pointed out by Wilson Barroz
2053 (wbarroz@bol.com.br), in which a break statement got lost,
2054 effectively crashing xcircuit if a path was selected.
2056 166) v2.1b6 (beta) 10/2/00
2057 Fixed problem with schematic capture on/off, so that pins and
2058 info labels are not displayed or saved when schematic capture
2059 has been turned off. Fixed much of the problem with parameter
2060 strings, and added simple capability to apply a single parameter
2061 to multiple strings.
2063 165) v2.1b5 (beta) 9/27/00
2064 Fixed problem with writing empty parameter strings to the output;
2065 also, fixed a fatal crash error when an entire string is a
2066 parameter and is deleted. XCircuit now prevents the creation of
2067 parameters on a top-level page.
2069 164) v2.1b5 (beta) 9/25/00
2070 More changes to bounding box calculation: Everything was correct
2071 except for the top-level page offsets, which were calculated from
2072 the bounding box excluding schematic pins and info labels. Thanks
2073 to Albert Ma <ama@cag.lcs.mit.edu> for pointing this out.
2075 163) v2.1b4 (beta) 9/22/00
2076 Added menu option to read a script, which has the same
2077 functionality as the .xcircuitrc script (see #160, below). Added
2078 "enable toolbar" and "enable xschema" to the command-line parser.
2080 162) v2.1b3 (beta) 8/7/00
2081 Changes to fix problems caused by (158) below; the toolbar widget
2082 has finally been arranged to use multiple columns when there is
2083 not enough room for one.
2085 161) v2.1b2 (beta) 8/4/00
2086 Added a "auto-fit" feature to automatically scale the drawing to
2087 fit the output page. Also improved the behavior of the text-edit
2088 widget to delete a selection if it exists in lieu of deleting a
2091 160) v2.1b2 (beta) 8/3/00
2092 Added a command-line window which accepts the same commands as
2093 the .xcircuitrc file. This syntax will be expanded in the near
2094 future. Added text hints to the toolbar buttons. Added a
2095 user-definable bounding-box capability, and fixed the automatic
2096 bounding-box calculation to include spacing between pins and
2099 159) v2.1b1 (beta) 8/1/00
2100 Added a temporary file saving feature for recovery from crashes,
2101 sudden power-downs, or emergency exit. Added a Control-C handler
2102 to execute graceful exits from a hung state. Temporary files are
2103 doubly-protected by duplication before writing, so crashes during
2104 writes will not cause the (previous) backup to be lost.
2106 158) v2.1b1 (beta) 7/31/00
2107 Minor changes for compilation using HP/UX's ANSI-C compiler; one
2108 major fix preventing loadlibrary() from calling composelib()
2109 with argument FONTLIB (composefontlib() should be used for that).
2110 Updated version number to 2.1 after Graham Murphy pointed out
2111 that xcircuit-2.0a11 crashes when reading 2.0b4 input:
2112 incompatibility is due to the reformatted label statement.
2113 Added warning if file version is greater than executable version.
2115 Version 2.0b (October 1999 to July 2000)
2116 ----------------------------------------------------------------------
2117 157) v2.0b4 (beta) 7/18/00
2118 Corrected the partial-text-selection algorithm; new algorithm
2119 makes an insideness test between each string character and the
2122 156) v2.0b4 (beta) 6/28/00
2123 Corrected and enhanced the routine printing the cursor position
2124 and other information to the top of the window.
2126 155) v2.0b4 (beta) 2/25/00
2127 Finished implementing ghostscript-rendered backgrounds. Added
2128 a toolbar widget for easy access to common commands; this
2129 implementation is not yet complete.
2131 154) v2.0b3 (beta) 2/13/00
2132 More bug fixes, covering several bugs which were introduced
2133 with the 2.0b series: bbox calculation after copy & move
2134 across pages, segmentation fault when using middle mouse button
2135 to finish a text label, double-printing of non-ASCII characters
2136 in the output, confusion of grid and snap space functions from
2137 the menu, and incorrect path starting position saved when 1st
2138 path component is a spline or arc.
2140 153) v2.0b3 (beta) 2/8/00
2141 Testing preliminary support for Ghostscript-rendered backgrounds.
2142 Bugfix to multiple library code (fatal error---adding new library
2143 writes over current user library). Another bugfix---objcompare
2144 was not being called.
2146 152) v2.0b3 (beta) 1/26/00
2147 Further implementation of multiple libraries, including loading,
2148 appending, and saving; specifying library pages from the rc
2149 file and the library file (specifically, "builtins.lps"), and
2150 a menu item for creating new library pages. Currently there
2151 is no way to move objects from one library page to any other
2152 than the "User Library" (always defined as the last library
2153 page), which is also true for object creation using "M" or
2156 151) v2.0b3 (beta) 1/13/00
2157 Fixed behavior of rotate and flip when acting on groups and
2158 extended behavior of both to cover all elements. Fixed a bug
2159 in text select. Added a library-list page to enable multiple
2160 libraries. Fixed bounding box calculations so that the bounding
2161 box updates on every element change, and that update is reflected
2162 in the page directory, libraries, and library directory as
2165 150) v2.0b2 (beta) 1/10/00
2166 More changes: Added a page-list page to enable page reordering.
2167 Structural changes: Put page parameters into separate structure
2168 and viewscale and pcorner parameters into the object structure.
2169 Now every object retains its zoom scale and position where last
2170 edited. Also: some attempt to keep all/only variables required
2171 by the top-level window in "areastruct", so later it will be
2172 possible to implement multiple windows. Also some bug fixes and
2173 other cleanups to the code, particularly the window/object
2174 resizing and centering.
2176 149) v2.0b2 (beta) 1/5/00
2177 Numerous minor bug fixes, including automatic loading of derived
2178 fonts (previously handled incorrectly), proper drawing during
2179 scrollbar drags, and many fixes to the schematic capture system.
2180 Symbol-Schematic association redone so that the symbol and
2181 schematic do not have to have the same name. Because this code
2182 is beta, this feature will not be backwardly compatible with
2185 148) v2.0b1 (beta) 11/2/99
2186 Changes to the Imakefile from Monte Bateman fix the reported
2187 problems with both the RPM creation, and with the make process
2188 not generating the proper subdirectories/installing files.
2189 Changes to the RPM spec file go along with these fixes.
2190 Support added for parameterized objects (full support for
2191 string parameters, partial implementation of integer
2194 Version 2.0a (July 1998 to November 1999)
2195 ----------------------------------------------------------------------
2196 147) v2.0a11 (alpha) 11/19/99
2197 Thanks to Mathieu Clar (mclar@ulg.ac.be) for finding that fix
2198 #144 can be overridden if environment variable LANG is set
2199 (e.g., to "french") and results in the same kind of program
2200 crash. Now xcircuit sets LANG to "POSIX" internally.
2202 146) v2.0a11 (alpha) 10/26/99
2203 After a number of partial fixes, and with the help of Raymond
2204 Burns (rayburns@eskimo.com), I fixed the keyboard input focus
2205 problem which plagued, especially, the WindowMaker window
2206 manager. Neverthess, this problem refuses to go away, and
2207 this appears not yet to be the end of the story.
2209 145) v2.0a10 (alpha) 6/25/99
2210 Changed behavior of wire drawing so that mouse button 3 deletes
2211 only the last segment of the line rather than deleting the
2212 whole line. Added key macro "." to place a dot object or draw
2213 a dot at the cursor position.
2215 144) v2.0a10 (alpha) 6/16/99
2216 Fixed a problem under non-US UNIX versions in which LC_NUMERIC
2217 is set to use a comma character as a numeric decimal point.
2218 Thanks to Lars Pettersson <larsp@oso.chalmers.se> and Paulo
2219 Mario dos Santos Dias de Moraes <paulo.mario@omninet.com.br>
2220 for helping to track down the problem (6/24/99---changed from
2221 LC_NUMERIC to LC_ALL because there are apparently other things
2222 which also screw up file loads if not set to US or equivalent).
2224 143) v2.0a10 (alpha) 6/14/99
2225 Added ISO-Latin5 (Turkish) on request from Recai Oktas at
2226 Ondokuz Mayis University <roktas@samsun.omu.edu.tr>. Rewrote
2227 source to allow future inclusion of all ISO-LatinX encodings.
2229 142) v2.0a10 (alpha) 5/25/99
2230 Finally got around to instantiating edit mode for paths.
2232 141) v2.0a10 (alpha) 5/24/99
2233 In text edit modes, the backslash character brings up a
2234 page containing the font encoding, allowing entry of non-
2235 printing characters by simple point-and-click. Use of
2236 backslash escape sequences is deprecated. Also, fixed a
2237 bug which prevented compilation if MAKE_LGF was not defined
2238 in the Imakefile; thanks to Zhengdao Wang for the bug fix
2239 <zhengdao@aphrodite.ee.umn.edu>.
2241 140) v2.0a9 (alpha) 5/20/99
2242 Finally fixed the "actions not found" bug, which seems to
2243 be due to conflicting names of widget classes between Xaw
2244 and Xw, and changed the popup menu behavior to place the
2245 popup menu such that the cursor is initially on the title,
2246 not on the top button. Also, added a README.ISOLatin2 file
2247 giving instructions on how to setup xcircuit for Latin2
2250 139) v2.0a9 (alpha) 5/17/99
2251 Changed menu button calling to the style adopted for
2252 the abandoned attempt at using Motif; this style calls
2253 each menubutton by its Widget address rather than explicitly
2254 referring to the path created by panes, managers, etc., which
2255 can be toolkit-dependent.
2257 138) v2.0a9 (alpha) 5/12/99
2258 Added font vectors for ISO-Latin2 encoding. Also, reparied
2259 two fatal bugs (one involving the backslash character in
2260 text, the other involving large user library files), and
2261 reintroduced fix number 117 which somehow got lost.
2263 137) v2.0a9 (alpha) 5/1/99
2264 Font-drawing mechanism completely overhauled and replaced
2265 with object-encoded fonts. Added font encoding selection
2266 and a better interface for choosing font family, shape,
2267 and encoding. Added PostScript output for generating
2268 ISOLatin1 encodings of standard PostScript fonts. Fonts
2269 extended and heavily revised; Courier, Helvetica, Times,
2270 and Symbol all have unique font vectors.
2272 136) v2.0a8 (alpha) 5/6/99
2273 Zoltan Csahok <csahok@phase4.ujf-grenoble.fr> sent a bug fix
2274 for the problem in which some objects would be made "hidden"
2275 without being declared hidden in the library.
2277 135) v2.0a8 (alpha) 4/14/99
2278 Paul Ortyl <ortylp@key.net.pl> sent a fix to allow keyboard
2279 entry of 8-bit characters (e.g., ISO-Latin1 or ISO-Latin2
2280 encoding). Text vectors still reflect Adobe Standard
2281 encoding but hopefully this will be extended in the near
2282 future. Added "W" key macro for popping up Write-Xcircuit
2283 dialog, at Paul's request.
2285 134) v2.0a8 (alpha) 2/25/99
2286 Possibly just fixed the problematic window manager hints
2287 (WMHints) bug which has been plaguing the system.
2289 133) v2.0a7 (alpha) 1/26/99
2290 Fixed a bug which was introduced into version 2.0a7 which
2291 prevents landscape-oriented files from being loaded back into
2294 132) v2.0a7 (alpha) 12/18/98
2295 Fixed a problem wherein the FileList and Help widgets set
2296 their own fonts directly rather than getting them from the
2297 X Resource manager. This causes XCircuit to crash when the
2298 computer does not have that particular font preinstalled, as
2299 noted by Niitsu Yoichiro <niitsu@amc.toshiba.co.jp>.
2301 131) v2.0a7 (alpha) 11/20/98
2302 Fixed a long-standing bug by making gridspace and snapspace
2303 per-page variables, and permitting loading and saving these
2304 values in the output file. At the same time, made these
2305 values type float for better resolution (preliminary to
2306 making all internal point values type float).
2308 130) v2.0a7 (alpha) 11/19/98
2309 Added the "zoom-out" box suggested by ():
2310 the current area of the drawing window is made to fit into
2311 the area bounded by the box. Added a button to the little
2312 square at the intersection of the horizontal and vertical
2313 scrollbars which acts like the "zoom view" function or "v"
2316 129) v2.0a7 (alpha) 11/17/98
2317 Changed the behavior of the horizontal and vertical scrollbars
2318 so that some smooth scrolling is possible (that which can be
2319 accomplished by copying from the existing pixmap onto the
2320 window, without redrawing the whole window).
2322 128) v2.0a6 (alpha) 11/16/98
2323 Made some fixes for Dale Scheetz <dwarf@polaris.net> to correct
2324 some odd behavior under Linux: The help page has been shortened
2325 by 30 pixels to clear the Windows-95-like menu bar in fvwm95, and
2326 the "done" button has been moved to the top of the help window.
2327 Also, reduced argv[0] (the command from the command line) to its
2328 root before comparing to "xschema" and loading Xdefaults so that
2329 the program isn't confused by an appended pathname.
2331 127) v2.0a6 (alpha) 11/12/98
2332 Added code suggested by Alireza Moini <moini@eleceng.adelaide.edu.au>
2333 to use environment variable "XCIRCUIT_LIB_DIR" for searching for
2334 libraries before trying the hard-coded BUILTINS_DIR as a last
2337 126) v2.0a6 (alpha) 10/4/98
2338 Cleaned up the code a little; moved most of the menu button
2339 callbacks into a single file "menucalls.c", moved the file
2340 list widget code into "filelist.c", and moved the help window
2343 125) v2.0a6 (alpha) 10/4/98
2344 Fixed a long-standing problem with the simple help window in
2345 which it could not be repositioned. In addition, I prevented
2346 the window from exceeding the computer screen boundary; when
2347 it does, the help window is truncated but can be "scrolled"
2348 in a simple sense by clicking the mouse in the help text
2351 124) v2.0a5 (alpha) 9/27/98
2352 Fixed a problem apparently due to the above pixmap icon code
2353 which caused window managers to lose input focus for the whole
2354 xcircuit window. This appears to be fixed at least for "i386"
2357 123) v2.0a4 (alpha) 9/1/98
2358 Upon urging of Michael Le, I generated a built-in pixmap icon.
2359 Also fixed what was apparently a long-standing bug in resizearea().
2361 122) v2.0a3 (alpha) 8/23/98
2362 Fixed a bug pointed out by Geert Jordaens which limited library
2363 object names to 20 characters on file input. Added flip-invariant
2364 text. Added pad space to pin labels. Began preliminary work on
2365 support for parameterized objects (beginning with some example
2366 code and a postscript prolog). Added missing definitions for
2367 quarter and half space to xcircps2.pro. Changed library files
2368 to take advantage of flip invariant text.
2370 121) v2.0a2 (alpha) 8/11/98
2371 More "load file" fixing: Modified the file loading routine so that
2372 library files can be loaded with "Read Xcircuit PS"; i.e., they are
2373 read like normal postscript files, and so can be read on the command
2374 line. Only restriction is that they go into the user library, as
2375 they would if read as part of a regular xcircuit postscript file.
2377 120) v2.0a2 (alpha) 8/10/98
2378 Fixed three LGF-related errors: 1) LGF files were imported whether
2379 "read" or "import" was selected, 2) labels needed to set property
2380 "pin", and 3) one of the connections in the definition for "TO"
2381 in lgf.lps needed to be moved.
2383 119) v2.0a1 (alpha) 7/17/98
2384 Fixed some errors in setting filename and object name when loading
2385 or attempting to load files. Fixed netlist error for connecting
2386 multiple instances of the same label on a page. Got rid of
2387 string-sharing behavior for labels and malloc'd each copy instead.
2389 118) v2.0a0 (alpha) 7/10/98
2390 Replaced Xcircuit version 1.7 with version 2.0, schematic capture
2391 system included. Instantiating better management for version
2392 numbers, starting right here!
2394 Version 1.6 (January 1998 to May 1998)
2395 ----------------------------------------------------------------------
2398 117) A few bugfixes and additions courtesy of Jo"rg Wunsch, including
2399 the addition of handling WM_DELETE_WINDOW client messages to
2400 allow the program to be closed by window manager controls.
2402 116) Bug fixes from Paul Slootman for the 64-bit Alpha platform.
2404 115) David DiGiacomo pointed out that the problem with the "make"
2405 halting under Solaris is the indeterminate exit status returned
2406 by the menudep program. This has been fixed.
2410 114) Backspace can no longer be typed from the keyboard; instead,
2411 the keyboard Backspace acts like Delete, and a Backspace
2412 character can be inserted from the "Text" menu.
2416 113) Fixed a bug found by Cliff Koch <koch@cig.mot.com> in which
2417 xcircuit did not check if an object name consists entirely of
2418 numerals, which screws up the PostScript interpreter, which
2419 tries to treat it as an integer.
2420 112) Fixed a bug found by Dale Scheetz <dwarf@polaris.net> in which
2421 a divide by zero would occur if a directory list was longer than
2422 the pixel height of the file read window.
2423 111) Fixed the colormap problem by figuring out how to get XCircuit
2424 to gracefully install its own colormap on startup if the default
2429 110) Cleaned up the last typecasting problems in both the toplevel
2430 directory and Xw; now should compile cleanly on all platforms
2431 without specifically setting CCOPTIONS and CDEBUGFLAGS in the
2433 109) Changed the file loading routine so that Xcircuit automatically
2434 figures out whether the file is a PostScript or LGF file, so
2435 that there are no longer two separate "load" commands in the
2437 108) Added a number of "diglog" gates to the lgf.lps library; fixed
2438 a bug reported by Jean-Luc Margot in which Imakefile refuses
2439 to create the lib directory.
2440 107) Fixed more problems with the inch/cm conversion, bugs reported
2441 by Uwe Steinmann. Made all displays report in cm when in cm
2442 gridstyle mode. Also made the full page switch from letter
2443 size to A4 size when switching between inch and cm grids.
2447 106) Cleaned up typecasting problems which produced compile-time
2448 warnings. Added "integral" sign to the alphabet vectors and
2449 revised the signal.lps library to include it.
2450 105) Fixed longstanding bug in which the library (M)ove command would
2451 overwrite an object with another.
2452 104) Fixed another bug found by Monte Bateman in which the system
2453 crashed when one tried to delete an object which had a dependency
2455 103) Fixed a bug found by Monte Bateman which was that the alternate
2456 color scheme flag did not toggle if the alternate color set was
2457 chosen from the .xcircuitrc file, and in which the catalog objects
2458 did not invert color and so became black-on-black or white-on-white.
2459 All catalog objects now have color DEFAULTCOLOR instead of color
2460 FOREGROUND, which makes more sense anyway.
2462 Version 1.5 (May 1997 to December 1997)
2463 ----------------------------------------------------------------------
2467 102) Added a copyright "artistic license". Changed filename
2468 of distribution tarfile to contain the version number
2469 (xcircuit-6.1.tar.gz). Began posting xcircuit to
2474 101) Fixed a bug found by Mark Cohen in which xcircuit loses track of
2475 the drawing area-to-window coordinate transformation whenever the
2480 100) Fixed a long-standing problem with rhomboid-edit style for
2481 polygons. The edit points can no longer spontaneously change
2482 during editing; they are fixed when the editing begins. Added
2483 a "Rhomboid-A" style, which is similar to Manhattan style.
2484 99) Used a global variable to keep track of which element is being
2485 edited so that it is unnecessary to swap elements to the end of
2486 the list in order to edit them.
2487 98) Fixed "bug" to make RHOMBOID edit like NORMAL edit when there are
2488 only 2 points in the line (otherwise the second point gets dragged
2489 along with the first).
2490 97) Added capability to "hide" objects if the name of the object ends
2491 with an ampersand ('&').
2492 96) Added override of default colors and addition of new colors to the
2493 .xcircuitrc file definition.
2494 95) Changed all color entries from type "short" to type "int" to allow
2495 xcircuit to run on 16- and 24-bit TrueColor visuals.
2499 94) Added "setmiterlimit" command to xcircps.pro to supress odd glitches
2500 in some renderers (gs and certain printers) when drawing paths. Do
2501 these devices not have the (stated) default value of 10?
2502 93) Finished adding color. Added "scb" and "sce" (select-color-begin
2503 and -end) to PS profile. "Opaque-stipple" style no longer selects
2504 "setgray" in postscript; gray is selected by choosing the color
2505 gray. Added "Inherited" color to list & based color scheme on the
2506 idea of "color inheritence".
2507 92) Began adding color; separated definitions for color and stipple
2508 patterns, and set default color scheme to black-on-white. Added
2509 stippled and colored rectangles to the Xw MenuBtn options for
2514 91) Added path horizontal and vertical flipping; fixed a long-standing
2515 bug to let user cancel a "make object" command during the object
2517 90) Stopped linking the filename to the page (object) name.
2518 89) Enabled creation of paths through the use of the "join" function,
2519 and the ability to deconstruct the path into its constituent parts
2520 with the "unjoin" (keystroke "J") function.
2521 88) Implemented paths (currently no editing capability).
2522 87) Redesigned the edit and element creation modes to be consistent
2523 between polygons, arcs, and splines. Arcs and splines can be
2524 edited when created by using mouse button 1 to cycle between
2526 86) Finished implementation of the revised "attach" command, including
2527 attachment to ellipses and to the chord on a closed arc.
2528 85) Finished implementation of ellipses.
2529 84) Implemented a dual color scheme which is switchable from the menu;
2530 no longer need XCircuit.ad.alt. This is preliminary to adding full
2536 83) Preliminary implementation of ellipses. On the top level, ellipses
2537 are constrained to the x-y axes, but can be rotated as part of an
2539 82) Changed the "attach" command to operate on *all* elements, so,
2540 e.g., a polygon end can be forcibly attached to a circle perimeter,
2541 and so forth. Needs a little refining, plus effects should be
2542 duplicated for edit mode in "trackpoly", "trackarc", and
2544 81) Finished implementing rotate and flip for all element types.
2545 80) Implemented optional graphics double-buffering for very clean and
2546 quick refreshing of graphics.
2547 79) Changed lists of elements from separate list for each element to
2548 one list of type (genericptr *), which is re-typecast to each
2549 element type. Makes a number of things much cleaner
2550 78) Got rid of type WIRE altogether; only has polygons. No more "J"
2551 command for unjoin, but "j" joins polygons together and the
2552 algorithm is much cleaner than before and shouldn't be error-prone.
2553 77) Gave arcs a line-segment representation, thus fixing the problem
2554 of filled arcs and paving the way for the "path" aggregate element.
2556 Version 1.4 (August 1995 to March 1997)
2557 ----------------------------------------------------------------------
2561 76) Made the scaling slightly more restrictive, to prevent xcircuit
2562 from exceeding bounds of type short int either in the window or
2563 in the page coordinate system.
2564 75) Prevented drawing objects and labels outside of the window area
2565 in order to speed up rendering at close scales.
2566 74) Better precision for Bezier curve rendering and object attachment.
2567 73) Changed rendering to a stacked transformation matrix model.
2568 Speeds up rendering, makes rendering more accurate, and cuts
2569 down on code complexity.
2570 72) Added Fixed-Width (Courier) font, made proper widths for both
2571 Times and Helvetica fonts; implemented some different
2572 characters for each font.
2573 71) Allow change of font, style, and justification for one or more
2574 selected labels. Now deselects labels and arc/poly/spline after
2576 70) Menu entries for text font, style and arc/poly/spline style change
2577 to reflect the status of the currently selected element.
2578 69) Colormap allocation problem fixed by new CvtStringToPixel() routine
2579 which searches colormap for best approximation to color on a failed
2581 68) Wrote program to automatically generate the pathnames for button
2582 and cascade widgets in the pulldown menus.
2583 67) Added polygon flip capability.
2587 66) Expanded file selection widget to select and load multiple files,
2588 also to load (single or multiple) library .lps and analog .lgf files.
2589 65) Added a file selection widget to the popup prompt when selecting
2591 64) Changed structure "select" to "selection" in order to get around
2592 problem compiling under Solaris.
2596 63) Added an output page width and height per xcircuit page instead
2597 of the default 8.5" x 11" page that existed previously. Output
2598 continues to be centered on the page.
2599 62) Separated file names and page names. These are linked by default,
2600 but can be separated by supplying a different page name, or by
2601 having a multi-page output.
2605 61) Added inch/cm reporting for keyboard-adjusted snap spacing.
2609 60) Fixed minor bugs in the DSC-PostScript: %%PageTrailer statement
2610 is not needed, and %%Trailer *must* come after all page commands
2611 including the "showpage". Only the XCIRCsave restore statement
2612 should be between %%Trailer and %%EOF.
2613 59) Output scale changed to default of 1.0, with the arbitrary
2614 pixel-to-PostScript-units constants bansished to the
2615 PostScript prologue.
2616 58) Changed grid and snap spacing routines to display inches/cm
2617 instead of pixel coordinates. Pixel coordinates are now
2618 entirely hidden from the user, who only sees things in
2619 inches or centimeters (with a default of inches, reported
2621 57) Position display now gives length of simple wires in addition
2622 to the cursor position.
2623 56) Modified routine to print coordinates in fractional inches,
2624 to be able to generate a fraction from an arbitrary float.
2628 55) Added code to prevent infinite recursion by attempting
2629 to place an object within itself.
2630 54) Revised .lgf-file reading for an exact 1:1 correspondence
2631 of lgf names to the xcircuit library object names; made
2632 a library "lgf.lps" to cover the main analog gates, with
2633 some stylistic changes to the look of some of the gates.
2634 53) Added capability to move objects around inside the
2636 52) Added capability to make a copy of an object from
2637 either library page into the user library.
2638 51) Added capability to delete objects from the library.
2642 50) Cleaned up the Xw code so that it will compile on
2643 not-so-forgiving compilers; also pruned out a
2644 few things that are not used by Xcircuit.
2645 49) Finally wrote the routine to compare objects and
2646 avoid name conflicts.
2647 48) Made PostScript output DSC-compliant, made file
2648 reading more robust to errors in the input file.
2649 47) Started implementing library manipulation routines
2650 with library object rename; also added keystroke
2651 "c" from library mode for "copy".
2652 46) Fixed some problems with catalog organization of
2654 45) Added multiple page loads and saves: pages with
2655 the same name will be grouped together into one
2656 file. EPS is not an option for multiple pages.
2657 44) Made pages reallocatable, and added "Goto Page"
2658 option in menu for accessing page numbers > 10.
2659 New pages are automatically added to the pull-down
2660 menu. Page names are the same as the object name.
2661 43) Changed format of file ".xcircuitrc" and added
2662 ability to load libraries, override the default
2663 library load, load extra fonts, and set certain
2665 42) Added ability to load an arbitrary number of
2666 user-defined fonts. New fonts are automatically
2667 added to the pull-down Font menu.
2668 41) Changed embedded commands in text string to two bytes
2669 each, allowing future extension of embedded commands.
2670 40) Added handling of Ctrl-A and Ctrl-E for moving
2671 to beginning and end of text, respectively
2675 39) Added reading of ".xcircuitrc" in user's home
2676 directory as an additional library file (file
2677 takes same form as xcircuit or library files).
2678 38) String text appears in message window immediately
2679 upon starting or editing a label, and disappears
2681 37) Fixed bugs in labels: Rewrote routines so all
2682 labels start with a font-change specifier;
2683 removed "fontset" command from PostScript profile.
2687 36) Differentiate between Writing and Overwriting
2688 a file (to prevent disasters!) and warn user
2689 when file is about to be overwritten.
2690 35) Made all spline routines relative to SPLINESEGS
2691 and increased default SPLINESEGS to 20
2695 34) Allow push and pop while an object or objects
2696 are selected and being dragged.
2697 33) Added Rhomboid box editing in addition to
2699 32) Added arrow-attachment routine to align arrows
2700 with an underlying wire/polygon/spline/arc while
2702 31) Changed selection mechanism (again) to a simple
2703 cartesian measure of distance from a line to
2704 the cursor position.
2705 30) Added capability to flip, rotate, and snap-to
2706 while an object is selected and being dragged.
2710 29) Added vertical flipping capability using macro "F".
2711 28) Added extended character set capability;
2712 both octal codes and LaTeX-like symbol names
2713 can be entered at the text prompt after a
2715 27) Added lines to show spline control points and
2716 arc center during creation and editing.
2717 26) Moved to PostScript prologue version 1.5, for
2718 which the order of parameters for polygon, arc,
2719 and spline are rearranged and made similar to
2720 each other. Reading of v1.4 files is kept for
2721 backward compatibility.
2722 25) Added rudimentary opaque-fill style for polygons,
2723 arcs, and splines. "Vertical" alignment can only
2724 be controlled on the object level, using the X
2726 24) Added "Manhattan Box Edit" style (default: ON)
2727 such that right angles in polygons are maintained
2730 Version 1.3 (March 1995 to June 1995)
2731 ----------------------------------------------------------------------
2735 23) Added backspace character handling in text.
2736 22) One-step keystroke for dotted/dashed/solid line.
2737 21) Allowed "join wires" to join wires and polygons.
2738 20) Allowed "styles" options to operate on wires
2739 by automatically converting them to polygons.
2740 19) Fixed bug in which Xw copy buffer overflowed
2741 string in sprintf() [solution: restrict
2742 "precision" of string thus: "%.149s"].
2743 18) Added "edit (e)" command to menu.
2744 17) Added capability to read Caltech tools' "analog"
2749 16) Added feature to report non-printing characters
2750 in a label, when editing.
2751 15) Added Zoom Box function.
2752 14) Changed copy behavior to allow multiple copies
2753 when button1 is used, and a single copy when
2755 13) Fixed problems with pixel trash left behind by
2757 12) Beeps when it doesn't write file due to filename
2759 11) Added countdown for multiple selections.
2760 10) Added new cursor for edit mode.
2761 9) Xcircuit *only* does auto delete/addition of the
2762 extension if extension is ".ps". All other
2763 filename extensions are left alone.
2764 8) Changed behavior so that request to load a file
2765 which does not exist will change the current
2766 file name, provided that current page is empty.
2767 7) Changed library pages to be actual objects, made
2768 routine "composelib" to arrange the library objects
2769 based on height and width of each object, changed
2770 names of objects to xcircuit labels.
2771 6) Fixed numerous malloc() bugs.
2772 5) Added function to import xcircuit files into the
2773 current file as well as loading them into a page
2775 4) Added ability to change coordinate grid and
2776 report coordinates in inches (decimal and
2777 fractional) and centimeters as well as the usual
2779 3) Added (simple) help screen
2780 2) Added simple scrollbars on side and bottom, allowing
2781 click-to-pan. Added global variables to save current
2782 GC state and foreground color.
2783 1) Added 2 message widgets, one for name of file
2784 to edit, one for coordinates, one for information
2786 ----------------------------------------------------------------------