initial implementation of fetch schematics from web

This commit is contained in:
Stefan Frederik 2022-11-15 01:17:33 +01:00
parent 349bebda20
commit 6cd9d76f90
8 changed files with 293 additions and 95 deletions

View File

@ -1182,15 +1182,23 @@ void get_sch_from_sym(char *filename, xSymbol *sym)
char *sch = NULL;
const char *str_tmp;
int web_url = 0;
if( strstr(xctx->current_dirname, "http://") == xctx->current_dirname ||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname) {
web_url = 1;
}
if((str_tmp = get_tok_value(sym->prop_ptr, "schematic",0 ))[0]) {
my_strdup2(1252, &sch, str_tmp);
my_strncpy(filename, abs_sym_path(sch, ""), PATH_MAX);
if(web_url) my_strncpy(filename, sch, PATH_MAX);
else my_strncpy(filename, abs_sym_path(sch, ""), PATH_MAX);
my_free(1253, &sch);
} else {
if(tclgetboolvar("search_schematic")) {
my_strncpy(filename, abs_sym_path(sym->name, ".sch"), PATH_MAX);
if(web_url) my_strncpy(filename, add_ext(sym->name, ".sch"), PATH_MAX);
else my_strncpy(filename, abs_sym_path(sym->name, ".sch"), PATH_MAX);
} else {
my_strncpy(filename, add_ext(abs_sym_path(sym->name, ""), ".sch"), PATH_MAX);
if(web_url) my_strncpy(filename, add_ext(sym->name, ".sch"), PATH_MAX);
else my_strncpy(filename, add_ext(abs_sym_path(sym->name, ""), ".sch"), PATH_MAX);
}
}
dbg(1, "get_sch_from_sym(): sym->name=%s, filename=%s\n", sym->name, filename);
@ -1311,10 +1319,18 @@ int descend_schematic(int instnumber)
hilight_child_pins();
get_sch_from_sym(filename, xctx->inst[n].ptr+ xctx->sym);
dbg(1, "descend_schematic(): filename=%s\n", filename);
unselect_all(1);
remove_symbols();
load_schematic(1,filename, 1);
if( strstr(xctx->current_dirname, "http://") == xctx->current_dirname ||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname) {
char sympath[PATH_MAX];
tclvareval("try_download_url {", xctx->current_dirname, "} {", filename, "}", NULL);
my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(filename, 0));
load_schematic(1, sympath, 1);
} else {
load_schematic(1, filename, 1);
}
if(xctx->hilight_nets)
{
prepare_netlist_structs(0);

View File

@ -451,10 +451,10 @@ size_t my_strcat(int id, char **str, const char *append_str)
memcpy(*str + s, append_str, a);
dbg(3,"my_strcat(%d,): reallocated string %s\n", id, *str);
return s + a - 1;
} else {
} else { /* str = NULL */
if(append_str == NULL || append_str[0] == '\0') return 0;
a = strlen(append_str) + 1;
*str = my_malloc(id, a);
*str = my_malloc(id, a );
memcpy(*str, append_str, a);
dbg(3,"my_strcat(%d,): allocated string %s\n", id, *str);
return a - 1;

View File

@ -2142,13 +2142,15 @@ void link_symbols_to_instances(int from) /* from >= 0 : linking symbols from pas
}
/* ALWAYS use absolute pathname for filename!!! */
void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 20150327 added reset_undo */
void load_schematic(int load_symbols, const char *fname, int reset_undo) /* 20150327 added reset_undo */
{
FILE *fd;
char name[PATH_MAX];
char filename[PATH_MAX];
char msg[PATH_MAX+100];
struct stat buf;
int i;
xctx->prep_hi_structs=0;
xctx->prep_net_structs=0;
xctx->prep_hash_inst=0;
@ -2156,17 +2158,28 @@ void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 2
if(reset_undo) xctx->clear_undo();
if(reset_undo) xctx->prev_set_modify = -1; /* will force set_modify(0) to set window title */
else xctx->prev_set_modify = 0; /* will prevent set_modify(0) from setting window title */
if(filename && filename[0]) {
if(fname && fname[0]) {
my_strncpy(filename, fname, S(filename));
my_strncpy(name, filename, S(name));
my_strncpy(xctx->sch[xctx->currsch], name, S(xctx->sch[xctx->currsch]));
if(strstr(filename , "http://") == filename ||
strstr(filename , "https://") == filename) {
tclvareval("download_url {", filename, "}", NULL);
my_snprintf(name, S(name), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(filename, 0));
my_snprintf(msg, S(msg), "regsub {/\\.$} [get_directory {%s}] {}", filename);
my_strncpy(xctx->current_dirname, tcleval(msg), S(xctx->current_dirname));
dbg(1, "load_schematic(): filename=%s\n", filename);
} else if((strstr(xctx->current_dirname, "http://") == xctx->current_dirname ||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname)) {
} else {
my_snprintf(msg, S(msg), "regsub {/\\.$} [get_directory {%s}] {}", filename);
my_strncpy(xctx->current_dirname, tcleval(msg), S(xctx->current_dirname));
}
/* if name is /some/path/. remove /. at end */
my_snprintf(msg, S(msg), "regsub {/\\.$} [file dirname {%s}] {}", name);
my_strncpy(xctx->current_dirname, tcleval(msg), S(xctx->current_dirname));
my_strncpy(xctx->current_name, rel_sym_path(name), S(xctx->current_name));
my_strncpy(xctx->sch[xctx->currsch], filename, S(xctx->sch[xctx->currsch]));
my_strncpy(xctx->current_name, rel_sym_path(filename), S(xctx->current_name));
dbg(1, "load_schematic(): opening file for loading:%s, filename=%s\n", name, filename);
dbg(1, "load_schematic(): sch[currsch]=%s\n", xctx->sch[xctx->currsch]);
if(!name[0]) return;
if(reset_undo) {
if(!stat(name, &buf)) { /* file exists */
xctx->time_last_modify = buf.st_mtime;
@ -2176,9 +2189,8 @@ void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 2
}
}
if( (fd=fopen(name,fopen_read_mode))== NULL) {
fprintf(errfp, "load_schematic(): unable to open file: %s, filename=%s\n",
name, filename ? filename : "<NULL>");
my_snprintf(msg, S(msg), "update; alert_ {Unable to open file: %s}", filename ? filename: "(null)");
fprintf(errfp, "load_schematic(): unable to open file: %s, filename=%s\n", name, filename );
my_snprintf(msg, S(msg), "update; alert_ {Unable to open file: %s}", filename);
tcleval(msg);
clear_drawing();
if(reset_undo) set_modify(0);
@ -2842,8 +2854,16 @@ int load_sym_def(const char *name, FILE *embed_fd)
my_strncpy(sympath, abs_sym_path(name, ""), S(sympath));
}
if(!embed_fd) { /* regular symbol: open file */
if((lcc[level].fd=fopen(sympath,fopen_read_mode))==NULL)
{
if((lcc[level].fd=fopen(sympath,fopen_read_mode))==NULL) {
/* not found: try web URL */
if( strstr(xctx->current_dirname, "http://") == xctx->current_dirname ||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname) {
tclvareval("try_download_url {", xctx->current_dirname, "} {", name, "}", NULL);
my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(name, 0));
lcc[level].fd=fopen(sympath,fopen_read_mode);
}
}
if(lcc[level].fd==NULL) {
/* issue warning only on top level symbol loading */
if(recursion_counter == 1) dbg(0, "l_s_d(): Symbol not found: %s\n",sympath);
my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_SHAREDIR"), "systemlib/missing.sym");
@ -3587,6 +3607,7 @@ void descend_symbol(void)
char name[PATH_MAX];
char name_embedded[PATH_MAX];
int n = 0;
struct stat buf;
rebuild_selected_array();
if(xctx->lastsel > 1) return;
if(xctx->lastsel==1 && xctx->sel_array[0].type==ELEMENT) {
@ -3643,10 +3664,20 @@ void descend_symbol(void)
/* load_symbol(name_embedded); */
load_schematic(1, name_embedded, 1);
} else {
/* load_symbol(abs_sym_path(name, "")); */
char sympath[PATH_MAX];
my_strncpy(sympath, abs_sym_path(name, ""), S(sympath));
unselect_all(1);
remove_symbols(); /* must follow save (if) embedded */
load_schematic(1, abs_sym_path(name, ""), 1);
dbg(1, "name=%s, sympath=%s\n", name, sympath);
if( stat(sympath, &buf) && /* file does not exists */
(strstr(xctx->current_dirname, "http://") == xctx->current_dirname ||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname)) {
my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(name, 0));
load_schematic(1, sympath, 1);
} else {
load_schematic(1, sympath, 1);
}
}
zoom_full(1, 0, 1, 0.97);
}

View File

@ -3109,8 +3109,10 @@ int tclvareval(const char *script, ...)
va_start(args, script);
size = my_strcat(1379, &str, script);
dbg(1, "tclvareval(): script=%s, str=%s, size=%d\n", script, str, size);
while( (p = va_arg(args, const char *)) ) {
size = my_strcat(1380, &str, p);
dbg(1, "tclvareval(): p=%s, str=%s, size=%d\n", p, str, size);
}
return_code = Tcl_EvalEx(interp, str, (int)size, TCL_EVAL_GLOBAL);
va_end(args);

View File

@ -1254,7 +1254,7 @@ extern void mem_push_undo(void);
extern void mem_pop_undo(int redo, int set_modify_status);
extern void mem_delete_undo(void);
extern void mem_clear_undo(void);
extern void load_schematic(int load_symbol, const char *abs_name, int reset_undo);
extern void load_schematic(int load_symbol, const char *fname, int reset_undo);
/* check if filename already in an open window/tab */
extern int check_loaded(const char *f, char *win_path);
extern void link_symbols_to_instances(int from);

View File

@ -2320,7 +2320,7 @@ namespace eval c_toolbar {
set c_t($i,file) {}
}
proc cleanup {} {
proc cleanup {} {
variable c_t
if {![info exists c_t(n)]} return
set j 0
@ -2349,9 +2349,9 @@ namespace eval c_toolbar {
set i [expr {($i + 1) % $n} ]
if {$i == $top} break
}
}
}
proc display {} {
proc display {} {
variable c_t
if { [winfo exists $c_t(w)]} {
set w $c_t(w)
@ -2372,9 +2372,9 @@ namespace eval c_toolbar {
if { $i == $c_t(top) } break
}
}
}
}
proc add {f} {
proc add {f} {
variable c_t
for {set i 0} {$i < $c_t(n)} {incr i} {
if { $c_t($i,file) eq $f } { return 0}
@ -3805,7 +3805,7 @@ proc edit_prop {txtlabel} {
}
wm geometry .dialog "${edit_prop_size}+$X+$Y"
set prev_symbol $symbol
set editprop_sympath [file dirname [abs_sym_path $symbol]]
set editprop_sympath [get_directory [abs_sym_path $symbol]]
frame .dialog.f4
label .dialog.f4.l1 -text $txtlabel
label .dialog.f4.path -text "Path:"
@ -4422,6 +4422,39 @@ proc find_file { f {paths {}} } {
return $res
}
# alternative implementation of "file dirname ... "
# that does not mess with http:// (file dirname removes double slashes)
proc get_directory {f} {
if {![regexp {/} $f]} {
set r .
} else {
set r [regsub {/[^/]*$} $f {}]
}
return $r
}
proc download_url {url} {
global XSCHEM_TMP_DIR download_url_helper
set r [catch {exec sh -c "cd $XSCHEM_TMP_DIR; $download_url_helper $url"} res]
puts "download_url: url=$url, exit code=$r, res=$res"
return $r
}
proc try_download_url {dirname sch_or_sym} {
set url $dirname/$sch_or_sym
puts "try_download_url: dirname=$dirname, sch_or_sym=$sch_or_sym"
set r [download_url $url]
if { $r!=0} {
set nitems [regexp -all {/+} $sch_or_sym]
puts "try_download_url: dirname=$dirname, sch_or_sym=$sch_or_sym, nitems=$nitems"
while { $nitems > 0} {
set dirname [get_directory $dirname]
incr nitems -1
}
set url $dirname/$sch_or_sym
set r [download_url $url]
}
}
# given an absolute path of a symbol/schematic remove the path prefix
# if file is in a library directory (a $pathlist dir)
@ -6198,6 +6231,7 @@ set_ne myload_globfilter {*}
set_ne component_browser_on_top 1
## list of tcl procedures to load at end of xschem.tcl
set_ne tcl_files {}
set_ne download_url_helper {curl -f -s -O}
set_ne netlist_dir "$USER_CONF_DIR/simulations"
# this global exists only for netlist_type radiobuttons, don't use, use [xschem] subcommand to get/set values
# it is also used in xschemrc to set initial netlist type.

View File

@ -336,6 +336,13 @@
# lappend tcl_files ${XSCHEM_SHAREDIR}/change_index.tcl
# lappend tcl_files ${XSCHEM_SHAREDIR}/ngspice_backannotate.tcl
###########################################################################
#### WEB URL DOWNLOAD HELPER APPLICATION
###########################################################################
#### used to download files from web: default: {curl -f -s -O}
# set download_url_helper {curl -f -s -O}
# set download_url_helper {wget --quiet}
###########################################################################
#### XSCHEM TOOLBAR
###########################################################################

View File

@ -7,11 +7,11 @@ S {}
E {}
B 2 860 -550 1360 -160 {flags=graph
y1 = 0
y2 = 7.29638
y2 = 6.6
divy = 4
subdivy=1
x1=0
x2=22
x2=24
divx=8
unitx=1
color=15
@ -19,11 +19,11 @@ node=i(vload)
dataset=-1}
B 2 860 -790 1360 -550 {flags=graph
y1 = 0
y2 = 120
y2 = 112
divy = 4
subdivy=1
x1=0
x2=22
x2=24
divx=8
unitx=1
color=8
@ -56,9 +56,9 @@ C {ammeter.sym} 230 -470 2 1 {name=Vm}
C {lab_pin.sym} 230 -610 2 0 {name=l2 sig_type=std_logic lab=pn}
C {lab_pin.sym} 230 -510 2 0 {name=l3 sig_type=std_logic lab=mn}
C {isource_arith.sym} 230 -560 2 0 {name=G1
CUR="v(f) * 6 * (1 - exp( (v(pn,mn)
+ -18.5 - v(f)*3 ) * 0.7) -
+ 0.005 * (v(pn,mn) - 18.5 - v(f)*3))"
CUR="v(f) * 5.5 * (1 - exp( (v(pn,mn)
+ -21 - v(f)*2.5 ) * 0.6) -
+ 0.002 * (v(pn,mn) - 21 - v(f)*2.5))"
}
C {ipin.sym} 90 -420 2 1 {name=p2 lab=fade}
C {ammeter.sym} 140 -420 3 0 {name=Vf}
@ -72,7 +72,7 @@ vsun fade 0 0
vref minus 0 0
.control
save plus i(vload) i(vm) n(pn) v(mn)
dc vload 0 22 0.5 vsun 0.2 1.0 0.2
dc vload 0 24 0.5 vsun 0.2 1.0 0.2
write pv_ngspice.raw
quit
.endc
@ -95,65 +95,173 @@ descr="Load embedded waves"
tclcommand="xschem raw_read_from_attr"
spice_data="
VGl0bGU6ICoqIHNjaF9wYXRoOiAvaG9tZS9zY2hpcHBlcy94c2NoZW0tcmVwby90cnVuay94c2NoZW1fbGlicmFyeS9uZ3NwaWNlL3B2X25nc3BpY2Uuc2NoCkRhdGU6
IFR1ZSBTZXAgMjcgMTc6MDQ6MjEgIDIwMjIKUGxvdG5hbWU6IERDIHRyYW5zZmVyIGNoYXJhY3RlcmlzdGljCkZsYWdzOiByZWFsCk5vLiBWYXJpYWJsZXM6IDMKTm8u
IFBvaW50czogMjI1ClZhcmlhYmxlczoKCTAJdih2LXN3ZWVwKQl2b2x0YWdlCgkxCXYocGx1cykJdm9sdGFnZQoJMglpKHZsb2FkKQljdXJyZW50CkJpbmFyeToKAAAA
AAAAAAAAAAAAAAAAABkliAuYCPU/AAAAAAAA4D8AAAAAAADgP2PJI6FN/PQ/AAAAAAAA8D8AAAAAAADwPzn3PsoC8PQ/AAAAAAAA+D8AAAAAAAD4P4fYHXy34/Q/AAAA
AAAAAEAAAAAAAAAAQA2vyIRr1/Q/AAAAAAAABEAAAAAAAAAEQM4hV50ey/Q/AAAAAAAACEAAAAAAAAAIQITIKWHQvvQ/AAAAAAAADEAAAAAAAAAMQFxMdkGAsvQ/AAAA
AAAAEEAAAAAAAAAQQMyZm3MtpvQ/AAAAAAAAEkAAAAAAAAASQJpKDtjWmfQ/AAAAAAAAFEAAAAAAAAAUQH7SwtZ6jfQ/AAAAAAAAFkAAAAAAAAAWQN8JriwXgfQ/AAAA
AAAAGEAAAAAAAAAYQCs+HKSodPQ/AAAAAAAAGkAAAAAAAAAaQLF9AK8qaPQ/AAAAAAAAHEAAAAAAAAAcQHRtptaWW/Q/AAAAAAAAHkAAAAAAAAAeQLLb6u7jTvQ/AAAA
AAAAIEAAAAAAAAAgQH5do/MEQvQ/AAAAAAAAIUAAAAAAAAAhQA99PmznNPQ/AAAAAAAAIkAAAAAAAAAiQBvckyJxJ/Q/AAAAAAAAI0AAAAAAAAAjQK+4eOR8GfQ/AAAA
AAAAJEAAAAAAAAAkQEruU+nVCvQ/AAAAAAAAJUAAAAAAAAAlQEtY20kx+/M/AAAAAAAAJkAAAAAAAAAmQJH3Brsk6vM/AAAAAAAAJ0AAAAAAAAAnQHMzjGYZ1/M/AAAA
AAAAKEAAAAAAAAAoQPlcIUA5wfM/AAAAAAAAKUAAAAAAAAApQPgwJIhUp/M/AAAAAAAAKkAAAAAAAAAqQMFnaDS8h/M/AAAAAAAAK0AAAAAAAAArQFOsQZgMYPM/AAAA
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
AAAANkAAAAAAAAA2QACfbNc4PATA"}
IE1vbiBOb3YgMTQgMTQ6MTk6NDggIDIwMjIKUGxvdG5hbWU6IERDIHRyYW5zZmVyIGNoYXJhY3RlcmlzdGljCkZsYWdzOiByZWFsCk5vLiBWYXJpYWJsZXM6IDgKTm8u
IFBvaW50czogMjQ1ClZhcmlhYmxlczoKCTAJdih2LXN3ZWVwKQl2b2x0YWdlCgkxCXYobW4pCXZvbHRhZ2UKCTIJdihwbHVzKQl2b2x0YWdlCgkzCXYocG4pCXZvbHRh
Z2UKCTQJaSh2ZikJY3VycmVudAoJNQlpKHZsb2FkKQljdXJyZW50Cgk2CWkodm0pCWN1cnJlbnQKCTcJaSh2cCkJY3VycmVudApCaW5hcnk6CgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLBwxdVFvyP8sHDF1UW/I/ywcMXVRb8j8AAAAAAADgPwAAAAAAAAAAAAAAAAAA4D8AAAAAAADgPwAAAAAAAAAAIUTCENJW
8j8hRMIQ0lbyPyFEwhDSVvI/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAABtURlJPUvI/G1RGUk9S8j8bVEZST1LyPwAAAAAAAPg/AAAAAAAA
AAAAAAAAAAD4PwAAAAAAAPg/AAAAAAAAAABASGsezE3yP0BIax7MTfI/QEhrHsxN8j8AAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAtOEgTEhJ
8j+04SBMSEnyP7ThIExISfI/AAAAAAAABEAAAAAAAAAAAAAAAAAAAARAAAAAAAAABEAAAAAAAAAAAFMU+aPDRPI/UxT5o8NE8j9TFPmjw0TyPwAAAAAAAAhAAAAAAAAA
AAAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAAACsUCHbPUDyP6xQIds9QPI/rFAh2z1A8j8AAAAAAAAMQAAAAAAAAAAAAAAAAAAADEAAAAAAAAAMQAAAAAAAAAAABaOZjLY7
8j8Fo5mMtjvyPwWjmYy2O/I/AAAAAAAAEEAAAAAAAAAAAAAAAAAAABBAAAAAAAAAEEAAAAAAAAAAAO4oDDAtN/I/7igMMC038j/uKAwwLTfyPwAAAAAAABJAAAAAAAAA
AAAAAAAAAAASQAAAAAAAABJAAAAAAAAAAACdRHANoTLyP51EcA2hMvI/nURwDaEy8j8AAAAAAAAUQAAAAAAAAAAAAAAAAAAAFEAAAAAAAAAUQAAAAAAAAAAAyZRaLBEu
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
/r+AngSwJeD+v4CeBLAl4P6/"}
C {ngspice_get_expr.sym} 280 -560 0 0 {name=r24
node="[format %.4g [expr ([ngspice::get_voltage pn] - [ngspice::get_voltage mn]) * [ngspice::get_current Vm]]] W"
descr = power