-
Notifications
You must be signed in to change notification settings - Fork 24
/
CHANGES
2786 lines (2443 loc) · 132 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Xcircuit v3.x Change Log (file CHANGES)
----------------------------------------------------------------------
Please note that there is an automatically-generated, up-to-date list
of the most recent code changes at the URL
http://opencircuitdesign.com/xcircuit/changes.html
Occasionally I spend some time to convert that list into text and put it
back here. So if you're looking for the most recent changes, try the
website.
Version 3.6 (January 2006 to present)
----------------------------------------------------------------------
369 v3.6 rev 21 4/7/06
Incorporated Michael Goffioul's code for (native) Windows
compilation.
368 v3.6 rev 20 4/5/06
Fixed an error with the -noconsole -nowindow startup, where
the option switches were passed to GUI_init; XCircuit now
searches the arguments for a Tk window name rather than relying
on the number of arguments to figure out whether or not it is
running in batch mode.
Also: Fixed an error in a Wprintf() statement when a library
file cannot be found.
368 v3.6 rev 19 3/31/06
Fixed the select color, which got changed to cyan because the
wrong line was deleted from the source file. Also, implemented
a policy of removing redundant points after a line has been
drawn, because some drawing programs use left-button + middle-
button, and I've seen several xcircuit novices doing this.
Also: Fixed the undo mechanism with respect to rotates and
flips, so that rotates and flips during a move or copy operation
don't screw up the undo operation.
Also: Changed the look of the GUI a bit, with softer colors and
no red borders around the buttons and message widgets.
367 v3.6 rev 18 3/30/06
Added command option "config database" to update the internal
list of colors, fonts, and other values that should be able
to be set with the Tk "option" command. This now allows colors
to be redefined from within the startup script. Removed the
"query" color, which is no longer used, and the "filter2" and
"bar2" colors, which are (and never were) necessary.
366 v3.6 rev 17 3/28/06
Reorganized the source code to separate most of the Xt GUI
functions into two separate files, xtgui.c and xtfuncs.c.
365 v3.6 rev 16 3/27/06
Changed the "keybind" function to be per-window so that the
scroll-wheel and auto-increment functions work in multiple
xcircuit windows.
Also: Corrected a bad error that allowed an object instance
being moved to be selected when "carrying" it into another
object, causing xcircuit to crash.
Also: Changed the behavior of Tcl expression parameters so that
the parameter evaluation is done ONLY as part of the opsubstitute()
routine; this places some restrictions on the use of expression
parameters but should avoid problems where expression parameters
make XCircuit crash.
Also: Created a new symbol "netpointer" in the generic library
that implements a "netlist get" function. Corrected a number of
errors related to properly executing expression parameters.
Also: Added "analoglib3.lps" and "digitallib.lps" to the installed
libraries.
Also: Corrected the library zoom/position problem definitively
(see note for revision 13).
364 v3.6 rev 15 3/22/06
Added command options "library writable" and "library changed".
Removed the "Library: " string from the beginning of library
names. Modified the "Write All" Tcl script to handle automatic
writeback of libraries that have changed, and to note libraries
that have changed but which are not writable.
364 v3.6 rev 14 3/21/06
Added the "-target <library>" option to the "page load" command.
This allows objects in a file to be placed somewhere other than
the "User Library", without having to move them by hand. Let
XCOps(library) stand for *both* the -replace and -target libraries.
Fixed the Tcl wrapper script procedures accordingly.
Also: Added command-line options "xcircuit --help" and
"xcircuit --version" providing essential information.
Also: Added command option "library compose", although the fact
that the library does not get composed in certain cases needs to
be investigated.
Also: Added variable xobjs.hold = XCOps(hold); when FALSE, the
mouse HOLD modifier is disabled (perhaps this should be an
integer that sets the delay time, with 0 = disabled?).
Also: Fixed menu command callbacks that were broken for several
revisions.
363 v3.6 rev 13 3/18/06
Various fixes to correct problems found running various steps
while writing tutorial number 3: Fixed Alt-f key binding for
font changes, user library redraw (still is wrong somewhere),
variable substitution in filenames, and a few others.
362 v3.6 rev 12 3/17/06
Added the ability to move objects both within a library and between
libraries simply by using the "library move" macro (Shift-M) to
pick up the object, then transferring it between library pages.
Also, virtual copies can be made of any object in the library (not
just those that have paramters), and the virtual copies can be
flipped and rotated.
Also: Fixed the "-noconsole -nowindow" invocation, which was
broken.
Also: Added variable and tilde expansion to filenames in the
"%F" and "%f" escapes in info labels.
361 v3.6 rev 11 3/15/06
Corrected a number of event errors, including the inability to
select from the library via a button tap and drop into "move"
mode.
Also: Implemented a version of James Vernon's mouse button hints.
Also: Corrected the LaTeX mode output to properly account for files
with non-".ps" extensions (e.g., ".eps").
360 v3.6 rev 10 3/14/06
Corrected an error which prevented edited library object names
from being applied to the object name. This resulted in confusion,
because the library would show the modified name, while the
object itself retained its original name.
Also: Added multiple window handling to the undo/redo mechanism.
Also: Added a window close procedure and a command "config delete"
to correspond to it.
359 v3.6 rev 9 3/13/06
A number of fixes to the key binding and function dispatch
routines from rev 8: Fixed Finish_Copy mode, fixed handling
of ASCII keystrokes in text entry modes, fixed retention of
view scale and position after displaying a library page.
Fixed error in prohibiting justification action in "normal"
mode.
Also: A number of fixes to the wrapper window menus for
multiple pages: Changed library and page menus to be shared,
applied new color, font, and encoding functions to all windows,
and fixed the Tk color picker call for the "add new color" menu
option.
359 v3.6 rev 8 3/12/06
Major overhaul of the key binding and function dispatching
mechanisms to accomodate multiple windows.
Still to be done: Some menu items (lists of Libraries and
Pages, for example) need to be shared among all windows.
Need a window close routine. Need a routine to transfer a
selection between two windows. Need to handle multiple
windows in undo/redo.
Also: Fixed a warning message on number of parts that should
apply only to library objects, not pages.
358 v3.6 rev 7 2/24/06
Changed the meaning of CAD_HOME to point to "libdir", such
that distributions can set it to something like /usr/share
without causing trouble. Changed CAD_HOME to CAD_ROOT so as
to prevent it from breaking backward-compatibility.
357 v3.6 rev 6 2/23/06
Fixed a spurious "Error: end of file" message.
Corrected the configure.in once again because Tcl/Tk defines
TCL_INCLUDE_SPEC but *not*, stupidly enough, TK_INCLUDE_SPEC.
356 v3.6 rev 5 2/21/06
Added the Shift-Button-1 bindings to duplicate Button-2
functions as an alternative to using "xcircuit -2".
Also: Added a flag bit to the line styles representing
square end caps.
355 v3.6 rev 4 2/13/06
Fixed an error with the LaTeX mode ".tex" output to correctly
handle the filename when the extension of the xcircuit file
is not the default ".ps". Also, changed the configure script
to add some other standard locations to the directory search
for tclConfig.sh and tkConfig.sh, and made use of the
TCL_INCLUDE_SPEC and TK_INCLUDE_SPEC from those files to set
the INC_SPECS definition. Thanks to John Rigg for pointing
out these problems with the Debian compile.
Also: Fixed a bug that can potentially cause XCircuit to
crash when a box is drawn.
354 v3.6 rev 3 2/3/06
Added a number of "undo" functions for minor things that had
been left unimplemented, including linewidth changes, scale
changes, style changes, and text justification and option
settings (flip invariance, latex mode, etc.). Thanks to Joel
Kuusk for pointing out the omissions.
353 v3.6 rev 2 1/22/06
Updated a number of changes from around version 3.5.3 that
broke the non-Tcl-based version of xcircuit (not exhaustively
tested).
352 v3.6 rev 1 1/20/06
Finally got around to correcting the crash backup behavior
so that xcircuit ignores crash backup files belonging to an
active process (i.e., another xcircuit currently running).
351 v3.6 rev 0 1/7/06
Restructured variables internally to acommodate multiple
layout pages. This is only a start, as currently new
windows have no callbacks created.
Also: Created an enhanced version of the "Make Matching
Symbol" routine, and created a new routine and menu selection
"SPICE to Symbol", which creates a symbol for, and link to,
a SPICE file containing a subcircuit definition.
Also: Longtime error: Corrected the quick screen intersection
check to include the schematic bounding box. Otherwise, when
only pin and info labels intersect the window, nothing is drawn.
Version 3.5 (November 2005 to January 2006)
----------------------------------------------------------------------
350 v3.5 rev 5 12/19/05
Added command option "object <handle> library [<library>]"
where the final optional argument was previously unavailable.
If present, the final argument declares a new library for the
object. If not present, the number of the library containing
the object is returned.
Also: Corrected lib/tcl/symbol.tcl where the "%n" was missing
from the end of the subcircuit call statement.
349 v3.5 rev 4 12/14/05
Fixed an error in netlisting which causes the netlister to
write "X.." lines in the SPICE output of "trivial" symbols
like the "dot" object.
348 v3.5 rev 3 12/13/05
Fixed another fatal error in file writing due to having a
NULL filename.
Also: Revised the Wprintf() calls to accept variable
argument lists, rewrote the Tcl versions of W*printf() as
calls to a script rather than being hard-coded as a specific
Tk function. This allows me to rewrite the script equivalent
of Wprintf() to print to both the message widget and the
console output, so the console now gets a complete record of
warning, error, and informational messages produced by
xcircuit.
Also: Fixed two fatal errors with "Load Dependencies", one
which crashed xcircuit due to a typo in the Tcl code for
command "page links load", and the other which created an
infinite loop if loadfile() failed to load a file inside
the recursive call to "page links load".
347 v3.5 rev 2 12/8/05
Corrected a behavioral error in which xcircuit does not
generate netlist output for a symbol containing an info
label but no pins. Thanks to Herman Lee for pointing out
this problem.
Also: Corrected a problem in 3.5.1 in which xcircuit
changes filenames in a multi-schematic session to match
the top-level schematic. It ignored the setting of
"dmultiple", and thus would make changes without warning
when it generated the crash backup file, for example.
Also: Added a widget for managing multi-schematic file
writes, with a menu hook from "Files->Write All...".
Also: Changed the behavior of "page changes" to include
change counts of all descendents. Fixed the Tcl parsing
of the "page" command for certain options when a page is
specified in the command (e.g., "page 1 fit"). Modified
the "page changes" command so that the change count can
be altered, thus forcing a page to be recognized as either
modified or unmodified.
346 v3.5 rev 1 11/21/05
Separated the source code into distribution (version 3.4) and
development (version 3.5) branches, on the suggestion of
Zvezdan Petkovic.
Also: Added command option "page changes" which reports the
number of changes on a page. Modified some behavior so that
starting certain commands like "copy" does not increment the
number of changes, so that the command can be canceled without
xcircuit thinking that the page has been modified.
Also: Added command option "config search file|library <list>"
with a colon-separated list <list>, specifying the search order
on a specific set of directories. These lists are initially
null, and behavior remains the same as before while these lists
are null. A non-null search path overrides the default search
on the current working directory, and a non-null library search
path overrides the search on XCIRCUIT_LIB_DIR and the default
install directory path. Modified the library manager to use
search paths.
Also: Allow "library load <filename>" on a regular xcircuit
(.ps) file, which has the behavior of loading the objects from
the file without loading the pages themselves.
Also: Added command option "netlist get -hier" to generate
a slash-separated hierarchy using device names and indices.
Also: Fixed "netlist goto <name>" to accept the same syntax
that is produced by "netlist get -hier", and finished the coding
of the routine.
Also: Added command options "netlist select <netname>" and
"netlist position <netname>".
Also: Changed behavior of the "%" macro so that it also raises
the console to the top of the window.
Also: Added command option "netlist parse <mode>" (e.g.,
"netlist parse spice") that allows some selective parsing from
a Tcl script.
Also: Created a script called "symbol.tcl" that replaces the
function of the "Make Matching Symbol" button in the xcircuit
menu, with a considerably fancier interface.
Also: Modified the command "color set" to accept color names.
346 v3.5 rev 0 11/21/05
This revision was not posted, but reflects changes made through
version 3.4 revision 10 that were removed from the "stable"
branch of the distribution.
1. Changed the crash backup file name to include the process ID.
This is intended to prevent xcircuit process from treating a backup
file from another existing xcircuit process as a crash file to be
recovered, but the code is not yet finished.
2. Enabled creation of parameters on a top-level page, and revised
the Tcl "param set" command to handle this case.
3. Added a "page links sheet" option to allow querying "sheet A of B".
4. Added a "page links load" option to allow symbols to specify which
file contains the schematic, and load these prior to writing a netlist.
Version 3.4 (August 2005 to November 2005)
----------------------------------------------------------------------
345 v3.4 rev 10 11/16/05
Removed the problem with automatic generation of pin labels on a
symbol during a copy action in the schematic.
Also: Added doubly-protected backups to standard file writes.
This renames the existing file to filename + tilde ("~") so
that the file is not truncated if a crash happens during a
normal file write.
Also: Added patch files by Zvezdan Petkovic for proper
compilation on OpenBSD.
344 v3.4 rev 9 11/14/05
Applied (partially) a patch from Larry Doolittle that fixes a
pointer bug in the non-Tcl version, and allows compilation of
the non-Tcl version on a 64-bit system.
Also: Fixed the event mechanism to allow pages to be selected
in the page directory (otherwise, pages cannot be swapped).
Also: Fixed the Tcl "push" command so that "push selected" now
works, and clicking the "push" toolbar button when an object
is selected has the expected effect.
Also: Fixed the Tcl "label justify" command so that changing
vertical justification does not reset the horizontal justfication.
Also: Fixed the Tcl-to-xcircuit string conversion so that plain
text with spaces is handled as expected (thanks to Mark Martin
for pointing out this problem).
343 v3.4 rev 8 11/10/05
Changed an instance of "regsub" to make it backwardly compatible
to Tcl version 8.3; otherwise, xcircuit fails to start up
properly when linked to Tcl/Tk 8.3.
342 v3.4 rev 7 10/28/05
Corrected event handling of schematic/symbol association,
which was allowing xcircuit to return to "normal" mode while
on a library page, resulting in bizarre behavior, and preventing
the schematic/symbol association from being made. Thanks to
James Vernon for pointing out the problem.
341 v3.4 rev 6 10/25/05
Fixed bounding-box calculations on instance loads so that
instanced values of expression parameters are handled correctly
on file read-in. Also, corrected "resolveparams" to remove
cached expression results before writing a page to a file.
Also: Added component unnumbering feature (as written, only
for devices having the "idx" parameter).
340 v3.4 rev 5 10/21/05
Added command option "label replace", menu items "Text->
Increment" and "Text->Decrement", and key bindings "i" and
"I" (respectively) to auto-increment (decrement) numerical
values inside text labels. As part of this, I also rewrote
and completed the Tcl list-to-XCircuit string conversion
routine.
Also: Fixed a bug reported by James Vernon due to accessing
free'd memory, which appears to be fatal under Cygwin but
not under Linux.
339 v3.4 rev 4 10/19/05
Added command option "library filename" and the ability to
save the first file from which a library page was loaded.
Also: Added the "page load -replace" and the ability to
load/save specific libraries by name. Changed the "File"
menu and the popup prompts to allow all of this to be done
from the GUI interface.
Also: Added more Cygwin handling to the Makefile process,
and tested the Cygwin compile and install.
338 v3.4 rev 3 10/6/05
Some fixes to things broken between versions 3.3 and 3.4:
Move "undo" stays on grid. Items being moved during move
and copy commands stay with the cursor through pans.
Button-3 now does the proper thing for cancellations
during move mode.
337 v3.4 rev 2 10/6/05
Refined and expanded the hierarchical element handle
notation to cover all commands accepting element handles.
This will now work for commands such as "element type".
Still, only "polygon points", "spline points", and
"instance center" commands translate point positions back
to the top level.
336 v3.4 rev 1 10/5/05
Fixed an error with finishing path edit operations,
added "internal units" type to the grid display types,
and implemented a (preliminary) hierarchical specification
for element handles that can be used with the "polygon
points" command to refer point positions back to the
top level.
335 v3.4 rev 0 10/3/05
Substantially revised the interface and input mechanism,
removing the remaining methods that were hard-coded to
various mouse buttons. Instead, I have implemented the
button "Hold" mechanism in a general-purpose manner that
also allows definitions of key hold bindings. I removed
many of the event modes, including all of the element
creation modes available from the GUI tool buttons, as
these are more obviously implemented by changing button
bindings. This allows the various modes to be switched
on and off, and allows wire drawing mode to be just one
of the modes rather than the default mode. Adding "wire",
"move", and "pan" modes as more-or-less obvious button
binding variations. Added ASCII85 and Flate encoding/
decoding to the graphic read/write operations. Added
a "-2" option to the command-line invocation of xcircuit
to set mouse button bindings for 2-button mice.
Version 3.3 (September 2004 to July 2005)
----------------------------------------------------------------------
334 v3.3 rev 38 9/28/05
Corrected multiple-button checking routine to look at
the event state only, not the button, as the button
entry is changed by some routines. This was preventing
the shift-button key bindings from working.
333 v3.3 rev 37 9/20/05
Corrected SPICE output to generate a line break and
continuation "+" character for wraparound lines.
332 v3.3 rev 36 9/16/05
Fixed an error with netlist output in which parameters are
not substituted if xcircuit is run in batch mode.
331 v3.3 rev 35 9/15/05
Fixed parameter indirection---parameter string was not
initialized on library read-in, causing a segfault. Also,
changed the behavior of ordered spice lines so that they
will be placed after any subcircuits are written, to avoid
nesting subcircuits. A syntax "spice@" has been added for
lines that really should go in front of everything (except
for the special title line #1).
330 v3.3 rev 34 9/14/05
Implemented "label latex" in the Tcl version, which was
missed in the move from Xt to Tcl, and because it is an
obscure function, was not noticed for some time. Thanks
to Eric West for bringing it to my attention. Also:
Applied a patch by Joerg Wunsch that prevents a segfault
when rotating a path element.
329 v3.3 rev 33 9/8/05
Corrected an error in netlisting that would incorrectly
identify empty parameter strings as the "idx" parameter.
Also, added a "-nowindow" switch to the UNIX command-line
invocation to allow xcircuit to be used as a filter (batch
process) without creating/displaying an X11 window.
328 v3.3 rev 32 9/6/05
Changed the handling of netlist writing from symbols, in
particular to avoid crashing on encountering unexpected
info label contents. Also: Added a "-replace" option to
file loads, that causes any object in a file to be
overridden by one in a library "master copy". Also: Revised
the "library make" command to allow an arbitrary number of
empty libraries to be created.
327 v3.3 rev 31 8/10/05
Fixed a problem with the graphic image handling in which graphic
images are saved to the output file if they exist, regardless of
whether or not they show up in the output page. Also fixed the
PPM reader to handle whitespace and newlines in the header
correctly, according to the PPM spec.
Also: Added revision information to the "welcome"
message in addition to the major.minor version.
Also: Some changes to the Makefile to properly handle
passing of linker flags in the shared vs. static compiles.
326 v3.3 rev 30 7/28/05
Fixed a problem with the startup TCL code that causes XCircuit
to fail to start if a parse error is found in the user's
~/.Xdefaults file (even a completely unrelated parse error).
Thanks to Roland Roberts for the bug report (and, much earlier,
Romano Giannetti, although at the time I administered to the
symptoms, not the disease.
325 v3.3 rev 29 7/22/05
And yet more auto-numbering revisions. Ensure clearing of
device indices prior to both netlist output and auto-numbering.
Also, fixed parseinfo() to correctly handle the mode="" case.
324 v3.3 rev 28 7/21/05
More fixes to auto-numbering code ($#!@&). Appears to work
now for various cases, although I am not satisfied that it
covers all situations. One part of the fix forces xcircuit
to ignore all fixed component assignments when generating
flattened netlists. While this ensures that all component
numbers are unique, the output is not what might be expected,
especially if there is no hierarchy in the schematic.
Probably the parsing for fixed device numbers should *not*
be done by parseinfo() but should be handled separately,
under the assumption that this handles a limited number of
backwardly-compatible cases and that normally it should
expect to find "idx" and "class" parameters for each component.
323 v3.3 rev 27 7/20/05
Revamped the auto-numbering code (again!) to better handle
the "class" and "idx" parameter method, and make auto-numbering
independent of the netlist format (i.e., SPICE vs. pcb).
Device (component) name ("class") was moved from the object
structure to the Calllist structure (after all, if the class
is parameterized, then an instance may have a different class
from the object's default class), and this is generated directly
after generating the Calllist structure, since it is independent
of the netlist output format.
322 v3.3 rev 26 7/19/05
Further corrections to revision 20 code. Device classes are
now checked and updated for non-pcb devices (e.g., mosfets)
when doing autonumbering. Also: parameter setting works
for multiple selections; e.g., several transistors can be
selected at once and have width or length changed simultaneously
for all of them. Thanks to Carsten Thomas for the bug report
and feature request.
322 v3.3 rev 25 7/18/05
Finally logged into SourceForge and incorporated some of the
more recent patches found there. Includes a patch to
configure.in by Min Sik Kim, and a patch to fontfile.c by
Zunda.
321 v3.3 rev 24 7/17/05
Updated keybindings with the new function "Graphic", which
otherwise causes the help utility to crash. Thanks to John
Rigg for the bug report.
320 v3.3 rev 23 7/15/05
Added file load and save methods for the "graphic" element,
as well as undo/redo operations, a menu item for loading
graphic elements, and all essential operations.
319 v3.3 rev 22 7/14/05
Corrected broken file parsing from revision 21. Image data
is now read from "objectread" like everything else inside
the Setup block.
318 v3.3 rev 21 7/13/05
Fixed a bug introduced in revision 20. Also, started adding
the new basic element type "graphic", to handle inclusion and
placement of arbitrary graphic images. This will eventually
replace the buggy and cumbersome "background postscript"
rendering via ghostscript.
317 v3.3 rev 20 7/8/05
Changed the component auto-numbering so that all component
values are treated as base-36, to allow handling of non-numeric
component numbers. Also, the routine that determines the
number to assign will return the smallest unused integer
instead of (1 + (largest number found)) so that use of
non-numeric values doesn't cause the auto-numbering algorithm
to generate strangely large numbers. Also: The auto-numbering
algorithm now looks at the parameter "idx" if it cannot find
a "pcb"-style info-label. This allows non-pcb parts like
transistors in VLSI schematics to be auto-numbered. This is
really the preferred way to handle auto-numbering, and all
library parts ought to be updated to contain the "idx" parameter.
316 v3.3 rev 19 6/28/05
Resolved the issue with retaining the stack order of
parts through a delete-undo cycle, so that all previous
undo records point to the correct parts in the correct
order. This eliminates a lot of spurious error messages
coming from the undo mechanism.
Also: Resolved the issue with polygon/arc/spline/path
rotations, where rotations cannot be undone exactly due
to accumulating roundoff errors. The solution is simply
to treat the rotation as an edit for these element types.
Also: Fixed an error with label deletion. Labels that
are edited out of existance were not handled properly,
an egregious error that was somehow overlooked.
Also: Modified console.tcl script to withdraw the
console window on a window manager "close" request,
rather than exit the application. This bolsters
the end-user illusion that the console is a subsidiary
window of the layout, rather than vice versa.
315 v3.3 rev 18 6/16/05
Fixed an error reported by Benoit Bidoggia, in which
an attempt to clean up redundant font changes triggers
a crash becuase it has been passed the top-level instance
instead of NULL (NULL is necessary because this function
is called when reading an object definition, at which
point there are no instances).
314 v3.3 rev 17 6/12/05
Fixed another error that showed up in Uwe's schematic,
which is that the "test_insideness" algorithm fails if
the box is degenerate---which happens for labels that
are parameters set to a null string.
313 v3.3 rev 16 6/10/05
Corrected an error found by Uwe Zimmermann in which
xcircuit calls free() on an unallocated space when
destroying an object containing an indirect parameter.
Also: Added some experimental code replacing the
drawing functions with OpenGL. This can be compiled
in by passing "--with-opengl" to the "configure"
script. However, the code is currently unfinished.
312 v3.3 rev 15 5/31/05
Added another feature to the change of revision 14:
Info labels that have negative sequence numbers (e.g.,
"spice-1:", "spice-2:", etc.) will be written after all
subcircuit and component output, whereas the usual positive
sequenced labels "spice1:", "spice2:", etc., will be written
before subcircuit and component output. Each sequenced line
is followed by a return character in the output. First and
last line of the netlist output is hard-coded (e.g., circuit
title and ".end" line in SPICE (see rev 5 comments)).
311 v3.3 rev 14 5/27/05
Changed behavior of netlist generation to allow (finally!)
info labels on a top-level schematic. These labels are
written verbatim into the output. Probably needs checks
to avoid attempting to process certain embedded escapes
like pins. . .
310 v3.3 rev 13 4/08/05
Fixed an error that missed recalulating the instance
bounding box after a text rejustification.
309 v3.3 rev 12 3/29/05
Changed behavior of the netlist connectivity highlight
function in response to a suggestion by Long Yang that
pin connection points should be hightlighted, the better
to show places where a net does not attach to a pin.
Also: Added a feature in response to a comment by John
Barry that error messages disappear when netlists are
saved if the netlist is not recreated. This feature
includes a checkbox in the Tcl wrapper that by default
forces regeneration of the netlist on each netlist file
write function.
IN PROGRESS---Added "idx" to Pagedata; need to separate
areastruct.page from the actual printed page number.
This simplifies page re-ordering and allows schematic
libraries to be "hidden" among the rest of the pages.
xobjs.pages and areastruct.page will still refer to the
index into pagelist.
308 v3.3 rev 11 3/12/05
Fixed an error, pointed out by Long Yang and Svenn Bjerkem
in which xcircuit crashes when descending into an object.
This was due to out-of-bounds array addressing, and must
have been in the code for some time, but only shows up
on some compilers (Solaris?).
307 v3.3 rev 10 2/27/05
Fixed an error in the flattened netlist output that has
probably existed in most revisions of 3.3 to date,
where net names are not correctly passed down from
parent cell to child cell. Thanks to Mark Chang for
pointing out the error.
Also: Fixed a bug in the selection mechanism where
the selection is not NULLed prior to return from the
calling routine if no selections are found.
306 v3.3 rev 9 2/5/05
More changes to the selection mechanism. Selection
mechanism sorts polygons (wires) according to
distance of the nearest edit point. Previous
selection is always kept and compared against
current selection. "pick" is only advanced if the
selections are the same. Pointer position when
selecting a polygon to edit is restored from the
warped position after a button-3 cancel function.
Also: Added all edit functions to the "undo"
mechanism, as well as label creation.
305 v3.3 rev 8 2/4/05
Corrected several mistakes in the selection mechanism
that left pending (unfinished) events on the stack.
Also: Corrected a problem from rev. 7 that did not
register unselection events (key "x") with the undo
mechanism.
304 v3.3 rev 7 2/1/05
Revamped the selection mechanism (finally) to get
rid of the cumbersome "click to select or reject"
method. The new method picks one element, and
cycles through objects so that a different object
is selected on each button press, if several elements
are found at the pointer position. This method would
be equally unwieldy save for a change in the way
object instances are selected---the selection routine
recursively searches for elements inside objects that
are close to the pointer position (albeit with a wider
capture range than on the top level). This prevents
selecting an object instance with lots of white space
if the pointer is in the middle of the white space
(such as a frame or border object).
Also: Corrected the "Make Matching Symbol" callback.
Thanks to Mark Chang for pointing out the error.
303 v3.3 rev 6 1/4/05
Made additions to the "pcbout.tcl" script to support
SMD integrated circuits, and resistors and capacitors
(both chip and axial). "pkg" parameter added to the
Resistor and Capacitor parts in the "analoglib2"
library.
302 v3.3 rev 5 12/16/04
Corrected a fatal error in library copies if no valid
object is selected. Corrected a compile error (C++-like
syntax fails on many compilers). Added option to print
or not to print the ".end" statement at the end of a
SPICE deck.
301 v3.3 rev 4 12/10/04
Corrected an error that allows "temp label" pins to be
assigned the same name for different nets. The number
following "int" or "ext" on temp labels is now changed
to match the net number when referencing the label name,
if it is found to be different.
Also: Corrected another bug that causes a crash when
copying an edited parameter back to an object. The
data record for the PARAM_END structure was not zeroed.
This was okay previously because the data record was
unused.
300 v3.3 rev 3 12/6/04
Corrected a problem in which drawn subcircuits and
subcircuits declared with an "X.." in the info label
will share index numbers, by forcing SPICE output to
generate a devname of "X" for each drawn subcircuit
object.
Also: Changed the behavior so that device numbering
starts at zero, not one. Otherwise, if a device is
numbered zero on the drawing (e.g., by having the index
number entered by hand), xcircuit will generate a spurious
"duplicate part" warning.
299 v3.3 rev 2 12/3/04
Fixed an error (apparently from 3.3 rev 0) that caused
parameters to become hosed if changed (also causes program
crashes).
Also: Added handling of X11 button4 and button5 events for
(potential) binding to mouse scroll wheel motion.
298 v3.3 rev 1 10/8/04
Changed the behavior of the PCB netlist generator to be
more intelligent about finding the bottom of the
layout hierarchy. Also, corrected the netlist generator
where it allowed a global net to be merged into a local
net.
297 v3.3 rev 0 9/28/04
Replaced the "hspice" directory with Conrad Ziesler's
"spiceparser". The use of routine AddNTermModule() has
broken the spice input for now, although once fixed, the
results should be much improved.
Also, changed the handling of expression parameters so
that expression parameter results may be numeric, and
evaluated results are saved in the PostScript output as
instance values. When traversing the hierarchy during
redisplay, commands invoking a "selected" element will
pick up the object instance being rendered. The
combination of these changes allows the implementation
of several useful features such as counter-rotation and
displaying the name of an object within the object.
Version 3.2 (January 2004 to September 2004)
----------------------------------------------------------------------
296 v3.2 rev 27 9/17/04
Quick fix to allow the non-Tcl code to compile; the
experimental "ngspice" code contains numerous Tcl references,
and although it does not depend on Tcl in principle, it is
easier just to disable the code for the non-Tcl compile.
It will not be missed.
Also: Changed the startup method from the hacked-up
redirection of $HOME to a standalone "wish"-like executable
that sets up "wish" to read in the .xcircuitrc file as its
startup script.
295 v3.2 rev 26 9/7/04
Changes based on comments from Dale Grover for correct
compilation/linking/installing under "Fink" on Mac OS-X
10.3.
294 v3.2 rev 25 9/6/04
Fixed the wrapper code to ignore Tk's standard binding for
the Tab and Shift-Tab key events during label text input.
Otherwise, the window loses focus, which is an annoyance.
293 v3.2 rev 24 8/25/04
One major fix to the netlist code to insist that "updatenets"
is never run on a symbol. Otherwise, a circuit that has a
symbol that is not used anywhere will generate an error when
netlisting, resulting in no netlist.
Also, many minor fixes/enhancements to the TCL command-line
functions, mainly to support scripting. There is now a
script called "sue_xc.tcl" that supports the generation of
schematics from ".sue" files (in particular, this is to
allow xcircuit support for the IIT standard cell library;
see http://www.ece.iit.edu/~vlsi/scells/).
292 v3.2 rev 23 8/18/04
Rather important fix from back in revision 19, in which routine
"pointtonet" is supposed to merge crossing wires if they cross
on top of a subcell port. This is the method used to connect
crossing wires with the "dot" symbol, so it is rather important.
291 v3.2 rev 22 6/21/04
Added capability to the parameter selection mechanism to handle
Tcl-expression parameters of the form "lindex {list} <index>".
Such expressions will generate a listbox-type popup window in
which the user is prompted to select one of the choices in the
list. The parameter will be replaced by the same expression
but with <index> changed to reflect the index position of the
chosen parameter value. The way to make such parameters in the
first place is "parameter make expression <name> {lindex {list}
<index>}". To change the expression itself instead of selecting
a choice from the list, use "parameter set" instead of the GUI
interface. Thanks to Paul Surgeon for suggesting this method.
289 v3.2 rev 21 5/58/04
More quick fixes: Makefile error installing .tcl and .lps files
due to an error in Makefile.am; library object import now checks
library version and does not attempt to import libraries that may
be missing a dependency list. Distribution libraries updated to
make sure all of them will work with the library import function.
Tcl function "library <name> <options...>" changed to accept
"<name>" when library name is "Library: <name>". This makes more
sense, as it allows one to do, for instance:
"library load asg_spice"
"library asg_spice save asg_spice_new"
288 v3.2 rev 20 5/26/04
Quick fix to a bug pointed out by Petter Larsson, which must have
been in the code for some time, which checks for names incompatible
with the PostScript interpreter but then fails to make the change.
Also, cleaned out some source code copies left over from bus
representation implementation.
287 v3.2 rev 19 5/20/04
Finally got the bus notation handling into enough of a working
condition that I dare to post the distribution. In addition to
basic fixes, improvements include handling of buses and partial
buses with the "connectivity" function, and in particular,
handling of instance-specific labels throughout the netlist
(previously was only applicable to the netlist output). The
instance-specific labels allow the new "tap" object to work.
Added the tutorial file "buses.ps" to the examples directory.
286 v3.2 rev 18 5/6/04
Removed the requirement that the GUI must be in place prior
to startup. XCircuit can be embedded directly in another
application with or without its own GUI. Without the GUI,
it is necessary to create (and map) a "simple" window
(e.g., "simple .mytest.draw -bg white -width 700 -height 400"),
and then set the Tcl array variable "XCOps(window)" to be the
Tk pathname of this window. This creates a window into which
things can be drawn by Tcl command-line commands. To enable
button and key actions, it is necessary to do:
bind .mywin.draw <ButtonPress> {xcircuit::standardaction %b down %s}
bind .mywin.draw <ButtonRelease> {xcircuit::standardaction %b up %s}
bind .mywin.draw <KeyPress> {xcircuit::standardaction %k key %s}
bind .mywin.draw <Enter> {focus %W}
from the Tcl command line. It is also possible to rewrite the
wrapper script so that the whole GUI is present but rooted in a
location different from ".xcircuit". In that case, set the
variable "XCOps(top)" to the top-level window name before
invoking xcircuit::start. In either case, one must run "wish"
first, then load "xcircuit.so", create the appropriate Tk window
or windows, set the appropriate XCOps() variable, then do
xcircuit::start.
Handling of bus notation is still unfinished in this (unreleased)
version, and probably breaks the schematic capture altogether.
This will be fixed prior to an actual distribution release.
285 v3.2 rev 17 4/14/04
Major enhancement: Handling of bus notation in netlists!
Also, Prohibit parameters from shadowing PostScript reserved
names and definitions in xcircps2.pro, as is done for object
names. Also, finally found and excised the bug that was
preventing correct comparison between object definitions on
read-in, which was introduced along with the parameter type-
promotion code. Fixed another bug which prevented
parameterizing position. And, fixed a bug which prevented
disabling flip invariance on text from the menu in the TCL
version. Also: made more convenient constructor/destructor
functions in elements.c, for general purpose use; these are
called from tclxcircuit.c. Also: Reimplemented "strdup"
as "Tcl_Strdup" in the TCL version; otherwise, there are
places where memory is allocated by strdup, bypassing TCL's
memory allocation, but free'd by Tcl_Free(). Also: modified
the library manager "library import" routine to load any
library instances of an object in addition to the object
itself.
284 v3.2 rev 15 3/15/04
Reinstated colors and other parameters as XDefaults-style options
in the TCL version using the Tk_GetOption() command. Changed
autoconf so that the TCL version is compiled by default (unless
not found, or explicitly disabled). Initial work on bus
notation parsing.
283 v3.2 rev 14 3/03/04
Added a library manager (often requested) for handling large
lists of parts. Allows objects to be imported from libraries
piecemeal.
282 v3.2 rev 13 3/03/04
Changed the TCL scripts and shell startup file so that the
README directions for a test execution prior to install actually
work as advertised. Also, finally found a way to force automake
to compile the tcl version with just "make" and "make install",
thus hopefully eliminating the greatest source of compile-time
woes. Re-implemented the .so file loading so that the reported
error is the real root cause error, not "file not found". Also:
removed Imakefile and all references to it. Also: Added a
menu item for the PCB layout generation. This is not yet
sourced by default.
281 v3.2 rev 12 3/01/04
A couple of fixes to bugs reported by Brek Miller. 1) Library
copy did not copy parameters correctly (missed both the "key"
and "which" entries), and 2) The object comparison mechanism
failed to correctly compare objects with parameters due to a
typo in the code.
280 v3.2 rev 11 2/27/04
Some changes to command functions and netlist output. Added
file lib/tcl/pcbout.tcl, a script that converts an xcircuit
schematic into a preliminary PCB layout. This is very spare
at the moment, to say the least; for instance, it only
supports 7400-series devices. But it's mostly proof-of-
concept.
279 v3.2 rev 10 2/26/04
Some Makefile/configure changes, esp. for systems like Debian
that do not find the Tcl/Tk include files. Also, rearranged
the menus so that "linewidth" commands (global and wire line-
width) are more obviously placed ("wire linewidth" duplicates
the "element border" entry). Thanks to Forrest Cook for this
suggestion. Also, rewrote the library load command in
xcircuit.tcl so that it prints the actual root cause error
instead of complaining about "file not found". Also, rewrote
and extended the "help" window in Tcl, making it entirely
script-driven from Tcl, and adding help text for each function.
This required adding Tcl command "bindkey" variant with no
arguments, which returns a list of all functions which can be
bound, and "bindkey -func <function>", which definitively
asserts that the argument is a function, not a key (because,
e.g., "Delete" is both a key name and a function). Also,
made XCF_Prompt (key "%") execute xcircuit::raiseconsole in
the TCL version (previously undefined in TCL).
278 v3.2 rev 9 2/20/04
Greatly expanded the undo mechanism, which now covers most of
the major xcircuit functions. This is definitely "beta test"
code. Also, renamed a number of functions and definitions to
be clear about the difference between an element and an
object (this confusion was left over from the really early
days of the program).
277 v3.2 rev 8 2/11/04
Improved the ghostscript rendering mechanism so that it can
handle (non-encapsulated) pages output from ghostview (which
includes some global state-setting commands). Also, greatly
improved the rendering by backgrounding the process. Xcircuit
draws a blank background and continues until ghostscript
reports that the page is finished, at which point the page
gets redrawn with the background.
276 v3.2 rev 7 2/6/04
Some fixes to the ASG and hspice routines; automake now checks
for g++-3 <stl> vs. the older <stl.h> header file and adjusts
accordingly. The hspice parser no longer produces files
netlist.sp and netlist-flat.sp. Compilation of ASG is now
disabled by default (and will be until it's stable. . .), and
requires "configure --enable-asg" to enable the module.
275 v3.2 rev 6 2/5/04
Added the ASG and hspice parser modules back in, with additions
to the master Makefile and configure script to support compiling
both modules into the xcircuit Tcl shared object library
xcircuit.so.