From f0e739cf02b39ec9fadae00f566187542e69f236 Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Sat, 6 Jan 2024 12:14:36 +0100 Subject: [PATCH] .load.l.paneright.list better positioning (remember last selection), print_spice_subckt_nodes(): use my_mstrcat() instead of fprintf, for future enhancements --- src/token.c | 18 ++++++++++++++---- src/xschem.tcl | 8 +++++++- xschem_library/examples/test_ne555.sch | 10 ++++++---- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/token.c b/src/token.c index 1716be3e..63283f90 100644 --- a/src/token.c +++ b/src/token.c @@ -1824,6 +1824,7 @@ void print_spice_subckt_nodes(FILE *fd, int symbol) size_t token_pos=0; int escape=0; int no_of_pins=0; + char *result = NULL; const char *tclres, *fmt_attr = NULL; fmt_attr = xctx->format ? xctx->format : "format"; @@ -1901,7 +1902,8 @@ void print_spice_subckt_nodes(FILE *fd, int symbol) const char *name = get_tok_value(xctx->sym[symbol].rect[PINLAYER][i].prop_ptr,"name",0); if(!int_hash_lookup(&table, name, 1, XINSERT_NOREPLACE)) { str_ptr= expandlabel(name, &multip); - fprintf(fd, "%s ", str_ptr); + /* fprintf(fd, "%s ", str_ptr); */ + my_mstrcat(_ALLOC_ID_, &result, str_ptr, " ", NULL); } } } @@ -1914,7 +1916,8 @@ void print_spice_subckt_nodes(FILE *fd, int symbol) if(!strcmp(get_tok_value(prop, "name",0), token + 2)) break; } if(i= 0 && pin_number < no_of_pins) { if(strboolcmp(get_tok_value(xctx->sym[symbol].rect[PINLAYER][pin_number].prop_ptr,"spice_ignore",0), "true")) { str_ptr = get_tok_value(xctx->sym[symbol].rect[PINLAYER][pin_number].prop_ptr,"name",0); - fprintf(fd, "%s ", expandlabel(str_ptr, &multip)); + /* fprintf(fd, "%s ", expandlabel(str_ptr, &multip)); */ + my_mstrcat(_ALLOC_ID_, &result, expandlabel(str_ptr, &multip), " ", NULL); } } my_free(_ALLOC_ID_, &pin_attr); @@ -1939,7 +1943,8 @@ void print_spice_subckt_nodes(FILE *fd, int symbol) else if(token[0] == '@') { /* given previous if() conditions not followed by @ or # */ /* if token not followed by white space it is not an extra node */ if( ( (space || c == '%' || c == '@') && !escape ) ) { - fprintf(fd, "%s ", token + 1); + /* fprintf(fd, "%s ", token + 1); */ + my_mstrcat(_ALLOC_ID_, &result, token + 1, " ", NULL); } } /* if(c!='%' && c!='@' && c!='\0' ) fputc(c,fd); */ @@ -1952,9 +1957,14 @@ void print_spice_subckt_nodes(FILE *fd, int symbol) } if(c=='\0') { + my_mstrcat(_ALLOC_ID_, &result, "\n", NULL); break ; } } + if(result) { + fprintf(fd, "%s", result); + my_free(_ALLOC_ID_, &result); + } my_free(_ALLOC_ID_, &format1); my_free(_ALLOC_ID_, &format); my_free(_ALLOC_ID_, &token); diff --git a/src/xschem.tcl b/src/xschem.tcl index 35d2e7d5..80491c23 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -3481,7 +3481,13 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}} set file_dialog_globfilter *[.load.buttons_bot.entry get]* if { $file_dialog_globfilter eq {**} } { set file_dialog_globfilter * } setglob $file_dialog_dir1 - .load.l.paneright.list yview moveto 1.0 + if {[.load.buttons_bot.entry get] ne {}} { + .load.l.paneright.list yview moveto 1.0 + } else { + if { [info exists file_dialog_yview]} { + .load.l.paneright.list yview moveto [lindex $file_dialog_yview 0] + } + } } # set to something different to any file to force a new placement in file_dialog_place_symbol set file_dialog_retval { } diff --git a/xschem_library/examples/test_ne555.sch b/xschem_library/examples/test_ne555.sch index 540211de..49badadf 100644 --- a/xschem_library/examples/test_ne555.sch +++ b/xschem_library/examples/test_ne555.sch @@ -39,13 +39,14 @@ subdivx=1 node="out trig \\"2/3 Vcc; ctrl\\" -\\"1/3 Vcc; x1.18\\"" -color="4 15 7 12" +\\"1/3 Vcc; x1.18\\" +dis" +color="4 15 7 12 9" dataset=-1 unitx=1 logx=0 logy=0 -} +hilight_wave=-1} T {NE555 TIMER IC EXAMPLE} 360 -490 0 0 0.4 0.4 {} N 130 -150 200 -150 {lab=TRIG} N 570 -130 570 -100 { @@ -69,7 +70,8 @@ vvss vss 0 dc 0 write test_ne555.raw .endc "} -C {ne555.sym} 490 -220 0 0 {name=x1} +C {ne555.sym} 490 -220 0 0 {name=x1 +tclcommand="textwindow $netlist_dir/model_test_ne555.txt"} C {res.sym} 130 -180 0 0 {name=r3 m=1 value=2k} C {capa.sym} 130 -120 0 0 {name=c6 m=1 value=2n} C {vsource.sym} 130 -360 0 1 {name=v1 value=5}