(2) full widget creation for xschem new windows, code cleanup, removed old stuff
This commit is contained in:
parent
c6a6d1b1dc
commit
c3c1b39cb5
|
|
@ -216,11 +216,34 @@ void toggle_only_probes()
|
||||||
draw();
|
draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void toggle_fullscreen()
|
void toggle_fullscreen(const char *topwin)
|
||||||
{
|
{
|
||||||
|
char *mytopwin = NULL;
|
||||||
char fullscr[]="add,fullscreen";
|
char fullscr[]="add,fullscreen";
|
||||||
char normal[]="remove,fullscreen";
|
char normal[]="remove,fullscreen";
|
||||||
static int menu_removed = 0;
|
static int menu_removed = 0;
|
||||||
|
unsigned int topwin_id;
|
||||||
|
Window rootwindow, parent_id;
|
||||||
|
Window *framewin_child_ptr;
|
||||||
|
unsigned int framewindow_nchildren;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(!strcmp(topwin, ".drw")) {
|
||||||
|
my_strdup2(1290, &mytopwin, "");
|
||||||
|
tcleval( "winfo id .");
|
||||||
|
sscanf(tclresult(), "0x%x", (unsigned int *) &topwin_id);
|
||||||
|
} else {
|
||||||
|
Tcl_VarEval(interp, "winfo toplevel ", topwin, NULL);
|
||||||
|
my_strdup2(1291, &mytopwin, tclresult());
|
||||||
|
Tcl_VarEval(interp, "winfo id ", mytopwin, NULL);
|
||||||
|
sscanf(tclresult(), "0x%x", (unsigned int *) &topwin_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
XQueryTree(display, topwin_id, &rootwindow, &parent_id, &framewin_child_ptr, &framewindow_nchildren);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fullscreen = (fullscreen+1)%2;
|
fullscreen = (fullscreen+1)%2;
|
||||||
if(fullscreen==1) tclsetvar("fullscreen","1");
|
if(fullscreen==1) tclsetvar("fullscreen","1");
|
||||||
else if(fullscreen==2) tclsetvar("fullscreen","2");
|
else if(fullscreen==2) tclsetvar("fullscreen","2");
|
||||||
|
|
@ -228,25 +251,26 @@ void toggle_fullscreen()
|
||||||
|
|
||||||
dbg(1, "toggle_fullscreen(): fullscreen=%d\n", fullscreen);
|
dbg(1, "toggle_fullscreen(): fullscreen=%d\n", fullscreen);
|
||||||
if(fullscreen==2) {
|
if(fullscreen==2) {
|
||||||
tcleval("pack forget .menubar .statusbar; update");
|
Tcl_VarEval(interp, "pack forget ", mytopwin, ".menubar ", mytopwin, ".statusbar; update", NULL);
|
||||||
menu_removed = 1;
|
menu_removed = 1;
|
||||||
}
|
}
|
||||||
if(fullscreen !=2 && menu_removed) {
|
if(fullscreen !=2 && menu_removed) {
|
||||||
tcleval("pack .menubar -anchor n -side top -fill x -before .drw\n\
|
Tcl_VarEval(interp, "pack ", mytopwin, ".menubar -anchor n -side top -fill x -before ", mytopwin, ".drw\n\
|
||||||
pack .statusbar -after .drw -anchor sw -fill x; update");
|
pack ", mytopwin, ".statusbar -after ", mytopwin, ".drw -anchor sw -fill x; update", NULL);
|
||||||
menu_removed=0;
|
menu_removed=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(fullscreen == 1) {
|
if(fullscreen == 1) {
|
||||||
window_state(display , parent_of_topwindow,fullscr);
|
window_state(display , parent_id,fullscr);
|
||||||
} else if(fullscreen == 2) {
|
} else if(fullscreen == 2) {
|
||||||
window_state(display , parent_of_topwindow,normal);
|
window_state(display , parent_id,normal);
|
||||||
window_state(display , parent_of_topwindow,fullscr);
|
window_state(display , parent_id,fullscr);
|
||||||
} else {
|
} else {
|
||||||
window_state(display , parent_of_topwindow,normal);
|
window_state(display , parent_id,normal);
|
||||||
}
|
}
|
||||||
xctx->pending_fullzoom=1;
|
xctx->pending_fullzoom=1;
|
||||||
|
my_free(1291, &mytopwin);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __unix__
|
#ifdef __unix__
|
||||||
|
|
@ -967,7 +991,7 @@ void schematic_in_new_window(void)
|
||||||
|
|
||||||
void launcher(void)
|
void launcher(void)
|
||||||
{
|
{
|
||||||
const char *str;
|
const char *url;
|
||||||
char program[PATH_MAX];
|
char program[PATH_MAX];
|
||||||
int n;
|
int n;
|
||||||
rebuild_selected_array();
|
rebuild_selected_array();
|
||||||
|
|
@ -979,19 +1003,13 @@ void launcher(void)
|
||||||
select_object(mx,my,0, 0);
|
select_object(mx,my,0, 0);
|
||||||
n=xctx->sel_array[0].n;
|
n=xctx->sel_array[0].n;
|
||||||
my_strncpy(program, get_tok_value(xctx->inst[n].prop_ptr,"program",0), S(program)); /* handle backslashes */
|
my_strncpy(program, get_tok_value(xctx->inst[n].prop_ptr,"program",0), S(program)); /* handle backslashes */
|
||||||
str = get_tok_value(xctx->inst[n].prop_ptr,"url",0); /* handle backslashes */
|
url = get_tok_value(xctx->inst[n].prop_ptr,"url",0); /* handle backslashes */
|
||||||
dbg(1, "launcher(): str=%s\n", str);
|
dbg(1, "launcher(): url=%s\n", url);
|
||||||
if(str[0] || (program[0])) {
|
if(url[0] || (program[0])) { /* open url with appropriate program */
|
||||||
tclsetvar("launcher_var",str);
|
Tcl_VarEval(interp, "launcher {", url, "} {", program, "}", NULL);
|
||||||
if(program[0]) { /* 20170413 leave launcher_program empty if unspecified */
|
|
||||||
tclsetvar("launcher_program",program);
|
|
||||||
} else {
|
|
||||||
tclsetvar("launcher_program","");
|
|
||||||
}
|
|
||||||
tcleval( "launcher");
|
|
||||||
} else {
|
} else {
|
||||||
my_strncpy(program, get_tok_value(xctx->inst[n].prop_ptr,"tclcommand",0), S(program));
|
my_strncpy(program, get_tok_value(xctx->inst[n].prop_ptr,"tclcommand",0), S(program));
|
||||||
if(program[0]) { /* 20170415 execute tcl command */
|
if(program[0]) { /* execute tcl command */
|
||||||
tcleval(program);
|
tcleval(program);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ void start_wire(double mx, double my)
|
||||||
}
|
}
|
||||||
/* main window callback */
|
/* main window callback */
|
||||||
/* mx and my are set to the mouse coord. relative to window */
|
/* mx and my are set to the mouse coord. relative to window */
|
||||||
int callback(int event, int mx, int my, KeySym key,
|
int callback(const char *winpath, int event, int mx, int my, KeySym key,
|
||||||
int button, int aux, int state)
|
int button, int aux, int state)
|
||||||
{
|
{
|
||||||
char str[PATH_MAX + 100]; /* overflow safe 20161122 */
|
char str[PATH_MAX + 100]; /* overflow safe 20161122 */
|
||||||
|
|
@ -648,6 +648,12 @@ int callback(int event, int mx, int my, KeySym key,
|
||||||
xctx->rectcolor = key - '0'+4;
|
xctx->rectcolor = key - '0'+4;
|
||||||
my_snprintf(n, S(n), "%d", xctx->rectcolor);
|
my_snprintf(n, S(n), "%d", xctx->rectcolor);
|
||||||
Tcl_VarEval(interp, "xschem set rectcolor ", n, NULL);
|
Tcl_VarEval(interp, "xschem set rectcolor ", n, NULL);
|
||||||
|
|
||||||
|
if(!strcmp(winpath, ".drw")) {
|
||||||
|
Tcl_VarEval(interp, "reconfigure_layers_button {}", NULL);
|
||||||
|
} else {
|
||||||
|
Tcl_VarEval(interp, "reconfigure_layers_button [winfo parent ", winpath, "]", NULL);
|
||||||
|
}
|
||||||
dbg(1, "callback(): new color: %d\n",color_index[xctx->rectcolor]);
|
dbg(1, "callback(): new color: %d\n",color_index[xctx->rectcolor]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -1139,8 +1145,9 @@ int callback(int event, int mx, int my, KeySym key,
|
||||||
}
|
}
|
||||||
if(key=='\\' && state==0) /* fullscreen */
|
if(key=='\\' && state==0) /* fullscreen */
|
||||||
{
|
{
|
||||||
dbg(1, "callback(): toggle fullscreen\n");
|
|
||||||
toggle_fullscreen();
|
dbg(1, "callback(): toggle fullscreen, winpath=%s\n", winpath);
|
||||||
|
toggle_fullscreen(winpath);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(key=='f' && state==Mod1Mask) /* flip objects around their anchor points 20171208 */
|
if(key=='f' && state==Mod1Mask) /* flip objects around their anchor points 20171208 */
|
||||||
|
|
|
||||||
|
|
@ -161,9 +161,9 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
if(!strcmp(argv[1],"callback") )
|
if(!strcmp(argv[1],"callback") )
|
||||||
{
|
{
|
||||||
cmd_found = 1;
|
cmd_found = 1;
|
||||||
callback( atoi(argv[2]), atoi(argv[3]), atoi(argv[4]), (KeySym)atol(argv[5]),
|
callback( argv[2], atoi(argv[3]), atoi(argv[4]), atoi(argv[5]), (KeySym)atol(argv[6]),
|
||||||
atoi(argv[6]), atoi(argv[7]), atoi(argv[8]) );
|
atoi(argv[7]), atoi(argv[8]), atoi(argv[9]) );
|
||||||
dbg(2, "callback %s %s %s %s %s %s %s\n", argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
|
dbg(2, "callback %s %s %s %s %s %s %s %s\n", argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
|
||||||
Tcl_ResetResult(interp);
|
Tcl_ResetResult(interp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -458,7 +458,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
{
|
{
|
||||||
cmd_found = 1;
|
cmd_found = 1;
|
||||||
dbg(1, "scheduler(): xschem fullscreen, fullscreen=%d\n", fullscreen);
|
dbg(1, "scheduler(): xschem fullscreen, fullscreen=%d\n", fullscreen);
|
||||||
toggle_fullscreen();
|
toggle_fullscreen(argv[2]);
|
||||||
Tcl_ResetResult(interp);
|
Tcl_ResetResult(interp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2323,7 +2323,6 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[2],"rectcolor")) {
|
else if(!strcmp(argv[2],"rectcolor")) {
|
||||||
xctx->rectcolor=atoi(argv[3]);
|
xctx->rectcolor=atoi(argv[3]);
|
||||||
tcleval("reconfigure_layers_button");
|
|
||||||
rebuild_selected_array();
|
rebuild_selected_array();
|
||||||
if(xctx->lastsel) {
|
if(xctx->lastsel) {
|
||||||
change_layer();
|
change_layer();
|
||||||
|
|
|
||||||
110
src/xinit.c
110
src/xinit.c
|
|
@ -267,7 +267,7 @@ void init_color_array(double dim)
|
||||||
double rr, gg, bb;
|
double rr, gg, bb;
|
||||||
static int done=0;
|
static int done=0;
|
||||||
|
|
||||||
dim_bg = tclgetvar("dim_background")[0] == '1' ? 1: 0;
|
dim_bg = tclgetvar("color_dim")[0] == '1' ? 1: 0;
|
||||||
for(i=0;i<cadlayers;i++) {
|
for(i=0;i<cadlayers;i++) {
|
||||||
my_snprintf(s, S(s), "lindex $colors %d",i);
|
my_snprintf(s, S(s), "lindex $colors %d",i);
|
||||||
tcleval(s);
|
tcleval(s);
|
||||||
|
|
@ -399,6 +399,7 @@ void alloc_xschem_data()
|
||||||
xctx->schsymbolprop=NULL; /* symbol property string */
|
xctx->schsymbolprop=NULL; /* symbol property string */
|
||||||
xctx->schverilogprop=NULL;/* verilog */
|
xctx->schverilogprop=NULL;/* verilog */
|
||||||
xctx->version_string = NULL;
|
xctx->version_string = NULL;
|
||||||
|
xctx->rectcolor= 4; /* this is the current layer when xschem started. */
|
||||||
xctx->currsch = 0;
|
xctx->currsch = 0;
|
||||||
xctx->ui_state = 0;
|
xctx->ui_state = 0;
|
||||||
xctx->need_reb_sel_arr = 1;
|
xctx->need_reb_sel_arr = 1;
|
||||||
|
|
@ -466,7 +467,6 @@ void alloc_xschem_data()
|
||||||
xctx->hilight_time = 0; /* timestamp for sims */
|
xctx->hilight_time = 0; /* timestamp for sims */
|
||||||
xctx->hilight_nets = 0;
|
xctx->hilight_nets = 0;
|
||||||
xctx->hilight_color = 0;
|
xctx->hilight_color = 0;
|
||||||
xctx->rectcolor = 0;
|
|
||||||
for(i=0;i<CADMAXHIER;i++) {
|
for(i=0;i<CADMAXHIER;i++) {
|
||||||
xctx->sch_path[i]=NULL;
|
xctx->sch_path[i]=NULL;
|
||||||
xctx->sch_path_hash[i]=0;
|
xctx->sch_path_hash[i]=0;
|
||||||
|
|
@ -862,40 +862,35 @@ void new_schematic(const char *what, const char *tk_win_path, const char *filena
|
||||||
zoom_full(1, 0, 1, 0.97); /* draw */
|
zoom_full(1, 0, 1, 0.97); /* draw */
|
||||||
} else if(!strcmp(what, "destroy")) {
|
} else if(!strcmp(what, "destroy")) {
|
||||||
if(cnt) {
|
if(cnt) {
|
||||||
|
int close = 0;
|
||||||
dbg(1, "new_schematic() destroy\n");
|
dbg(1, "new_schematic() destroy\n");
|
||||||
tkwin = Tk_NameToWindow(interp, tk_win_path, mainwindow);
|
if(xctx->modified && has_x) {
|
||||||
for(i = 1; i < MAX_NEW_WINDOWS; i++) {
|
tcleval("tk_messageBox -type okcancel -message {UNSAVED data: want to exit?}");
|
||||||
if(tkwin == tknew_window[i]) {
|
if(strcmp(tclresult(),"ok")==0) close = 1;
|
||||||
n = i;
|
}
|
||||||
break;
|
else close = 1;
|
||||||
|
Tcl_ResetResult(interp);
|
||||||
|
if(close) {
|
||||||
|
tkwin = Tk_NameToWindow(interp, tk_win_path, mainwindow);
|
||||||
|
for(i = 1; i < MAX_NEW_WINDOWS; i++) {
|
||||||
|
if(tkwin == tknew_window[i]) {
|
||||||
|
n = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
if(n >= 1 && n < MAX_NEW_WINDOWS) {
|
||||||
if(n >= 1 && n < MAX_NEW_WINDOWS) {
|
xctx = save_xctx[n];
|
||||||
xctx = save_xctx[n];
|
|
||||||
delete_schematic_data();
|
|
||||||
save_xctx[n] = NULL;
|
|
||||||
Tk_DestroyWindow(tknew_window[n]);
|
|
||||||
tknew_window[n] = NULL;
|
|
||||||
xctx = save_xctx[0]; /* restore schematic */
|
|
||||||
set_modify(xctx->modified);
|
|
||||||
cnt--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if(!strcmp(what, "destroy_all")) {
|
|
||||||
if(cnt) {
|
|
||||||
dbg(1, "new_schematic() destroy_all\n");
|
|
||||||
for(i = 1; i < MAX_NEW_WINDOWS; i++) {
|
|
||||||
if(tknew_window[i]) {
|
|
||||||
xctx = save_xctx[i];
|
|
||||||
delete_schematic_data();
|
delete_schematic_data();
|
||||||
save_xctx[i] = NULL;
|
save_xctx[n] = NULL;
|
||||||
Tk_DestroyWindow(tknew_window[i]);
|
Tcl_VarEval(interp, "winfo parent ", tk_win_path, NULL);
|
||||||
tknew_window[i] = NULL;
|
Tk_DestroyWindow(tknew_window[n]);
|
||||||
|
Tcl_VarEval(interp, "destroy ", tclresult(), NULL);
|
||||||
|
tknew_window[n] = NULL;
|
||||||
|
xctx = save_xctx[0]; /* restore schematic */
|
||||||
|
set_modify(xctx->modified);
|
||||||
cnt--;
|
cnt--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xctx = save_xctx[0]; /* restore schematic */
|
|
||||||
set_modify(xctx->modified);
|
|
||||||
}
|
}
|
||||||
} else if(!strcmp(what, "switch")) {
|
} else if(!strcmp(what, "switch")) {
|
||||||
if(cnt) {
|
if(cnt) {
|
||||||
|
|
@ -1152,6 +1147,11 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
||||||
tclsetvar("XSCHEM_LIBRARY_PATH", tclresult());
|
tclsetvar("XSCHEM_LIBRARY_PATH", tclresult());
|
||||||
|
|
||||||
running_in_src_dir = 0;
|
running_in_src_dir = 0;
|
||||||
|
/* create user conf dir , remove ~ if present */
|
||||||
|
my_snprintf(tmp, S(tmp),"regsub {^~/} {%s} {%s/}", USER_CONF_DIR, home_dir);
|
||||||
|
tcleval(tmp);
|
||||||
|
my_snprintf(user_conf_dir, S(user_conf_dir), "%s", tclresult());
|
||||||
|
tclsetvar("USER_CONF_DIR", user_conf_dir);
|
||||||
/* test if running xschem in src/ dir (usually for testing) */
|
/* test if running xschem in src/ dir (usually for testing) */
|
||||||
if( !stat("./xschem.tcl", &buf) && !stat("./systemlib", &buf) && !stat("./xschem", &buf)) {
|
if( !stat("./xschem.tcl", &buf) && !stat("./systemlib", &buf) && !stat("./xschem", &buf)) {
|
||||||
running_in_src_dir = 1;
|
running_in_src_dir = 1;
|
||||||
|
|
@ -1161,18 +1161,37 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
||||||
tcleval(tmp);
|
tcleval(tmp);
|
||||||
tclsetvar("XSCHEM_LIBRARY_PATH", tclresult());
|
tclsetvar("XSCHEM_LIBRARY_PATH", tclresult());
|
||||||
*/
|
*/
|
||||||
my_snprintf(tmp, S(tmp), "subst [file dirname \"%s\"]/xschem_library/devices", pwd_dir);
|
my_snprintf(tmp, S(tmp),
|
||||||
|
"set XSCHEM_LIBRARY_PATH %s/xschem_library", user_conf_dir);
|
||||||
|
tcleval(tmp);
|
||||||
|
my_snprintf(tmp, S(tmp),
|
||||||
|
"append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/devices", pwd_dir);
|
||||||
|
tcleval(tmp);
|
||||||
|
my_snprintf(tmp, S(tmp),
|
||||||
|
"append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/examples", pwd_dir);
|
||||||
|
tcleval(tmp);
|
||||||
|
my_snprintf(tmp, S(tmp),
|
||||||
|
"append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/ngspice", pwd_dir);
|
||||||
|
tcleval(tmp);
|
||||||
|
my_snprintf(tmp, S(tmp),
|
||||||
|
"append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/logic", pwd_dir);
|
||||||
|
tcleval(tmp);
|
||||||
|
my_snprintf(tmp, S(tmp),
|
||||||
|
"append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/xschem_simulator", pwd_dir);
|
||||||
|
tcleval(tmp);
|
||||||
|
my_snprintf(tmp, S(tmp),
|
||||||
|
"append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/binto7seg", pwd_dir);
|
||||||
|
tcleval(tmp);
|
||||||
|
my_snprintf(tmp, S(tmp),
|
||||||
|
"append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/pcb", pwd_dir);
|
||||||
|
tcleval(tmp);
|
||||||
|
my_snprintf(tmp, S(tmp),
|
||||||
|
"append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/rom8k", pwd_dir);
|
||||||
tcleval(tmp);
|
tcleval(tmp);
|
||||||
tclsetvar("XSCHEM_LIBRARY_PATH", tclresult());
|
|
||||||
} else if( !stat(XSCHEM_SHAREDIR, &buf) ) {
|
} else if( !stat(XSCHEM_SHAREDIR, &buf) ) {
|
||||||
tclsetvar("XSCHEM_SHAREDIR",XSCHEM_SHAREDIR);
|
tclsetvar("XSCHEM_SHAREDIR",XSCHEM_SHAREDIR);
|
||||||
/* ... else give up searching, may set later after loading xschemrc */
|
/* ... else give up searching, may set later after loading xschemrc */
|
||||||
}
|
}
|
||||||
/* create user conf dir , remove ~ if present */
|
|
||||||
my_snprintf(tmp, S(tmp),"regsub {^~/} {%s} {%s/}", USER_CONF_DIR, home_dir);
|
|
||||||
tcleval(tmp);
|
|
||||||
my_snprintf(user_conf_dir, S(user_conf_dir), "%s", tclresult());
|
|
||||||
tclsetvar("USER_CONF_DIR", user_conf_dir);
|
|
||||||
#else
|
#else
|
||||||
char install_dir[MAX_PATH]="";
|
char install_dir[MAX_PATH]="";
|
||||||
char *up_hier=NULL, *win_xschem_library_path=NULL;
|
char *up_hier=NULL, *win_xschem_library_path=NULL;
|
||||||
|
|
@ -1183,10 +1202,10 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
||||||
/*3*/ "xschem_library/examples",
|
/*3*/ "xschem_library/examples",
|
||||||
/*4*/ "xschem_library/ngspice",
|
/*4*/ "xschem_library/ngspice",
|
||||||
/*5*/ "xschem_library/logic",
|
/*5*/ "xschem_library/logic",
|
||||||
/*6*/ "xschem_library/binto7seg",
|
/*6*/ "xschem_library/xschem_simulator"};
|
||||||
/*7*/ "xschem_library/pcb",
|
/*7*/ "xschem_library/binto7seg",
|
||||||
/*8*/ "xschem_library/rom8k",
|
/*8*/ "xschem_library/pcb",
|
||||||
/*9*/ "xschem_library/xschem_simulator"};
|
/*9*/ "xschem_library/rom8k",
|
||||||
GetModuleFileNameA(NULL, install_dir, MAX_PATH);
|
GetModuleFileNameA(NULL, install_dir, MAX_PATH);
|
||||||
change_to_unix_fn(install_dir);
|
change_to_unix_fn(install_dir);
|
||||||
int dir_len=strlen(install_dir);
|
int dir_len=strlen(install_dir);
|
||||||
|
|
@ -1215,7 +1234,7 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
||||||
tclsetvar("XSCHEM_LIBRARY_PATH", win_xschem_library_path_clean);
|
tclsetvar("XSCHEM_LIBRARY_PATH", win_xschem_library_path_clean);
|
||||||
my_free(432, &win_xschem_library_path);
|
my_free(432, &win_xschem_library_path);
|
||||||
my_free(441, &up_hier);
|
my_free(441, &up_hier);
|
||||||
char* gxschem_library=NULL, *xschem_sharedir=NULL;
|
char *xschem_sharedir=NULL;
|
||||||
if ((xschem_sharedir=getenv("XSCHEM_SHAREDIR")) != NULL) {
|
if ((xschem_sharedir=getenv("XSCHEM_SHAREDIR")) != NULL) {
|
||||||
if (!stat(xschem_sharedir, &buf)) {
|
if (!stat(xschem_sharedir, &buf)) {
|
||||||
tclsetvar("XSCHEM_SHAREDIR", xschem_sharedir);
|
tclsetvar("XSCHEM_SHAREDIR", xschem_sharedir);
|
||||||
|
|
@ -1532,7 +1551,6 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
||||||
visual = vinfo.visual;
|
visual = vinfo.visual;
|
||||||
*/
|
*/
|
||||||
dbg(1, "Tcl_AppInit(): done step b of xinit()\n");
|
dbg(1, "Tcl_AppInit(): done step b of xinit()\n");
|
||||||
xctx->rectcolor= 4; /* this is the current layer when xschem started. */
|
|
||||||
for(i=0;i<cadlayers;i++)
|
for(i=0;i<cadlayers;i++)
|
||||||
{
|
{
|
||||||
pixmap[i] = XCreateBitmapFromData(display, xctx->window, (char*)(pixdata[i]),16,16);
|
pixmap[i] = XCreateBitmapFromData(display, xctx->window, (char*)(pixdata[i]),16,16);
|
||||||
|
|
@ -1595,16 +1613,16 @@ int Tcl_AppInit(Tcl_Interp *inter)
|
||||||
/* leaving undo buffer and other garbage around. */
|
/* leaving undo buffer and other garbage around. */
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
/* Completing tk windows creation (see xschem.tcl, build_windows) and event binding */
|
/* Completing tk windows creation (see xschem.tcl, pack_widgets) and event binding */
|
||||||
/* *AFTER* X initialization done */
|
/* *AFTER* X initialization done */
|
||||||
/* */
|
/* */
|
||||||
if(has_x) tcleval("build_windows");
|
if(has_x) tcleval("pack_widgets");
|
||||||
|
|
||||||
fullscreen=atoi(tclgetvar("fullscreen"));
|
fullscreen=atoi(tclgetvar("fullscreen"));
|
||||||
if(fullscreen) {
|
if(fullscreen) {
|
||||||
fullscreen = 0;
|
fullscreen = 0;
|
||||||
tcleval("update");
|
tcleval("update");
|
||||||
toggle_fullscreen();
|
toggle_fullscreen(".");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
|
|
||||||
|
|
@ -752,6 +752,7 @@ extern char cairo_font_name[80];
|
||||||
extern double cairo_font_line_spacing; /* allows to change line spacing: default: 1.0 */
|
extern double cairo_font_line_spacing; /* allows to change line spacing: default: 1.0 */
|
||||||
extern double cairo_vert_correct;
|
extern double cairo_vert_correct;
|
||||||
extern int debug_var;
|
extern int debug_var;
|
||||||
|
extern double color_dim; /* can not be put in Xctx unless all X11 colors are reset on window change */
|
||||||
/*********** End of variables backed in xschem.tcl ***********/
|
/*********** End of variables backed in xschem.tcl ***********/
|
||||||
extern int help;
|
extern int help;
|
||||||
extern char *cad_icon[];
|
extern char *cad_icon[];
|
||||||
|
|
@ -768,7 +769,6 @@ extern char *tcl_command;
|
||||||
extern char tcl_script[PATH_MAX];
|
extern char tcl_script[PATH_MAX];
|
||||||
extern int tcp_port;
|
extern int tcp_port;
|
||||||
extern char **color_array;
|
extern char **color_array;
|
||||||
extern double color_dim; /* can not be put in Xctx unless all X11 colors are reset on window change */
|
|
||||||
extern unsigned int color_index[];
|
extern unsigned int color_index[];
|
||||||
extern int n_active_layers; /* can not be put in Xctx, since it is bound to enable_layer[] */
|
extern int n_active_layers; /* can not be put in Xctx, since it is bound to enable_layer[] */
|
||||||
extern int *active_layer; /* can not be put in Xctx, since it is bound to enable_layer[] */
|
extern int *active_layer; /* can not be put in Xctx, since it is bound to enable_layer[] */
|
||||||
|
|
@ -908,7 +908,7 @@ extern void xwin_exit(void);
|
||||||
extern void resetcairo(int create, int clear, int force_or_resize);
|
extern void resetcairo(int create, int clear, int force_or_resize);
|
||||||
extern int Tcl_AppInit(Tcl_Interp *interp);
|
extern int Tcl_AppInit(Tcl_Interp *interp);
|
||||||
extern int source_tcl_file(char *s);
|
extern int source_tcl_file(char *s);
|
||||||
extern int callback(int event, int mx, int my, KeySym key,
|
extern int callback(const char *winpath, int event, int mx, int my, KeySym key,
|
||||||
int button, int aux, int state);
|
int button, int aux, int state);
|
||||||
extern void resetwin(int create_pixmap, int clear_pixmap, int force, int w, int h);
|
extern void resetwin(int create_pixmap, int clear_pixmap, int force, int w, int h);
|
||||||
extern void find_closest_net(double mx,double my);
|
extern void find_closest_net(double mx,double my);
|
||||||
|
|
@ -1170,7 +1170,7 @@ extern void windowid();
|
||||||
extern void preview_window(const char *what, const char *tk_win_path, const char *filename);
|
extern void preview_window(const char *what, const char *tk_win_path, const char *filename);
|
||||||
extern void new_schematic(const char *what, const char *tk_win_path, const char *filename);
|
extern void new_schematic(const char *what, const char *tk_win_path, const char *filename);
|
||||||
extern int window_state (Display *disp, Window win, char *arg);
|
extern int window_state (Display *disp, Window win, char *arg);
|
||||||
extern void toggle_fullscreen();
|
extern void toggle_fullscreen(const char *topwin);
|
||||||
extern void toggle_only_probes();
|
extern void toggle_only_probes();
|
||||||
extern void update_symbol(const char *result, int x);
|
extern void update_symbol(const char *result, int x);
|
||||||
extern void tclexit(ClientData s);
|
extern void tclexit(ClientData s);
|
||||||
|
|
|
||||||
1467
src/xschem.tcl
1467
src/xschem.tcl
File diff suppressed because it is too large
Load Diff
10
src/xschemrc
10
src/xschemrc
|
|
@ -26,9 +26,17 @@
|
||||||
# /home/schippes/share/doc/xschem/rom8k
|
# /home/schippes/share/doc/xschem/rom8k
|
||||||
|
|
||||||
#### For testing in build src directory
|
#### For testing in build src directory
|
||||||
#### if unset following paths are set:
|
#### if unset following paths are set and maintained if existing:
|
||||||
#
|
#
|
||||||
|
# ~/.xschem/xschem_library
|
||||||
# ../xschem_library/devices
|
# ../xschem_library/devices
|
||||||
|
# ../xschem_library/examples
|
||||||
|
# ../xschem_library/ngspice
|
||||||
|
# ../xschem_library/logic
|
||||||
|
# ../xschem_library/xschem_simulator
|
||||||
|
# ../xschem_library/binto7seg
|
||||||
|
# ../xschem_library/pcb
|
||||||
|
# ../xschem_library/rom8k
|
||||||
|
|
||||||
#### For testing after installation: uncomment following lines
|
#### For testing after installation: uncomment following lines
|
||||||
# set xschem_doc_dir [file dirname ${XSCHEM_SHAREDIR}]/doc/xschem
|
# set xschem_doc_dir [file dirname ${XSCHEM_SHAREDIR}]/doc/xschem
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
v {xschem version=2.9.5_RC8 file_version=1.1}
|
v {xschem version=3.0.0 file_version=1.2 }
|
||||||
G {}
|
G {}
|
||||||
|
K {}
|
||||||
V {}
|
V {}
|
||||||
S {}
|
S {}
|
||||||
E {}
|
E {}
|
||||||
|
|
@ -104,16 +105,16 @@ value=".option SCALE=1e-6 PARHIER=LOCAL RUNLVL=6 post MODMONTE=1
|
||||||
vvss vss 0 dc 0
|
vvss vss 0 dc 0
|
||||||
|
|
||||||
.save all
|
.save all
|
||||||
|
.save tran @q5[p]
|
||||||
** models are generally not free: you must download
|
** models are generally not free: you must download
|
||||||
** SPICE models for active devices and put them into the below
|
** SPICE models for active devices and put them into the below
|
||||||
** referenced file in simulation directory.
|
** referenced file in simulation directory.
|
||||||
.include models_tesla.txt
|
.include models_tesla.txt
|
||||||
.temp 30
|
.temp 30
|
||||||
.tran 1n 1m uic
|
.tran 1n 1m uic
|
||||||
.meas tran iavg AVG i(vc) from=950u to=990u
|
.meas tran iavg AVG i(vvcc) from=950u to=990u
|
||||||
.probe tran p(q1) i(d2) i(d1) i(d3) i(l1) i(l2) i(L3)
|
.probe tran p(q5) i(l1) i(l2)
|
||||||
.meas tran pavg AVG p(q1) from=950u to=990u
|
.meas tran pavg AVG @q5[p] from=950u to=990u
|
||||||
"}
|
"}
|
||||||
C {lab_pin.sym} 140 -640 0 0 {name=p1 lab=VCC}
|
C {lab_pin.sym} 140 -640 0 0 {name=p1 lab=VCC}
|
||||||
C {res.sym} 140 -580 0 1 {name=Rs m=1 value=1}
|
C {res.sym} 140 -580 0 1 {name=Rs m=1 value=1}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
v {xschem version=2.9.5 file_version=1.1}
|
v {xschem version=3.0.0 file_version=1.2 }
|
||||||
G {}
|
G {}
|
||||||
|
K {}
|
||||||
V {}
|
V {}
|
||||||
S {}
|
S {}
|
||||||
E {}
|
E {}
|
||||||
|
|
@ -70,4 +71,3 @@ C {launcher.sym} 90 -580 0 0 {name=h1
|
||||||
descr="Ctrl-click to go to Delorie's
|
descr="Ctrl-click to go to Delorie's
|
||||||
project page for info"
|
project page for info"
|
||||||
url="http://www.delorie.com/electronics/spice-stuff"}
|
url="http://www.delorie.com/electronics/spice-stuff"}
|
||||||
C {test5.sch} 1070 -290 0 0 {}
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue