- XSCHEM embeds a tcl shell, when running xschem the terminal will present a tcl prompt allowing to send / get commands through it.
+ XSCHEM embeds a tcl shell, when running xschem the terminal will present a tcl prompt allowing to
+ send / get commands through it.
Most user actions done in the drawing window can be done by sending tcl commands through the tcl shell.
- Since I/O is simply done through stdin/stdout this allows XSCHEM to be controlled by another application, by piping XSCHEM
- commands to XSCHEM stdin and getting XSCHEM answers piped from XSCHEM stdout.
+ A tcp socket can be activated to allow sending remote commands to xschem, for this to work you
+ must the xschem_listen_port tcl variable in xschemrc, specifying an unused port number.
+ Xschem will listen to this port number for commands and send back results, as if commands were given
+ directly from the tcl console.
- XSCHEM implements a TCL xschem command that accepts additional arguments. This command implements all the XSCHEM remote interface.
- Of course all Tck-Tk commands are available, for example, if this command is sent to XSCHEM: 'wm withdraw .' the xschem main window
+ XSCHEM implements a TCL xschem command that accepts additional arguments.
+ This command implements all the XSCHEM remote interface.
+ Of course all Tck-Tk commands are available, for example, if this command is sent to XSCHEM: 'wm withdraw .'
+ the xschem main window
will be withdrawn by the window manager, while 'wm state . normal' will show again the window.
This command: 'puts $XSCHEM_LIBRARY_PATH' will print the content of the XSCHEM_LIBRARY_PATH tcl variable
containing the search path.
diff --git a/src/actions.c b/src/actions.c
index 654cb4fd..df1fbfd8 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -552,7 +552,7 @@ void enable_layers(void)
}
}
-void attach_labels_to_inst() /* offloaded from callback.c 20171005 */
+void attach_labels_to_inst(int interactive) /* offloaded from callback.c 20171005 */
{
xSymbol *symbol;
int npin, i, j;
@@ -593,13 +593,12 @@ void attach_labels_to_inst() /* offloaded from callback.c 20171005 */
first_call=1; /* 20171214 for place_symbol--> new_prop_string */
prepare_netlist_structs(0);
for(j=0;jsel_array[j].type==ELEMENT) {
-
found=1;
my_strdup(5, &prop, xctx->inst[xctx->sel_array[j].n].instname);
my_strcat(6, &prop, "_");
tclsetvar("custom_label_prefix",prop);
- if(!do_all_inst) {
+ if(interactive && !do_all_inst) {
dbg(1,"attach_labels_to_inst(): invoking tcl attach_labels_to_inst\n");
tcleval("attach_labels_to_inst");
if(!strcmp(tclgetvar("rcode"),"") ) {
@@ -608,18 +607,21 @@ void attach_labels_to_inst() /* offloaded from callback.c 20171005 */
return;
}
}
+ if(interactive == 0 ) {
+ tclsetvar("rcode", "yes");
+ tclsetvar("use_lab_wire", "0");
+ tclsetvar("use_label_prefix", "0");
+ tclsetvar("do_all_inst", "1");
+ tclsetvar("rotated_text", "0");
+ }
use_label_prefix = atoi(tclgetvar("use_label_prefix"));
-
rot_txt = tclgetvar("rotated_text");
if(strcmp(rot_txt,"")) rotated_text=atoi(rot_txt);
-
my_strdup(7, &type,(xctx->inst[xctx->sel_array[j].n].ptr+ xctx->sym)->type);
if( type && IS_LABEL_OR_PIN(type) ) {
continue;
}
-
if(!do_all_inst && !strcmp(tclgetvar("do_all_inst"),"1")) do_all_inst=1;
-
dbg(1, "attach_labels_to_inst(): 1--> %s %.16g %.16g %s\n",
xctx->inst[xctx->sel_array[j].n].name,
xctx->inst[xctx->sel_array[j].n].x0,
diff --git a/src/callback.c b/src/callback.c
index 5a247ec9..cd74bca4 100644
--- a/src/callback.c
+++ b/src/callback.c
@@ -489,7 +489,7 @@ int callback(const char *winpath, int event, int mx, int my, KeySym key,
break;
}
if(key=='H' && state==ShiftMask) { /* attach labels to selected instances */
- attach_labels_to_inst();
+ attach_labels_to_inst(1);
break;
}
if (key == 'H' && state == (ControlMask | ShiftMask)) { /* create schematic and symbol from selected components */
diff --git a/src/hilight.c b/src/hilight.c
index cb93887c..ff21fb25 100644
--- a/src/hilight.c
+++ b/src/hilight.c
@@ -271,7 +271,7 @@ void create_plot_cmd(void)
}
fprintf(fd, "*ngspice plot file\n.control\n");
}
- if(viewer == GAW) tcleval("if { ![info exists gaw_fd] } { gaw_setup_tcp }\n");
+ if(viewer == GAW) tcleval("if { ![info exists gaw_fd] } { setup_tcp_gaw }\n");
idx = 1;
first = 1;
for(i=0;ixcolor_array[c].red>>8, xctx->xcolor_array[c].green>>8,
xctx->xcolor_array[c].blue>>8);
expanded_tok = expandlabel(tok, &tok_mult);
- tcleval("if { ![info exists gaw_fd] } { gaw_setup_tcp }\n");
+ tcleval("if { ![info exists gaw_fd] } { setup_tcp_gaw }\n");
for(k=1; k<=tok_mult; k++) {
my_strdup(246, &t, find_nth(expanded_tok, ',', k));
my_strdup2(254, &p, xctx->sch_path[xctx->currsch]+1);
@@ -1018,7 +1018,7 @@ static void send_current_to_gaw(int simtype, const char *node)
sprintf(color_str, "%02x%02x%02x", xctx->xcolor_array[c].red>>8, xctx->xcolor_array[c].green>>8,
xctx->xcolor_array[c].blue>>8);
expanded_tok = expandlabel(tok, &tok_mult);
- tcleval("if { ![info exists gaw_fd] } { gaw_setup_tcp }\n");
+ tcleval("if { ![info exists gaw_fd] } { setup_tcp_gaw }\n");
for(k=1; k<=tok_mult; k++) {
my_strdup(1179, &t, find_nth(expanded_tok, ',', k));
my_strdup2(1180, &p, xctx->sch_path[xctx->currsch]+1);
diff --git a/src/scheduler.c b/src/scheduler.c
index 9c6568f1..d6dbbae0 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -61,6 +61,202 @@ int get_instance(const char *s)
return i;
}
+void xschem_cmd_help(int argc, const char **argv)
+{
+ Tcl_ResetResult(interp);
+ Tcl_AppendResult(interp,
+ "Xschem command language:\n",
+ " xschem subcommand [args]\n",
+ "\"xschem\" subcommands available:\n",
+ /* "add_symbol_pin\n", */
+ "align\n",
+ " Align selected part of schematic to current gid snap setting\n",
+ /* "arc\n", */
+ "attach_pins\n",
+ " Attach labels to selected instance pins\n",
+ "bbox [begin | end]\n",
+ " bbox begin: start a bounding box drawing area setting\n",
+ " bbox end: end a bounding box drawing area setting, draw stuff and reset bbox\n",
+ "break_wires\n",
+ "build_colors\n",
+ "callback\n",
+ "check_symbols\n",
+ "check_unique_names\n",
+ "circle\n",
+ "clear\n",
+ "clear_drawing\n",
+ "color_dim\n",
+ "connected_nets\n",
+ "copy\n",
+ "copy_objects\n",
+ "create_plot_cmd\n",
+ "cut\n",
+ "debug\n",
+ "delete\n",
+ "delete_files\n",
+ "descend\n",
+ "descend_symbol\n",
+ "display_hilights\n",
+ "edit_file\n",
+ "edit_prop\n",
+ "edit_vi_prop\n",
+ "enable_layers\n",
+ "exit\n",
+ "expandlabel\n",
+ "find_nth\n",
+ "flip\n",
+ "fullscreen\n",
+ "get var\n",
+ " where \"var\" is one of:\n",
+ " schname [n]\n",
+ " get name of schematic, optionally of upper levels if (negative) n is provided\n",
+ " sch_path [n]\n",
+ " get pathname of schematic, optionally of upper levels if (negative) n is provided\n",
+ " backlayer\n",
+ " bbox_hilighted\n",
+ " bbox_selected\n",
+ " cadlayers\n",
+ " color_ps\n",
+ " current_dirname\n",
+ " currsch\n",
+ " debug_var\n",
+ " draw_window\n",
+ " flat_netlist\n",
+ " gridlayer\n",
+ " help\n",
+ " instances\n",
+ " lastsel\n",
+ " line_width\n",
+ " netlist_name\n",
+ " netlist_type\n",
+ " no_draw\n",
+ " pinlayer\n",
+ " rectcolor\n",
+ " sellayer\n",
+ " semaphore\n",
+ " temp_dir\n",
+ " text_svg\n",
+ " textlayer\n",
+ " topwindow\n",
+ " version\n",
+ " wirelayer\n",
+ "get_tok\n",
+ "get_tok_size\n",
+ "getprop\n",
+ "globals\n",
+ "go_back\n",
+ "help\n",
+ "hier_psprint\n",
+ "hilight\n",
+ "hilight_netname\n",
+ "instance\n",
+ "instance_bbox\n",
+ "instance_net\n",
+ "instance_nodemap\n",
+ "instance_pin_coord\n",
+ "instance_pins\n",
+ "instance_pos\n",
+ "instances_to_net\n",
+ "line\n",
+ "line_width\n",
+ "list_tokens\n",
+ "load\n",
+ "load_new_window\n",
+ "load_symbol\n",
+ "load_symbol\n",
+ "log\n",
+ "logic_set\n",
+ "make_sch\n",
+ "make_symbol\n",
+ "merge\n",
+ "move_objects\n",
+ "net_label\n",
+ "net_pin_mismatch\n",
+ "netlist\n",
+ "new_schematic\n",
+ "new_symbol_window\n",
+ "new_window\n",
+ "only_probes\n",
+ "origin\n",
+ "parselabel\n",
+ "paste\n",
+ "pinlist\n",
+ "place_symbol\n",
+ "place_text\n",
+ "polygon\n",
+ "preview_window\n",
+ "print\n",
+ "print_hilight_net\n",
+ "print_spice_element\n",
+ "propagate_hilights\n",
+ "push_undo\n",
+ "rebuild_connectivity\n",
+ "rect\n",
+ "redo\n",
+ "redraw\n",
+ "reload\n",
+ "reload_symbols\n",
+ "remove_symbols\n",
+ "replace_symbol\n",
+ "rotate\n",
+ "save\n",
+ "saveas\n",
+ "schematic_in_new_window\n",
+ "search\n",
+ "searchmenu\n",
+ "select\n",
+ "select_all\n",
+ "select_hilight_net\n",
+ "selected_set\n",
+ "selected_wire\n",
+ "send_to_viewer\n",
+ "set var value\n",
+ " where \"var\" is one of:\n",
+ " cadgrid\n",
+ " cadsnap\n",
+ " color_ps\n",
+ " constrained_move\n",
+ " draw_window\n",
+ " flat_netlist\n",
+ " hide_symbols\n",
+ " netlist_name\n",
+ " netlist_type\n",
+ " no_draw\n",
+ " no_undo\n",
+ " rectcolor\n",
+ " text_svg\n",
+ " semaphore\n",
+ " sym_txt\n",
+ "set_different_tok\n",
+ "set_modify\n",
+ "setprop\n",
+ "show_pin_net_names\n",
+ "simulate\n",
+ "snap_wire\n",
+ "subst_tok\n",
+ "symbol_in_new_window\n",
+ "symbols\n",
+ "test\n",
+ "toggle_colorscheme\n",
+ "translate\n",
+ "trim_wires\n",
+ "undo\n",
+ "undo_type\n",
+ "unhilight_all\n",
+ "unhilight\n",
+ "unselect_all\n",
+ "view_prop\n",
+ /* "windowid\n", */
+ "windows\n",
+ "wire\n",
+ "zoom_box\n",
+ "zoom_full\n",
+ "zoom_hilighted\n",
+ "zoom_in\n",
+ "zoom_out\n",
+ "zoom_selected\n",
+ NULL);
+}
/* can be used to reach C functions from the Tk shell. */
int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * argv[])
@@ -124,7 +320,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
else if(!strcmp(argv[1],"attach_pins")) /* attach pins to selected component 20171005 */
{
cmd_found = 1;
- attach_labels_to_inst();
+ attach_labels_to_inst(0);
Tcl_ResetResult(interp);
}
}
@@ -151,6 +347,13 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
break_wires_at_pins();
Tcl_ResetResult(interp);
}
+
+ else if(!strcmp(argv[1],"build_colors"))
+ {
+ cmd_found = 1;
+ build_colors(tclgetdoublevar("dim_value"), tclgetdoublevar("dim_bg"));
+ Tcl_ResetResult(interp);
+ }
}
else if(argv[1][0] == 'c') {
@@ -163,13 +366,6 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
Tcl_ResetResult(interp);
}
- else if(!strcmp(argv[1],"build_colors"))
- {
- cmd_found = 1;
- build_colors(tclgetdoublevar("dim_value"), tclgetdoublevar("dim_bg"));
- Tcl_ResetResult(interp);
- }
-
else if(!strcmp(argv[1],"check_symbols"))
{
char sympath[PATH_MAX];
@@ -460,18 +656,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
}
else if(argv[1][0] == 'f') {
- if(!strcmp(argv[1],"find_nth") )
- {
- cmd_found = 1;
- if(argc>4) {
- char *r = NULL;
- my_strdup(1202, &r, find_nth(argv[2], argv[3][0], atoi(argv[4])));
- Tcl_SetResult(interp, r ? r : "", TCL_VOLATILE);
- my_free(1203, &r);
- }
- }
-
- else if(!strcmp(argv[1],"flip"))
+ if(!strcmp(argv[1],"flip"))
{
cmd_found = 1;
if(! (xctx->ui_state & (STARTMOVE | STARTCOPY) ) ) {
@@ -509,6 +694,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
Tcl_SetResult(interp, xctx->sch[x], TCL_VOLATILE);
}
}
+
else if( argc >= 3 && !strcmp(argv[1],"get") && !strcmp(argv[2],"sch_path"))
{
int x;
@@ -521,6 +707,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
Tcl_SetResult(interp, xctx->sch_path[x], TCL_VOLATILE);
}
}
+
else if(!strcmp(argv[1],"get") && argc==3)
{
cmd_found = 1;
@@ -717,29 +904,8 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
else {
fprintf(errfp, "xschem get %s: invalid command.\n", argv[2]);
}
- }
+ } /* else if(!strcmp(argv[1],"get") && argc==3) */
- else if(!strcmp(argv[1],"get_tok") )
- {
- char *s=NULL;
- int t;
- cmd_found = 1;
- if(argc < 4) {Tcl_SetResult(interp, "Missing arguments", TCL_STATIC);return TCL_ERROR;}
- if(argc == 5) t = atoi(argv[4]);
- else t = 0;
- my_strdup(648, &s, get_tok_value(argv[2], argv[3], t));
- Tcl_SetResult(interp, s, TCL_VOLATILE);
- my_free(649, &s);
- }
-
- else if(!strcmp(argv[1],"get_tok_size") )
- {
- char s[30];
- cmd_found = 1;
- my_snprintf(s, S(s), "%d", (int)xctx->get_tok_size);
- Tcl_SetResult(interp, s, TCL_VOLATILE);
- }
-
else if(!strcmp(argv[1],"getprop"))
{
cmd_found = 1;
@@ -842,51 +1008,75 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
}
}
+ else if(!strcmp(argv[1],"get_tok") )
+ {
+ char *s=NULL;
+ int t;
+ cmd_found = 1;
+ if(argc < 4) {Tcl_SetResult(interp, "Missing arguments", TCL_STATIC);return TCL_ERROR;}
+ if(argc == 5) t = atoi(argv[4]);
+ else t = 0;
+ my_strdup(648, &s, get_tok_value(argv[2], argv[3], t));
+ Tcl_SetResult(interp, s, TCL_VOLATILE);
+ my_free(649, &s);
+ }
+
+ else if(!strcmp(argv[1],"get_tok_size") )
+ {
+ char s[30];
+ cmd_found = 1;
+ my_snprintf(s, S(s), "%d", (int)xctx->get_tok_size);
+ Tcl_SetResult(interp, s, TCL_VOLATILE);
+ }
+
else if(!strcmp(argv[1],"globals"))
{
+ static char res[8192];
cmd_found = 1;
- printf("*******global variables:*******\n");
- printf("INT_WIDTH(lw)=%d\n", INT_WIDTH(xctx->lw));
- printf("wires=%d\n", xctx->wires);
- printf("instances=%d\n", xctx->instances);
- printf("symbols=%d\n", xctx->symbols);
- printf("lastsel=%d\n", xctx->lastsel);
- printf("texts=%d\n", xctx->texts);
- printf("maxt=%d\n", xctx->maxt);
- printf("maxw=%d\n", xctx->maxw);
- printf("maxi=%d\n", xctx->maxi);
- printf("maxsel=%d\n", xctx->maxsel);
- printf("zoom=%.16g\n", xctx->zoom);
- printf("xorigin=%.16g\n", xctx->xorigin);
- printf("yorigin=%.16g\n", xctx->yorigin);
+
+ Tcl_ResetResult(interp);
+ my_snprintf(res, S(res), "*******global variables:*******\n"); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "INT_WIDTH(lw)=%d\n", INT_WIDTH(xctx->lw)); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "wires=%d\n", xctx->wires); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "instances=%d\n", xctx->instances); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "symbols=%d\n", xctx->symbols); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "lastsel=%d\n", xctx->lastsel); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "texts=%d\n", xctx->texts); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "maxt=%d\n", xctx->maxt); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "maxw=%d\n", xctx->maxw); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "maxi=%d\n", xctx->maxi); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "maxsel=%d\n", xctx->maxsel); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "zoom=%.16g\n", xctx->zoom); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "xorigin=%.16g\n", xctx->xorigin); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "yorigin=%.16g\n", xctx->yorigin); Tcl_AppendResult(interp, res, NULL);
for(i=0;i<8;i++)
{
- printf("rects[%d]=%d\n", i, xctx->rects[i]);
- printf("lines[%d]=%d\n", i, xctx->lines[i]);
- printf("maxr[%d]=%d\n", i, xctx->maxr[i]);
- printf("maxl[%d]=%d\n", i, xctx->maxl[i]);
+ my_snprintf(res, S(res), "rects[%d]=%d\n", i, xctx->rects[i]); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "lines[%d]=%d\n", i, xctx->lines[i]); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "maxr[%d]=%d\n", i, xctx->maxr[i]); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "maxl[%d]=%d\n", i, xctx->maxl[i]); Tcl_AppendResult(interp, res, NULL);
}
- printf("current_name=%s\n", xctx->current_name);
- printf("currsch=%d\n", xctx->currsch);
+ my_snprintf(res, S(res), "current_name=%s\n", xctx->current_name); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "currsch=%d\n", xctx->currsch); Tcl_AppendResult(interp, res, NULL);
for(i=0;i<=xctx->currsch;i++)
{
- printf("previous_instance[%d]=%d\n",i,xctx->previous_instance[i]);
- printf("sch_path[%d]=%s\n",i,xctx->sch_path[i]? xctx->sch_path[i]:"");
- printf("sch[%d]=%s\n",i,xctx->sch[i]);
+ my_snprintf(res, S(res), "previous_instance[%d]=%d\n",i,xctx->previous_instance[i]); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "sch_path[%d]=%s\n",i,xctx->sch_path[i]? xctx->sch_path[i]:""); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "sch[%d]=%s\n",i,xctx->sch[i]); Tcl_AppendResult(interp, res, NULL);
}
- printf("modified=%d\n", xctx->modified);
- printf("areaw=%d\n", xctx->areaw);
- printf("areah=%d\n", xctx->areah);
- printf("color_ps=%d\n", color_ps);
- printf("hilight_nets=%d\n", xctx->hilight_nets);
- printf("semaphore=%d\n", xctx->semaphore);
- printf("prep_net_structs=%d\n", xctx->prep_net_structs);
- printf("prep_hi_structs=%d\n", xctx->prep_hi_structs);
- printf("prep_hash_inst=%d\n", xctx->prep_hash_inst);
- printf("prep_hash_wires=%d\n", xctx->prep_hash_wires);
- printf("need_reb_sel_arr=%d\n", xctx->need_reb_sel_arr);
- printf("undo_type=%d\n", xctx->undo_type);
- printf("******* end global variables:*******\n");
+ my_snprintf(res, S(res), "modified=%d\n", xctx->modified); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "areaw=%d\n", xctx->areaw); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "areah=%d\n", xctx->areah); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "color_ps=%d\n", color_ps); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "hilight_nets=%d\n", xctx->hilight_nets); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "semaphore=%d\n", xctx->semaphore); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "prep_net_structs=%d\n", xctx->prep_net_structs); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "prep_hi_structs=%d\n", xctx->prep_hi_structs); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "prep_hash_inst=%d\n", xctx->prep_hash_inst); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "prep_hash_wires=%d\n", xctx->prep_hash_wires); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "need_reb_sel_arr=%d\n", xctx->need_reb_sel_arr); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "undo_type=%d\n", xctx->undo_type); Tcl_AppendResult(interp, res, NULL);
+ my_snprintf(res, S(res), "******* end global variables:*******\n"); Tcl_AppendResult(interp, res, NULL);
}
else if(!strcmp(argv[1],"go_back"))
@@ -901,128 +1091,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
if(!strcmp(argv[1],"help"))
{
cmd_found = 1;
- printf("xschem : function used to communicate with the C program\n");
- printf("Usage:\n");
- printf(" xschem callback X-event_type mousex mousey Xkeysym mouse_button Xstate\n");
- printf(" can be used to send any event to the application\n");
- printf(" xschem netlist\n");
- printf(" generates a netlist in the selected format for the current schematic\n");
- printf(" xschem simulate\n");
- printf(" launches the currently set simulator on the generated netlist\n");
- printf(" xschem redraw\n");
- printf(" Redraw the window\n");
- printf(" xschem new_window library/cell\n");
- printf(" start a new window optionally with specified cell\n");
- printf(" xschem schematic_in_new_window \n");
- printf(" start a new window with selected element schematic\n");
- printf(" xschem symbol_in_new_window \n");
- printf(" start a new window with selected element schematic\n");
- printf(" xschem globals\n");
- printf(" print information about global variables\n");
- printf(" xschem inst_ptr n\n");
- printf(" return inst_ptr of inst[n]\n");
- printf(" xschem netlist\n");
- printf(" perform a global netlist on current schematic\n");
- printf(" xschem netlist_type type\n");
- printf(" set netlist type to , currently spice, vhdl, verilog or tedax\n");
- printf(" xschem save [library/name]\n");
- printf(" save current schematic, optionally a lib/name can be given\n");
- printf(" xschem saveas\n");
- printf(" save current schematic, asking for a filename\n");
- printf(" xschem load library/cell\n");
- printf(" load specified cell from library\n");
- printf(" xschem load_symbol library/cell\n");
- printf(" load specified cell symbol view from library\n");
- printf(" xschem reload\n");
- printf(" reload current cell from library\n");
- printf(" xschem instance library/cell x y rot flip [property string]\n");
- printf(" place instance cell of the given library at x,y, rot, flip\n");
- printf(" can also be given a property string\n");
- printf(" xschem rect x1 y1 x2 y2 [pos]\n");
- printf(" place rectangle, optionally at pos (position in database)\n");
- printf(" xschem line x1 y1 x2 y2 [pos]\n");
- printf(" place line, optionally at pos (position in database)\n");
- printf(" xschem wire x1 y1 x2 y2 [pos]\n");
- printf(" place wire, optionally at pos (position in database)\n");
- printf(" xschem select instance|wire|text n\n");
- printf(" select instance or text or wire number n\n");
- printf(" xschem select_all\n");
- printf(" select all objects\n");
- printf(" xschem descend\n");
- printf(" descend into schematic of selected element\n");
- printf(" xschem descend_symbol\n");
- printf(" descend into symbol of selected element\n");
- printf(" xschem go_back\n");
- printf(" back from selected element\n");
- printf(" xschem unselect\n");
- printf(" unselect selected objects\n");
- printf(" xschem zoom_out\n");
- printf(" zoom out\n");
- printf(" xschem zoom_in\n");
- printf(" zoom in\n");
- printf(" xschem zoom_full\n");
- printf(" zoom full\n");
- printf(" xschem zoom_box\n");
- printf(" zoom box\n");
- printf(" xschem paste\n");
- printf(" paste selection from clipboard\n");
- printf(" xschem merge\n");
- printf(" merge external file into current schematic\n");
- printf(" xschem cut\n");
- printf(" cut selection to clipboard\n");
- printf(" xschem copy\n");
- printf(" copy selection to clipboard\n");
- printf(" xschem copy_objects\n");
- printf(" duplicate selected objects\n");
- printf(" xschem move_objects [deltax deltay]\n");
- printf(" move selected objects\n");
- printf(" xschem line_width n\n");
- printf(" set line width to (float) n\n");
- printf(" xschem delete\n");
- printf(" delete selected objects\n");
- printf(" xschem unhilight\n");
- printf(" unlight selected nets/pins\n");
- printf(" xschem hilight\n");
- printf(" hilight selected nets/pins\n");
- printf(" xschem clear_hilights\n");
- printf(" unhilight all nets/pins\n");
- printf(" xschem print [color]\n");
- printf(" print schematic (optionally in color)\n");
- printf(" xschem search regex|exact