if selecting a waweform dataset with `t` key update text floaters that might contain the dataset information. When closing the process list dialog also close the process status sub-dialog.

This commit is contained in:
stefan schippers 2023-10-23 16:03:27 +02:00
parent 4f4872fa7b
commit 2aeafac85c
5 changed files with 36 additions and 14 deletions

View File

@ -85,6 +85,7 @@ int there_are_floaters(void)
for(k = 0; k < xctx->texts; k++) {
if(xctx->text[k].flags & TEXT_FLOATER) {
floaters = 1;
dbg(1, "text %d is a floater\n", k);
break;
}
}

View File

@ -358,10 +358,11 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
/* move cursor2 */
/* set cursor position from master graph x-axis */
else if(event == MotionNotify && (state & Button1Mask) && (xctx->graph_flags & 32 )) {
int floaters = there_are_floaters();
xctx->graph_cursor2_x = G_X(xctx->mousex);
if(tclgetboolvar("live_cursor2_backannotate")) {
backannotate_at_cursor_b_pos(r, gr);
if(there_are_floaters()) set_modify(-2); /* update floater caches to reflect actual backannotation */
if(floaters) set_modify(-2); /* update floater caches to reflect actual backannotation */
redraw_all_at_end = 1;
}
}
@ -403,8 +404,9 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
}
/* backannotate node values at cursor b position */
else if(key == 'a' && EQUAL_MODMASK && (xctx->graph_flags & 4)) {
int floaters = there_are_floaters();
backannotate_at_cursor_b_pos(r, gr);
if(there_are_floaters()) set_modify(-2); /* update floater caches to reflect actual backannotation */
if(floaters) set_modify(-2); /* update floater caches to reflect actual backannotation */
redraw_all_at_end = 1;
}
/* x cursor1 toggle */
@ -415,12 +417,13 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
}
/* x cursor2 toggle */
else if((key == 'b') ) {
int floaters = there_are_floaters();
xctx->graph_flags ^= 4;
if(xctx->graph_flags & 4) {
xctx->graph_cursor2_x = G_X(xctx->mousex);
if(tclgetboolvar("live_cursor2_backannotate")) {
backannotate_at_cursor_b_pos(r, gr);
if(there_are_floaters()) set_modify(-2); /* update floater caches to reflect actual backannotation */
if(floaters) set_modify(-2); /* update floater caches to reflect actual backannotation */
redraw_all_at_end = 1;
} else {
need_all_redraw = 1;
@ -435,12 +438,13 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
/* swap cursors */
else if((key == 's') ) {
double tmp;
int floaters = there_are_floaters();
tmp = xctx->graph_cursor2_x;
xctx->graph_cursor2_x = xctx->graph_cursor1_x;
xctx->graph_cursor1_x = tmp;
if(tclgetboolvar("live_cursor2_backannotate")) {
backannotate_at_cursor_b_pos(r, gr);
if(there_are_floaters()) set_modify(-2); /* update floater caches to reflect actual backannotation */
if(floaters) set_modify(-2); /* update floater caches to reflect actual backannotation */
redraw_all_at_end = 1;
}
else need_all_redraw = 1;
@ -673,18 +677,25 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
else if((key == 't') ) {
if(track_dset != -2) {
const char *unlocked = strstr(get_tok_value(r->prop_ptr, "flags", 0), "unlocked");
int floaters = there_are_floaters();
if(i == xctx->graph_master || !unlocked) {
gr->dataset = track_dset;
my_strdup(_ALLOC_ID_, &r->prop_ptr, subst_token(r->prop_ptr, "dataset", my_itoa(track_dset)));
}
/* do this here to update texts printing current dataset in graph
* tcleval([xschem getprop rect 2 n dataset]) */
if(i == xctx->graph_master && floaters) {
set_modify(-2); /* update floater caches to reflect actual backannotation */
redraw_all_at_end = 1;
}
if((xctx->graph_flags & 4) && tclgetboolvar("live_cursor2_backannotate")) {
if(i == xctx->graph_master) {
backannotate_at_cursor_b_pos(r, gr);
if(there_are_floaters()) set_modify(-2); /* update floater caches to reflect actual backannotation */
}
redraw_all_at_end = 1;
} else {
need_redraw = 1;
if(!redraw_all_at_end) need_redraw = 1;
}
}

View File

@ -860,6 +860,8 @@ static int edit_rect_property(int x)
preserve = tclgetboolvar("preserve_unchanged_attrs");
if(strcmp(tclgetvar("rcode"),"") )
{
int floaters = there_are_floaters();
dbg(1, "floaters=%d\n", floaters);
xctx->push_undo();
for(i=0; i<xctx->lastsel; ++i) {
if(xctx->sel_array[i].type != xRECT) continue;
@ -888,21 +890,21 @@ static int edit_rect_property(int x)
if( (oldprop && xctx->rect[c][n].prop_ptr && strcmp(oldprop, xctx->rect[c][n].prop_ptr)) ||
(!oldprop && xctx->rect[c][n].prop_ptr) || (oldprop && !xctx->rect[c][n].prop_ptr)) {
if(!drw) {
bbox(START,0.0,0.0,0.0,0.0);
if(!floaters) bbox(START,0.0,0.0,0.0,0.0);
drw = 1;
}
if( xctx->rect[c][n].flags & 1024) {
draw_image(0, &xctx->rect[c][n], &xctx->rect[c][n].x1, &xctx->rect[c][n].y1,
&xctx->rect[c][n].x2, &xctx->rect[c][n].y2, 0, 0);
}
bbox(ADD, xctx->rect[c][n].x1, xctx->rect[c][n].y1, xctx->rect[c][n].x2, xctx->rect[c][n].y2);
if(!floaters) {
bbox(ADD, xctx->rect[c][n].x1, xctx->rect[c][n].y1, xctx->rect[c][n].x2, xctx->rect[c][n].y2);
}
}
}
if(drw) {
bbox(SET , 0.0 , 0.0 , 0.0 , 0.0);
draw();
bbox(END , 0.0 , 0.0 , 0.0 , 0.0);
}
if(!floaters && drw) bbox(SET , 0.0 , 0.0 , 0.0 , 0.0);
if(drw) draw();
if(!floaters && drw) bbox(END , 0.0 , 0.0 , 0.0 , 0.0);
modified = 1;
}
my_free(_ALLOC_ID_, &oldprop);

View File

@ -466,7 +466,14 @@ proc list_running_cmds {} {
button $frame3.b1 -width 16 -text {Terminate selected} -command "kill_running_cmds $lb -15" -bg yellow
button $frame3.b2 -width 16 -text {Kill selected} -command "kill_running_cmds $lb -9" -bg red
button $frame3.b3 -width 16 -text {View status} -command "view_process_status $lb" -bg PaleGreen
button $frame3.b4 -width 16 -text {Dismiss} -command "destroy $top" -bg PaleGreen
button $frame3.b4 -width 16 -text {Dismiss} -bg PaleGreen -command "
if {\[winfo exists .pstat\]} {
after cancel [list update_process_status $lb]
destroy .pstat
}
destroy $top
"
pack $frame3.b1 $frame3.b2 $frame3.b3 $frame3.b4 -side left -fill x -expand 1
pack $frame1 -fill x -expand 0

View File

@ -127,6 +127,7 @@ Output on SAOUT
Gaussian Threshold variation (via delvto parameter) is added to all MOS transistors.} 1110 -240 0 0 0.6 0.6 {}
T {.param ABSVAR=0.05
delvto='agauss(0,ABSVAR,3)'} 1390 -120 0 0 0.6 0.6 {layer=8}
T {tcleval(Dataset=\\n[xschem getprop rect 2 0 dataset])} 340 -850 0 0 0.7 0.7 {floater=xxx}
N 120 -470 120 -450 {lab=TEMPERAT}
N 360 -530 390 -530 {lab=VSS}
N 360 -500 360 -480 {lab=VSS}