xschem load from script: no alert box warning if new file given
This commit is contained in:
parent
96aa251ca0
commit
e4e2ba37cc
|
|
@ -457,7 +457,7 @@ void ask_new_file(void)
|
|||
xctx->currsch = 0;
|
||||
unselect_all(1);
|
||||
remove_symbols();
|
||||
load_schematic(1, f,1); /* 20180925.1 */
|
||||
load_schematic(1, f, 1, 1);
|
||||
tclvareval("update_recent_file {", f, "}", NULL);
|
||||
my_strdup(_ALLOC_ID_, &xctx->sch_path[xctx->currsch],".");
|
||||
xctx->sch_path_hash[xctx->currsch] = 0;
|
||||
|
|
@ -1350,7 +1350,7 @@ int descend_schematic(int instnumber)
|
|||
dbg(1, "descend_schematic(): filename=%s\n", filename);
|
||||
/* we are descending from a parent schematic downloaded from the web */
|
||||
remove_symbols();
|
||||
load_schematic(1, filename, 1);
|
||||
load_schematic(1, filename, 1, 1);
|
||||
if(xctx->hilight_nets) {
|
||||
prepare_netlist_structs(0);
|
||||
propagate_hilights(1, 0, XINSERT_NOREPLACE);
|
||||
|
|
@ -1401,7 +1401,7 @@ void go_back(int confirm) /* 20171006 add confirm */
|
|||
/* by default) to parent schematic if going back from embedded symbol */
|
||||
|
||||
my_strncpy(filename, xctx->sch[xctx->currsch], S(filename));
|
||||
load_schematic(1, filename, 1);
|
||||
load_schematic(1, filename, 1, 1);
|
||||
if(from_embedded_sym) xctx->modified=save_modified; /* to force ask save embedded sym in parent schematic */
|
||||
|
||||
if(xctx->hilight_nets) {
|
||||
|
|
|
|||
|
|
@ -1894,7 +1894,7 @@ int callback(const char *winpath, int event, int mx, int my, KeySym key,
|
|||
unselect_all(1);
|
||||
remove_symbols();
|
||||
my_strncpy(filename, abs_sym_path(xctx->sch[xctx->currsch], ""), S(filename));
|
||||
load_schematic(1, filename, 1);
|
||||
load_schematic(1, filename, 1, 1);
|
||||
draw();
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ void compile_font(void)
|
|||
my_snprintf(name, S(name), "%s/systemlib/font.sch", tclgetvar("XSCHEM_SHAREDIR"));
|
||||
unselect_all(1);
|
||||
remove_symbols();
|
||||
load_schematic(1,name,0);
|
||||
load_schematic(1, name, 0, 1);
|
||||
for(code=0;code<127;code++)
|
||||
{
|
||||
unselect_all(1);
|
||||
|
|
|
|||
19
src/save.c
19
src/save.c
|
|
@ -2404,8 +2404,9 @@ void link_symbols_to_instances(int from) /* from >= 0 : linking symbols from pas
|
|||
}
|
||||
}
|
||||
|
||||
/* ALWAYS use absolute pathname for fname!!! */
|
||||
void load_schematic(int load_symbols, const char *fname, int reset_undo) /* 20150327 added reset_undo */
|
||||
/* ALWAYS use absolute pathname for fname!!!
|
||||
* alert = 0 --> do not show alert if file not existing */
|
||||
void load_schematic(int load_symbols, const char *fname, int reset_undo, int alert)
|
||||
{
|
||||
FILE *fd;
|
||||
char name[PATH_MAX];
|
||||
|
|
@ -2474,9 +2475,11 @@ void load_schematic(int load_symbols, const char *fname, int reset_undo) /* 2015
|
|||
}
|
||||
}
|
||||
if( (fd=fopen(name,fopen_read_mode))== NULL) {
|
||||
fprintf(errfp, "load_schematic(): unable to open file: %s, fname=%s\n", name, fname );
|
||||
my_snprintf(msg, S(msg), "update; alert_ {Unable to open file: %s}", fname);
|
||||
tcleval(msg);
|
||||
if(alert) {
|
||||
fprintf(errfp, "load_schematic(): unable to open file: %s, fname=%s\n", name, fname );
|
||||
my_snprintf(msg, S(msg), "update; alert_ {Unable to open file: %s}", fname);
|
||||
tcleval(msg);
|
||||
}
|
||||
clear_drawing();
|
||||
if(reset_undo) set_modify(0);
|
||||
} else {
|
||||
|
|
@ -3940,7 +3943,7 @@ void descend_symbol(void)
|
|||
unselect_all(1);
|
||||
remove_symbols(); /* must follow save (if) embedded */
|
||||
/* load_symbol(name_embedded); */
|
||||
load_schematic(1, name_embedded, 1);
|
||||
load_schematic(1, name_embedded, 1, 1);
|
||||
} else {
|
||||
char sympath[PATH_MAX];
|
||||
my_strncpy(sympath, abs_sym_path(name, ""), S(sympath));
|
||||
|
|
@ -3954,9 +3957,9 @@ void descend_symbol(void)
|
|||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname)) {
|
||||
/* symbols have already been downloaded while loading parent schematic: set local file path */
|
||||
my_snprintf(sympath, S(sympath), "%s/xschem_web/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(name, 0));
|
||||
load_schematic(1, sympath, 1);
|
||||
load_schematic(1, sympath, 1, 1);
|
||||
} else {
|
||||
load_schematic(1, sympath, 1);
|
||||
load_schematic(1, sympath, 1, 1);
|
||||
}
|
||||
}
|
||||
zoom_full(1, 0, 1, 0.97);
|
||||
|
|
|
|||
|
|
@ -1845,7 +1845,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
xctx->currsch = 0;
|
||||
remove_symbols();
|
||||
dbg(1, "scheduler: undo_reset=%d\n", undo_reset);
|
||||
load_schematic(load_symbols, f, undo_reset);
|
||||
load_schematic(load_symbols, f, undo_reset, 0);
|
||||
tclvareval("update_recent_file {", f, "}", NULL);
|
||||
my_strdup(_ALLOC_ID_, &xctx->sch_path[xctx->currsch], ".");
|
||||
xctx->sch_path_hash[xctx->currsch] = 0;
|
||||
|
|
@ -2686,7 +2686,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
{
|
||||
unselect_all(1);
|
||||
remove_symbols();
|
||||
load_schematic(1, xctx->sch[xctx->currsch], 1);
|
||||
load_schematic(1, xctx->sch[xctx->currsch], 1, 1);
|
||||
if(argc > 2 && !strcmp(argv[2], "zoom_full") ) {
|
||||
zoom_full(1, 0, 1, 0.97);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ void hier_psprint(char **res, int what) /* netlister driver */
|
|||
str_hash_lookup(&subckt_table, subckt_name, "", XINSERT);
|
||||
get_sch_from_sym(filename, xctx->sym + i);
|
||||
/* for printing we go down to bottom regardless of spice_stop attribute */
|
||||
load_schematic(1,filename, 0);
|
||||
load_schematic(1,filename, 0, 1);
|
||||
zoom_full(0, 0, 1, 0.97);
|
||||
if(what & 1) ps_draw(2); /* page */
|
||||
if(what & 2) { /* print cellname */
|
||||
|
|
@ -564,7 +564,7 @@ int spice_block_netlist(FILE *fd, int i)
|
|||
my_free(_ALLOC_ID_, &extra);
|
||||
fprintf(fd, "\n");
|
||||
|
||||
spice_stop ? load_schematic(0,filename, 0) : load_schematic(1,filename, 0);
|
||||
spice_stop ? load_schematic(0,filename, 0, 1) : load_schematic(1,filename, 0, 1);
|
||||
err |= spice_netlist(fd, spice_stop); /* 20111113 added spice_stop */
|
||||
|
||||
if(xctx->schprop && xctx->schprop[0]) {
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ static int tedax_block_netlist(FILE *fd, int i)
|
|||
fprintf(fd, "%s", get_sym_template(xctx->sym[i].templ, extra));
|
||||
my_free(_ALLOC_ID_, &extra);
|
||||
fprintf(fd, "\n");
|
||||
load_schematic(1,filename, 0);
|
||||
load_schematic(1,filename, 0, 1);
|
||||
err |= tedax_netlist(fd, tedax_stop);
|
||||
xctx->netlist_count++;
|
||||
|
||||
|
|
@ -244,5 +244,6 @@ int global_tedax_netlist(int global) /* netlister driver */
|
|||
}
|
||||
if(!debug_var) xunlink(netl_filename);
|
||||
xctx->netlist_count = 0;
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -460,7 +460,7 @@ int verilog_block_netlist(FILE *fd, int i)
|
|||
my_strdup(_ALLOC_ID_, &extra, get_tok_value(xctx->sym[i].prop_ptr, "verilog_extra", 0));
|
||||
my_strdup(_ALLOC_ID_, &extra2, get_tok_value(xctx->sym[i].prop_ptr, "verilog_extra", 0));
|
||||
fprintf(fd, "// sch_path: %s\n", filename);
|
||||
verilog_stop? load_schematic(0,filename, 0) : load_schematic(1,filename, 0);
|
||||
verilog_stop? load_schematic(0,filename, 0, 1) : load_schematic(1,filename, 0, 1);
|
||||
/* print verilog timescale and preprocessor directives 10102004 */
|
||||
fmt_attr = xctx->format ? xctx->format : "verilog_format";
|
||||
for(j=0;j<xctx->instances; ++j)
|
||||
|
|
|
|||
|
|
@ -550,7 +550,7 @@ int vhdl_block_netlist(FILE *fd, int i)
|
|||
} else {
|
||||
Int_hashtable table = {NULL, 0};
|
||||
fprintf(fd, "-- sch_path: %s\n", filename);
|
||||
load_schematic(1,filename, 0);
|
||||
load_schematic(1,filename, 0, 1);
|
||||
dbg(1, "vhdl_block_netlist(): packages\n");
|
||||
for(l=0;l<xctx->instances; ++l)
|
||||
{
|
||||
|
|
|
|||
12
src/xinit.c
12
src/xinit.c
|
|
@ -755,7 +755,7 @@ int compare_schematics(const char *f)
|
|||
xctx->xorigin = save_xctx->xorigin;
|
||||
xctx->yorigin = save_xctx->yorigin;
|
||||
/* Load schematic 2 for comparing */
|
||||
load_schematic(1, xctx->sch_to_compare, 0); /* last param to 0, do not alter window title */
|
||||
load_schematic(1, xctx->sch_to_compare, 0, 1); /* last param to 0, do not alter window title */
|
||||
|
||||
/* HASH SCHEMATIC 2 , CHECK SCHEMATIC 2 WITH SCHEMATIC 1 */
|
||||
for(i = 0; i < xctx->instances; ++i) {
|
||||
|
|
@ -1154,7 +1154,7 @@ void preview_window(const char *what, const char *win_path, const char *fname)
|
|||
build_colors(0.0, 0.0);
|
||||
resetwin(1, 0, 1, 0, 0); /* create preview pixmap. resetwin(create_pixmap, clear_pixmap, force) */
|
||||
dbg(1, "preview_window() draw, load schematic\n");
|
||||
load_schematic(1,fname, 0);
|
||||
load_schematic(1,fname, 0, 1);
|
||||
}
|
||||
zoom_full(1, 0, 1, 0.97); /* draw */
|
||||
xctx = save_xctx;
|
||||
|
|
@ -1349,7 +1349,7 @@ static void create_new_window(int *window_count, const char *fname)
|
|||
resetwin(1, 0, 1, 0, 0); /* create preview pixmap. resetwin(create_pixmap, clear_pixmap, force, w, h) */
|
||||
/* draw empty window so if following load fails due to missing file window appears correctly drawn */
|
||||
zoom_full(1, 0, 1, 0.97);
|
||||
load_schematic(1, fname, 1);
|
||||
load_schematic(1, fname, 1, 1);
|
||||
zoom_full(1, 0, 1, 0.97); /* draw */
|
||||
tclvareval("set_bindings ", window_path[n], NULL);
|
||||
tclvareval("save_ctx ", window_path[n], NULL);
|
||||
|
|
@ -1449,7 +1449,7 @@ static void create_new_tab(int *window_count, const char *fname)
|
|||
/* draw empty window so if following load fails due to missing file window appears correctly drawn */
|
||||
tclvareval("housekeeping_ctx", NULL);
|
||||
zoom_full(1, 0, 1, 0.97);
|
||||
load_schematic(1,fname, 1);
|
||||
load_schematic(1,fname, 1, 1);
|
||||
zoom_full(1, 0, 1, 0.97); /* draw */
|
||||
}
|
||||
|
||||
|
|
@ -2469,7 +2469,7 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
|||
remove_symbols();
|
||||
/* if cli_opt_do_netlist=1 call load_schematic with 'reset_undo=0' avoiding call
|
||||
to tcl is_xschem_file that could change xctx->netlist_type to symbol */
|
||||
load_schematic(1, f, !cli_opt_do_netlist);
|
||||
load_schematic(1, f, !cli_opt_do_netlist, 1);
|
||||
tclvareval("update_recent_file {", f, "}", NULL);
|
||||
} else if(!cli_opt_tcl_script[0]) {
|
||||
char * tmp;
|
||||
|
|
@ -2482,7 +2482,7 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
|||
my_strncpy(fname, abs_sym_path(tmp, ""), S(fname));
|
||||
/* if cli_opt_do_netlist=1 call load_schematic with 'reset_undo=0' avoiding call
|
||||
to tcl is_xschem_file that could change xctx->netlist_type to symbol */
|
||||
load_schematic(1, fname, !cli_opt_do_netlist);
|
||||
load_schematic(1, fname, !cli_opt_do_netlist, 1);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1290,7 +1290,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 *fname, int reset_undo);
|
||||
extern void load_schematic(int load_symbol, const char *fname, int reset_undo, int alert);
|
||||
/* 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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue