Merge branch 'master' into SuperChayan
This commit is contained in:
commit
29dcbd436d
|
|
@ -2845,6 +2845,7 @@ void set_viewport_size(int w, int h, double lw)
|
|||
void save_restore_zoom(int save, Zoom_info *zi)
|
||||
{
|
||||
if(save) {
|
||||
dbg(1, "save_restore_zoom: save width= %d, height=%d\n", xctx->xrect[0].width, xctx->xrect[0].height);
|
||||
zi->savew = xctx->xrect[0].width;
|
||||
zi->saveh = xctx->xrect[0].height;
|
||||
zi->savelw = xctx->lw;
|
||||
|
|
@ -2856,6 +2857,7 @@ void save_restore_zoom(int save, Zoom_info *zi)
|
|||
xctx->xrect[0].y = 0;
|
||||
xctx->xrect[0].width = (unsigned short)zi->savew;
|
||||
xctx->xrect[0].height = (unsigned short)zi->saveh;
|
||||
dbg(1, "save_restore_zoom: restore width= %d, height=%d\n", xctx->xrect[0].width, xctx->xrect[0].height);
|
||||
xctx->areax2 = zi->savew+2*INT_WIDTH(zi->savelw);
|
||||
xctx->areay2 = zi->saveh+2*INT_WIDTH(zi->savelw);
|
||||
xctx->areax1 = -2*INT_WIDTH(zi->savelw);
|
||||
|
|
|
|||
|
|
@ -441,10 +441,6 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
/* determine if mouse pointer is below xaxis or left of yaxis in some graph */
|
||||
setup_graph_data(i, 0, gr);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* check if user clicked on a wave label -> draw wave in bold */
|
||||
if(event == ButtonPress && button == Button3 &&
|
||||
edit_wave_attributes(2, i, gr)) {
|
||||
|
|
@ -908,7 +904,10 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
}
|
||||
/* loop: after having operated on the master graph do the others */
|
||||
for(i=0; i< xctx->rects[GRIDLAYER]; ++i) {
|
||||
int same_sim_type = 0;
|
||||
char *curr_sim_type = NULL;
|
||||
r = &xctx->rect[GRIDLAYER][i];
|
||||
my_strdup2(_ALLOC_ID_, &curr_sim_type, get_tok_value(r->prop_ptr, "sim_type", 0));
|
||||
need_redraw = 0;
|
||||
if( !(r->flags & 1) ) continue; /* 1: graph; 3: graph_unlocked */
|
||||
gr->gx1 = gr->master_gx1;
|
||||
|
|
@ -918,6 +917,12 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
if(gr->dataset >= 0 /* && gr->dataset < xctx->raw->datasets */) dataset =gr->dataset;
|
||||
else dataset = -1;
|
||||
|
||||
if(!strcmp(curr_sim_type,
|
||||
get_tok_value(xctx->rect[GRIDLAYER][xctx->graph_master].prop_ptr, "sim_type", 0))) {
|
||||
same_sim_type = 1;
|
||||
}
|
||||
my_free(_ALLOC_ID_, &curr_sim_type);
|
||||
|
||||
if(event == MotionNotify && (state & Button1Mask) && !xctx->graph_bottom &&
|
||||
!(xctx->graph_flags & (16 | 32 | 512 | 1024))) {
|
||||
double delta;
|
||||
|
|
@ -955,7 +960,7 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
delta = gr->gw;
|
||||
delta_threshold = 0.01;
|
||||
/* selected or locked or master */
|
||||
if( r->sel || !(r->flags & 2) || i == xctx->graph_master) {
|
||||
if( r->sel || (same_sim_type && !(r->flags & 2)) || i == xctx->graph_master) {
|
||||
dbg(1, "moving waves: %d\n", i);
|
||||
if(fabs(xctx->mx_double_save - xctx->mousex_snap) > fabs(gr->cx * delta) * delta_threshold) {
|
||||
xx1 = gr->gx1 + (xctx->mx_double_save - xctx->mousex_snap) / gr->cx;
|
||||
|
|
@ -994,7 +999,7 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
/* horizontal move of waveforms with mouse wheel */
|
||||
else {
|
||||
/* selected or locked or master */
|
||||
if( r->sel || !(r->flags & 2) || i == xctx->graph_master) {
|
||||
if( r->sel || (same_sim_type && !(r->flags & 2)) || i == xctx->graph_master) {
|
||||
delta = gr->gw;
|
||||
delta_threshold = 0.05;
|
||||
xx1 = gr->gx1 - delta * delta_threshold;
|
||||
|
|
@ -1031,7 +1036,7 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
/* horizontal move of waveforms with mouse wheel */
|
||||
else {
|
||||
/* selected or locked or master */
|
||||
if(r->sel || !(r->flags & 2) || i == xctx->graph_master) {
|
||||
if(r->sel || (same_sim_type && !(r->flags & 2)) || i == xctx->graph_master) {
|
||||
delta = gr->gw;
|
||||
delta_threshold = 0.05;
|
||||
xx1 = gr->gx1 + delta * delta_threshold;
|
||||
|
|
@ -1072,7 +1077,7 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
}
|
||||
} else {
|
||||
/* selected or locked or master */
|
||||
if(r->sel || !(r->flags & 2) || i == xctx->graph_master) {
|
||||
if(r->sel || (same_sim_type && !(r->flags & 2)) || i == xctx->graph_master) {
|
||||
double var = 0.2 * gr->gw;
|
||||
xx2 = gr->gx2 + var * (1 - zoom_m);
|
||||
xx1 = gr->gx1 - var * zoom_m;
|
||||
|
|
@ -1111,7 +1116,7 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
}
|
||||
} else {
|
||||
/* selected or locked or master */
|
||||
if(r->sel || !(r->flags & 2) || i == xctx->graph_master) {
|
||||
if(r->sel || (same_sim_type && !(r->flags & 2)) || i == xctx->graph_master) {
|
||||
double var = 0.2 * gr->gw;
|
||||
xx2 = gr->gx2 - var * (1 - zoom_m);
|
||||
xx1 = gr->gx1 + var * zoom_m;
|
||||
|
|
@ -1190,13 +1195,15 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
need_redraw = 1;
|
||||
}
|
||||
} else {
|
||||
delta = gr->gw;
|
||||
delta_threshold = 0.05;
|
||||
xx1 = gr->gx1 - delta * delta_threshold;
|
||||
xx2 = gr->gx2 - delta * delta_threshold;
|
||||
my_strdup(_ALLOC_ID_, &r->prop_ptr, subst_token(r->prop_ptr, "x1", dtoa(xx1)));
|
||||
my_strdup(_ALLOC_ID_, &r->prop_ptr, subst_token(r->prop_ptr, "x2", dtoa(xx2)));
|
||||
need_redraw = 1;
|
||||
if(r->sel || (same_sim_type && !(r->flags & 2)) || i == xctx->graph_master) {
|
||||
delta = gr->gw;
|
||||
delta_threshold = 0.05;
|
||||
xx1 = gr->gx1 - delta * delta_threshold;
|
||||
xx2 = gr->gx2 - delta * delta_threshold;
|
||||
my_strdup(_ALLOC_ID_, &r->prop_ptr, subst_token(r->prop_ptr, "x1", dtoa(xx1)));
|
||||
my_strdup(_ALLOC_ID_, &r->prop_ptr, subst_token(r->prop_ptr, "x2", dtoa(xx2)));
|
||||
need_redraw = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(event == KeyPress && key == XK_Right) {
|
||||
|
|
@ -1215,13 +1222,15 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
need_redraw = 1;
|
||||
}
|
||||
} else {
|
||||
delta = gr->gw;
|
||||
delta_threshold = 0.05;
|
||||
xx1 = gr->gx1 + delta * delta_threshold;
|
||||
xx2 = gr->gx2 + delta * delta_threshold;
|
||||
my_strdup(_ALLOC_ID_, &r->prop_ptr, subst_token(r->prop_ptr, "x1", dtoa(xx1)));
|
||||
my_strdup(_ALLOC_ID_, &r->prop_ptr, subst_token(r->prop_ptr, "x2", dtoa(xx2)));
|
||||
need_redraw = 1;
|
||||
if(r->sel || (same_sim_type && !(r->flags & 2)) || i == xctx->graph_master) {
|
||||
delta = gr->gw;
|
||||
delta_threshold = 0.05;
|
||||
xx1 = gr->gx1 + delta * delta_threshold;
|
||||
xx2 = gr->gx2 + delta * delta_threshold;
|
||||
my_strdup(_ALLOC_ID_, &r->prop_ptr, subst_token(r->prop_ptr, "x1", dtoa(xx1)));
|
||||
my_strdup(_ALLOC_ID_, &r->prop_ptr, subst_token(r->prop_ptr, "x2", dtoa(xx2)));
|
||||
need_redraw = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(event == KeyPress && key == XK_Down) {
|
||||
|
|
@ -1258,7 +1267,7 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
} /* graph_master */
|
||||
} else { /* not graph_left, full X zoom*/
|
||||
/* selected or locked or master */
|
||||
if(r->sel || !(r->flags & 2) || i == xctx->graph_master) {
|
||||
if(r->sel || (same_sim_type && !(r->flags & 2)) || i == xctx->graph_master) {
|
||||
need_redraw = graph_fullxzoom(i, gr, dataset);
|
||||
}
|
||||
}
|
||||
|
|
@ -1268,7 +1277,7 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
else if(event == MotionNotify && (state & Button1Mask) && xctx->graph_bottom ) {
|
||||
if(xctx->raw && xctx->raw->values) {
|
||||
/* selected or locked or master */
|
||||
if(r->sel || !(r->flags & 2) || i == xctx->graph_master) {
|
||||
if(r->sel || (same_sim_type && !(r->flags & 2)) || i == xctx->graph_master) {
|
||||
|
||||
/* xx1 and xx2 calculated for master graph above */
|
||||
my_strdup(_ALLOC_ID_, &r->prop_ptr, subst_token(r->prop_ptr, "x1", dtoa(xx1)));
|
||||
|
|
@ -1288,7 +1297,7 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
|
|||
else if(button == Button3 && (xctx->ui_state & GRAPHPAN) &&
|
||||
!xctx->graph_left && !xctx->graph_top) {
|
||||
/* selected or locked or master */
|
||||
if(r->sel || !(r->flags & 2) || i == xctx->graph_master) {
|
||||
if(r->sel || (same_sim_type && !(r->flags & 2)) || i == xctx->graph_master) {
|
||||
if(xctx->mx_double_save != xctx->mousex_snap) {
|
||||
clear_graphpan_at_end = 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -4850,7 +4850,7 @@ void svg_embedded_graph(FILE *fd, xRect *r, double rx1, double ry1, double rx2,
|
|||
xctx->do_copy_area=save;
|
||||
tclsetboolvar("draw_grid", save_draw_grid);
|
||||
save_restore_zoom(0, &zi);
|
||||
resetwin(1, 1, 1, xctx->xrect[0].width, xctx->xrect[0].height);
|
||||
resetwin(1, 1, 1, 0, 0);
|
||||
|
||||
h = fabs(y2 - y1);
|
||||
w = fabs(x2 - x1);
|
||||
|
|
|
|||
144
src/psprint.c
144
src/psprint.c
|
|
@ -301,6 +301,7 @@ static int ps_embedded_graph(xRect* r, double rx1, double ry1, double rx2, doubl
|
|||
rwi = (int)(rw * scale + 1.0);
|
||||
rhi = (int)(rh * scale + 1.0);
|
||||
dbg(1, "graph size: %dx%d\n", rwi, rhi);
|
||||
dbg(1, "ps_embedded_graph: saving zoom\n");
|
||||
save_restore_zoom(1, &zi);
|
||||
set_viewport_size(rwi, rhi, xctx->lw);
|
||||
|
||||
|
|
@ -353,8 +354,9 @@ static int ps_embedded_graph(xRect* r, double rx1, double ry1, double rx2, doubl
|
|||
cairo_surface_destroy(png_sfc);
|
||||
xctx->draw_pixmap = 1;
|
||||
tclsetboolvar("draw_grid", save_draw_grid);
|
||||
dbg(1, "ps_embedded_graph: restoring zoom\n");
|
||||
save_restore_zoom(0, &zi);
|
||||
resetwin(1, 1, 1, xctx->xrect[0].width, xctx->xrect[0].height);
|
||||
resetwin(1, 1, 1, 0, 0);
|
||||
change_linewidth(xctx->lw);
|
||||
tclsetboolvar("dark_colorscheme", d_c);
|
||||
build_colors(0, 0);
|
||||
|
|
@ -1178,8 +1180,8 @@ void create_ps(char **psfile, int what, int fullzoom, int eps)
|
|||
fprintf(errfp, "ps_draw(): can not create tmpfile %s\n", *psfile);
|
||||
return;
|
||||
}
|
||||
setbuf(fd, NULL); /*To prevent buffer errors, still investigating cause. */
|
||||
}
|
||||
setbuf(fd, NULL); /*To prevent buffer errors, still investigating cause. */
|
||||
ps_colors=my_calloc(_ALLOC_ID_, cadlayers, sizeof(Ps_color));
|
||||
if(ps_colors==NULL){
|
||||
fprintf(errfp, "create_ps(): calloc error\n");
|
||||
|
|
@ -1190,78 +1192,83 @@ void create_ps(char **psfile, int what, int fullzoom, int eps)
|
|||
old_grid=tclgetboolvar("draw_grid");
|
||||
tclsetvar("draw_grid", "0");
|
||||
|
||||
/* xschem window aspect ratio decides if portrait or landscape */
|
||||
boundbox.x1 = xctx->areax1;
|
||||
boundbox.x2 = xctx->areax2;
|
||||
boundbox.y1 = xctx->areay1;
|
||||
boundbox.y2 = xctx->areay2;
|
||||
dx=boundbox.x2-boundbox.x1;
|
||||
dy=boundbox.y2-boundbox.y1;
|
||||
|
||||
/* xschem drawing bbox decides if portrait or landscape */
|
||||
if(fullzoom == 1) {
|
||||
calc_drawing_bbox(&boundbox, 0);
|
||||
dx=boundbox.x2-boundbox.x1;
|
||||
dy=boundbox.y2-boundbox.y1;
|
||||
}
|
||||
if(dx >= dy) {
|
||||
landscape = 1;
|
||||
} else {
|
||||
landscape = 0;
|
||||
}
|
||||
dbg(1, "dx=%g, dy=%g\n", dx, dy);
|
||||
|
||||
|
||||
if(fullzoom == 1) {
|
||||
/* save size and zoom factor */
|
||||
save_restore_zoom(1, &zi);
|
||||
/* this zoom only done to reset lw */
|
||||
zoom_full(0, 0, 1 + 2 * tclgetboolvar("zoom_full_center"), 0.97);
|
||||
/* adjust aspect ratio to paper size */
|
||||
if(landscape)
|
||||
xctx->xrect[0].height = (short unsigned int) (xctx->xrect[0].width * pagey / pagex);
|
||||
else
|
||||
xctx->xrect[0].width = (short unsigned int) (xctx->xrect[0].height * pagey / pagex);
|
||||
dbg(1, "xrect.width=%d, xrect.height=%d\n", xctx->xrect[0].width, xctx->xrect[0].height);
|
||||
xctx->areax1 = -2*INT_WIDTH(xctx->lw);
|
||||
xctx->areay1 = -2*INT_WIDTH(xctx->lw);
|
||||
xctx->areax2 = xctx->xrect[0].width+2*INT_WIDTH(xctx->lw);
|
||||
xctx->areay2 = xctx->xrect[0].height+2*INT_WIDTH(xctx->lw);
|
||||
xctx->areaw = xctx->areax2-xctx->areax1;
|
||||
xctx->areah = xctx->areay2 - xctx->areay1;
|
||||
dbg(1, "dx=%g, dy=%g\n", dx, dy);
|
||||
/* fit schematic into adjusted size */
|
||||
zoom_full(0, 0, 0 + 2 * tclgetboolvar("zoom_full_center"), 0.97);
|
||||
if(!(what & 4)) {
|
||||
/* xschem window aspect ratio decides if portrait or landscape */
|
||||
boundbox.x1 = xctx->areax1;
|
||||
boundbox.x2 = xctx->areax2;
|
||||
boundbox.y1 = xctx->areay1;
|
||||
boundbox.y2 = xctx->areay2;
|
||||
dx=boundbox.x2-boundbox.x1;
|
||||
dy=boundbox.y2-boundbox.y1;
|
||||
}
|
||||
|
||||
if(!landscape) { /* decide paper orientation for best schematic fit */
|
||||
double tmp;
|
||||
tmp = pagex;
|
||||
pagex = pagey;
|
||||
pagey = tmp;
|
||||
}
|
||||
if(fullzoom == 2) { /* set media size to bbox */
|
||||
double sc;
|
||||
my_strncpy(papername, "bbox", S(papername));
|
||||
pagex = xctx->xrect[0].width;
|
||||
pagey = xctx->xrect[0].height;
|
||||
if(pagex > pagey) {
|
||||
sc = 842. / pagex;
|
||||
pagex = my_round(pagex * sc);
|
||||
pagey = my_round(pagey * sc);
|
||||
} else {
|
||||
sc = 842. / pagey;
|
||||
pagex = my_round(pagex * sc);
|
||||
pagey = my_round(pagey * sc);
|
||||
|
||||
/* xschem drawing bbox decides if portrait or landscape */
|
||||
if(fullzoom == 1) {
|
||||
calc_drawing_bbox(&boundbox, 0);
|
||||
dx=boundbox.x2-boundbox.x1;
|
||||
dy=boundbox.y2-boundbox.y1;
|
||||
}
|
||||
margin = 0.0;
|
||||
}
|
||||
if(dx >= dy) {
|
||||
landscape = 1;
|
||||
} else {
|
||||
landscape = 0;
|
||||
}
|
||||
dbg(1, "dx=%g, dy=%g\n", dx, dy);
|
||||
|
||||
|
||||
if(fullzoom == 1) {
|
||||
/* save size and zoom factor */
|
||||
dbg(1, "create_ps: saving zoom\n");
|
||||
save_restore_zoom(1, &zi);
|
||||
/* this zoom only done to reset lw */
|
||||
zoom_full(0, 0, 1 + 2 * tclgetboolvar("zoom_full_center"), 0.97);
|
||||
/* adjust aspect ratio to paper size */
|
||||
if(landscape)
|
||||
xctx->xrect[0].height = (short unsigned int) (xctx->xrect[0].width * pagey / pagex);
|
||||
else
|
||||
xctx->xrect[0].width = (short unsigned int) (xctx->xrect[0].height * pagey / pagex);
|
||||
dbg(1, "xrect.width=%d, xrect.height=%d\n", xctx->xrect[0].width, xctx->xrect[0].height);
|
||||
xctx->areax1 = -2*INT_WIDTH(xctx->lw);
|
||||
xctx->areay1 = -2*INT_WIDTH(xctx->lw);
|
||||
xctx->areax2 = xctx->xrect[0].width+2*INT_WIDTH(xctx->lw);
|
||||
xctx->areay2 = xctx->xrect[0].height+2*INT_WIDTH(xctx->lw);
|
||||
xctx->areaw = xctx->areax2-xctx->areax1;
|
||||
xctx->areah = xctx->areay2 - xctx->areay1;
|
||||
dbg(1, "dx=%g, dy=%g\n", dx, dy);
|
||||
/* fit schematic into adjusted size */
|
||||
zoom_full(0, 0, 0 + 2 * tclgetboolvar("zoom_full_center"), 0.97);
|
||||
boundbox.x1 = xctx->areax1;
|
||||
boundbox.x2 = xctx->areax2;
|
||||
boundbox.y1 = xctx->areay1;
|
||||
boundbox.y2 = xctx->areay2;
|
||||
dx=boundbox.x2-boundbox.x1;
|
||||
dy=boundbox.y2-boundbox.y1;
|
||||
}
|
||||
|
||||
if(!landscape) { /* decide paper orientation for best schematic fit */
|
||||
double tmp;
|
||||
tmp = pagex;
|
||||
pagex = pagey;
|
||||
pagey = tmp;
|
||||
}
|
||||
if(fullzoom == 2) { /* set media size to bbox */
|
||||
double sc;
|
||||
my_strncpy(papername, "bbox", S(papername));
|
||||
pagex = xctx->xrect[0].width;
|
||||
pagey = xctx->xrect[0].height;
|
||||
if(pagex > pagey) {
|
||||
sc = 842. / pagex;
|
||||
pagex = my_round(pagex * sc);
|
||||
pagey = my_round(pagey * sc);
|
||||
} else {
|
||||
sc = 842. / pagey;
|
||||
pagex = my_round(pagex * sc);
|
||||
pagey = my_round(pagey * sc);
|
||||
}
|
||||
margin = 0.0;
|
||||
}
|
||||
} /* if(!(what & 4)) */
|
||||
|
||||
if(what & 1) {/* prolog */
|
||||
dbg(1, "ps_draw(): bbox: x1=%g y1=%g x2=%g y2=%g\n", boundbox.x1, boundbox.y1, boundbox.x2, boundbox.y2);
|
||||
|
|
@ -1334,7 +1341,6 @@ void create_ps(char **psfile, int what, int fullzoom, int eps)
|
|||
fprintf(fd, "%%%%EndProlog\n");
|
||||
}
|
||||
|
||||
|
||||
if(what & 2) { /* page */
|
||||
++numpages;
|
||||
|
||||
|
|
@ -1491,7 +1497,7 @@ void create_ps(char **psfile, int what, int fullzoom, int eps)
|
|||
|
||||
dbg(1, "ps_draw(): INT_WIDTH(lw)=%d plotfile=%s\n",INT_WIDTH(xctx->lw), xctx->plotfile);
|
||||
fprintf(fd, "showpage\n\n");
|
||||
}
|
||||
} /* if(what & 2) */
|
||||
if(what & 4) { /* trailer */
|
||||
fprintf(fd, "%%%%trailer\n");
|
||||
fprintf(fd, "%%%%Pages: %d\n", numpages);
|
||||
|
|
@ -1509,10 +1515,10 @@ void create_ps(char **psfile, int what, int fullzoom, int eps)
|
|||
|
||||
|
||||
/* restore original size and zoom factor */
|
||||
if(fullzoom == 1) {
|
||||
if(!(what & 4) && fullzoom == 1) {
|
||||
dbg(1, "create_ps: restoring zoom\n");
|
||||
save_restore_zoom(0, &zi);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int ps_draw(int what, int fullzoom, int eps)
|
||||
|
|
|
|||
|
|
@ -5784,7 +5784,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
|||
char n[100];
|
||||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||
if(argc > 2 && !strcmp(argv[2], "derived_symbols")) derived_symbols = 1;
|
||||
else if(argc > 2 && argv[2][0]) {
|
||||
else if(argc > 2 && argv[2][0] && isonlydigit(argv[2])) {
|
||||
one_symbol = 1;
|
||||
i = get_symbol(argv[2]);
|
||||
if(i >=0) Tcl_AppendResult(interp, my_itoa(i), " {", xctx->sym[i].name, "}", NULL);
|
||||
|
|
|
|||
|
|
@ -1771,7 +1771,7 @@ proc simconf_add {tool} {
|
|||
# proc cellview prints symbol bindings (default binding or "schematic" attr in symbol)
|
||||
# of all symbols used in current and sub schematics.
|
||||
proc cellview_setlabels {w symbol derived_symbol} {
|
||||
global dark_gui_colorscheme
|
||||
global dark_gui_colorscheme netlist_type
|
||||
if {$dark_gui_colorscheme} {
|
||||
set instfg orange1
|
||||
set symfg SeaGreen1
|
||||
|
|
@ -1783,6 +1783,7 @@ proc cellview_setlabels {w symbol derived_symbol} {
|
|||
set symbg SeaGreen1
|
||||
set missingbg IndianRed1
|
||||
}
|
||||
set save_netlist_type [xschem get netlist_type]
|
||||
set current [xschem get current_name]
|
||||
set sym_spice_sym_def [xschem getprop symbol $symbol spice_sym_def 2]
|
||||
set abs_sch [xschem get_sch_from_sym -1 $symbol]
|
||||
|
|
@ -1816,8 +1817,10 @@ proc cellview_setlabels {w symbol derived_symbol} {
|
|||
xschem set schsymbolprop $newprop
|
||||
xschem set_modify 3 ;# set only modified flag to force a save, do not update window/tab titles
|
||||
xschem save fast
|
||||
# xschem remove_symbols ;# purge all symbols to force a reload from disk
|
||||
xschem remove_symbols ;# purge all symbols to force a reload from disk
|
||||
xschem load -keep_symbols -nodraw -noundoreset $current
|
||||
set netlist_type $save_netlist_type
|
||||
xschem set netlist_type $netlist_type
|
||||
xschem netlist -keep_symbols -noalert;# traverse the hierarchy and retain all encountered symbols
|
||||
puts "get netlist"
|
||||
}
|
||||
|
|
@ -1828,6 +1831,8 @@ proc cellview_setlabels {w symbol derived_symbol} {
|
|||
}
|
||||
|
||||
proc cellview_edit_item {symbol w} {
|
||||
global netlist_type
|
||||
set save_netlist_type [xschem get netlist_type]
|
||||
set sym_spice_sym_def [xschem getprop symbol $symbol spice_sym_def 2]
|
||||
if {[xschem is_generator [$w get]]} {
|
||||
set f [$w get]
|
||||
|
|
@ -1848,6 +1853,8 @@ proc cellview_edit_item {symbol w} {
|
|||
xschem save fast
|
||||
puts "$symbol: updated spice_sym_def attribute"
|
||||
xschem load -keep_symbols -nodraw -noundoreset $current
|
||||
set netlist_type $save_netlist_type
|
||||
xschem set netlist_type $netlist_type
|
||||
xschem reload_symbols ;# update in-memory symbol data
|
||||
}
|
||||
}
|
||||
|
|
@ -1864,8 +1871,10 @@ proc cellview_edit_sym {w} {
|
|||
xschem load_new_window $sym
|
||||
}
|
||||
|
||||
proc cellview { {derived_symbols {}} {upd 0} } {
|
||||
global keep_symbols nolist_libs dark_gui_colorscheme
|
||||
proc cellview { {derived_symbols {}} {upd 0}} {
|
||||
global keep_symbols nolist_libs dark_gui_colorscheme netlist_type
|
||||
|
||||
set save_netlist_type [xschem get netlist_type]
|
||||
|
||||
if {$dark_gui_colorscheme} {
|
||||
set instfg orange1
|
||||
|
|
@ -1885,6 +1894,8 @@ proc cellview { {derived_symbols {}} {upd 0} } {
|
|||
}
|
||||
|
||||
if {!$upd} {
|
||||
set netlist_type $save_netlist_type
|
||||
xschem set netlist_type $netlist_type
|
||||
xschem reload_symbols ;# purge unused symbols
|
||||
xschem netlist -keep_symbols -noalert;# traverse the hierarchy and retain all encountered symbols
|
||||
puts "get netlist"
|
||||
|
|
@ -2012,9 +2023,10 @@ proc cellview { {derived_symbols {}} {upd 0} } {
|
|||
############ traversal
|
||||
proc traversal_setlabels {w parent_sch instname inst_sch sym_sch default_sch
|
||||
inst_spice_sym_def sym_spice_sym_def} {
|
||||
global traversal dark_gui_colorscheme
|
||||
global traversal dark_gui_colorscheme netlist_type
|
||||
set sf .trav.center.f.scrl
|
||||
|
||||
set save_netlist_type [xschem get netlist_type]
|
||||
# puts "traversal_setlabels: $w parent: |$parent_sch| inst: $instname def: $sym_sch $inst_sch --> [$w get]"
|
||||
# update schematic
|
||||
if {$parent_sch ne {}} {
|
||||
|
|
@ -2032,6 +2044,8 @@ proc traversal_setlabels {w parent_sch instname inst_sch sym_sch default_sch
|
|||
set inst_sch [$w get]
|
||||
# puts "inst_sch set to: $inst_sch"
|
||||
xschem load -undoreset -nodraw $current
|
||||
set netlist_type $save_netlist_type
|
||||
xschem set netlist_type $netlist_type
|
||||
}
|
||||
}
|
||||
# /update schematic
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
v {xschem version=3.4.4 file_version=1.2
|
||||
v {xschem version=3.4.6 file_version=1.2
|
||||
*
|
||||
* This file is part of XSCHEM,
|
||||
* a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit
|
||||
|
|
@ -31,7 +31,8 @@ template="name=x1 m=1
|
|||
+ VCCPIN=VCC VSSPIN=VSS"
|
||||
extra="VCCPIN VSSPIN"
|
||||
generic_type="m=integer wna=real lna=real wpa=real lpa=real wnb=real lnb=real wpb=real lpb=real VCCPIN=string VSSPIN=string"
|
||||
verilog_stop=true}
|
||||
verilog_stop=true
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
v {xschem version=3.4.4 file_version=1.2
|
||||
v {xschem version=3.4.6 file_version=1.2
|
||||
*
|
||||
* This file is part of XSCHEM,
|
||||
* a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit
|
||||
|
|
@ -19,7 +19,8 @@ v {xschem version=3.4.4 file_version=1.2
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
}
|
||||
G {type=subcircuit
|
||||
G {}
|
||||
K {type=subcircuit
|
||||
vhdl_stop=true
|
||||
verilog_stop=true
|
||||
format="@name @pinlist @VCCPIN @VSSPIN @symname wna=@wna lna=@lna wpa=@wpa lpa=@lpa wnb=@wnb lnb=@lnb wpb=@wpb lpb=@lpb m=@m"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
v {xschem version=3.4.4 file_version=1.2
|
||||
v {xschem version=3.4.6 file_version=1.2
|
||||
*
|
||||
* This file is part of XSCHEM,
|
||||
* a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit
|
||||
|
|
@ -30,7 +30,8 @@ template="name=x1 m=1
|
|||
+ VCCPIN=VCC VSSPIN=VSS"
|
||||
extra="VCCPIN VSSPIN"
|
||||
generic_type="m=integer wn=real lln=real wp=real lp=real VCCPIN=string VSSPIN=string"
|
||||
verilog_stop=true}
|
||||
verilog_stop=true
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
v {xschem version=3.4.4 file_version=1.2
|
||||
v {xschem version=3.4.6 file_version=1.2
|
||||
*
|
||||
* This file is part of XSCHEM,
|
||||
* a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit
|
||||
|
|
@ -19,7 +19,8 @@ v {xschem version=3.4.4 file_version=1.2
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
}
|
||||
G {type=subcircuit
|
||||
G {}
|
||||
K {type=subcircuit
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue