diff --git a/doc/xschem_man/commands.html b/doc/xschem_man/commands.html index c3d10696..6df1e7aa 100644 --- a/doc/xschem_man/commands.html +++ b/doc/xschem_man/commands.html @@ -169,10 +169,8 @@ ctrl 'o' Load schematic - 'm' Move selected obj. shift 'N' Top level only netlist - 'n' Hierarchical Netlist -ctrl 'n' New schematic -ctrl+shift 'N' New symbol -alt 'n' Empty schematic in new window -alt+shift 'N' Empty symbol in new window +ctrl 'n' Clear schematic +ctrl+shift 'N' Clear symbol shift 'O' Toggle Light / Dark colorscheme ctrl 'o' Load schematic - 'p' Place polygon. Operation ends by placing last point over first. diff --git a/doc/xschem_man/developer_info.html b/doc/xschem_man/developer_info.html index c96416fc..69bcb4ee 100644 --- a/doc/xschem_man/developer_info.html +++ b/doc/xschem_man/developer_info.html @@ -487,6 +487,7 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns" +
  • abort_operation
  •     Resets UI state, unselect all and abort any pending operation 
  • add_symbol_pin
  • @@ -846,6 +847,9 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
        a different name than symbol pin 
  • netlist
  •     do a netlist of current schematic in currently defined netlist format 
    +
  • new_process [f]
  • +   Start a new xschem process for a schematic.
    +   If 'f' is given load specified schematic. 
  • new_schematic create|destroy|destroy_all|switch_win winpath file
  •     Open/destroy a new tab or window 
          create: create new empty window or with 'file' loaded if 'file' given.
    @@ -857,12 +861,6 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
          switch_tab: switch context to specified 'winpath' tab
        Main window/tab has winpath set to .drw,
        Additional windows/tabs have winpath set to .x1.drw, .x2.drw and so on...
    -
  • new_symbol_window [f]
  • -   Start a new xschem process for a symbol.
    -   If 'f' is given load specified symbol. 
    -
  • new_window [f]
  • -   Start a new xschem process for a schematic.
    -   If 'f' is given load specified schematic. 
  • only_probes
  •         dim schematic to better show highlights 
  • origin x y [zoom]
  • @@ -1197,6 +1195,7 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
     
     
     
    +
      
     
       
    diff --git a/src/callback.c b/src/callback.c
    index 6b19155a..7e5edd8e 100644
    --- a/src/callback.c
    +++ b/src/callback.c
    @@ -2186,25 +2186,13 @@ int callback(const char *winpath, int event, int mx, int my, KeySym key,
         copy_objects(START);
         break;
        }
    -   if(key=='n' && state==Mod1Mask)              /* empty schematic in new window */
    -   {
    -     if(xctx->semaphore >= 2) break;
    -     tcleval("xschem new_window");
    -     break;
    -   }
    -   if(key=='N' && state==(ShiftMask|Mod1Mask) )    /* empty symbol in new window */
    -   {
    -     if(xctx->semaphore >= 2) break;
    -     tcleval("xschem new_symbol_window");
    -     break;
    -   }
    -   if(key=='n' && state==ControlMask)              /* new schematic */
    +   if(key=='n' && state==ControlMask)              /* clear schematic */
        {
          if(xctx->semaphore >= 2) break;
          tcleval("xschem clear SCHEMATIC");
          break;
        }
    -   if(key=='N' && state==(ShiftMask|ControlMask) )    /* new symbol */
    +   if(key=='N' && state==(ShiftMask|ControlMask) )    /* clear symbol */
        {
          if(xctx->semaphore >= 2) break;
          tcleval("xschem clear SYMBOL");
    diff --git a/src/keys.help b/src/keys.help
    index 6c331a2e..d66afa57 100644
    --- a/src/keys.help
    +++ b/src/keys.help
    @@ -129,10 +129,8 @@ ctrl        'o'         Load schematic
     -           'm'         Move selected obj.
     shift       'N'         Top level only netlist
     -           'n'         Hierarchical Netlist
    -ctrl        'n'         New schematic
    -ctrl+shift  'N'         New symbol
    -alt         'n'         Empty schematic in new window
    -alt+shift   'N'         Empty symbol in new window
    +ctrl        'n'         Clear schematic
    +ctrl+shift  'N'         Clear symbol
     shift       'O'         Toggle Light / Dark colorscheme
     ctrl        'o'         Load schematic
     -           'p'         Place polygon. Operation ends by placing last point over first.
    diff --git a/src/scheduler.c b/src/scheduler.c
    index 57cec09a..188f8748 100644
    --- a/src/scheduler.c
    +++ b/src/scheduler.c
    @@ -2202,6 +2202,21 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
           }
         }
     
    +    /* new_process [f]
    +     *   Start a new xschem process for a schematic.
    +     *   If 'f' is given load specified schematic. */
    +    else if(!strcmp(argv[1], "new_process"))
    +    {
    +      if(argc > 2) {
    +        char f[PATH_MAX + 100];
    +        my_snprintf(f, S(f),"regsub {^~/} {%s} {%s/}", argv[2], home_dir);
    +        tcleval(f);
    +        my_strncpy(f, tclresult(), S(f));  
    +        new_xschem_process(f, 0);
    +      } else new_xschem_process("", 0);
    +      Tcl_ResetResult(interp);
    +    }
    +
         /* new_schematic create|destroy|destroy_all|switch_win winpath file
          *   Open/destroy a new tab or window 
          *     create: create new empty window or with 'file' loaded if 'file' given.
    @@ -2233,36 +2248,6 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
             Tcl_SetResult(interp, s, TCL_VOLATILE);
           }
         }
    -
    -    /* new_symbol_window [f]
    -     *   Start a new xschem process for a symbol.
    -     *   If 'f' is given load specified symbol. */
    -    else if(!strcmp(argv[1], "new_symbol_window"))
    -    {
    -      if(argc > 2)  {
    -        char f[PATH_MAX + 100];
    -        my_snprintf(f, S(f),"regsub {^~/} {%s} {%s/}", argv[2], home_dir);
    -        tcleval(f);
    -        my_strncpy(f, tclresult(), S(f));  
    -        new_xschem_process(f, 1);
    -      } else new_xschem_process("", 1);
    -      Tcl_ResetResult(interp);
    -    }
    -
    -    /* new_window [f]
    -     *   Start a new xschem process for a schematic.
    -     *   If 'f' is given load specified schematic. */
    -    else if(!strcmp(argv[1], "new_window"))
    -    {
    -      if(argc > 2) {
    -        char f[PATH_MAX + 100];
    -        my_snprintf(f, S(f),"regsub {^~/} {%s} {%s/}", argv[2], home_dir);
    -        tcleval(f);
    -        my_strncpy(f, tclresult(), S(f));  
    -        new_xschem_process(f, 0);
    -      } else new_xschem_process("", 0);
    -      Tcl_ResetResult(interp);
    -    }
         else { cmd_found = 0;}
         break;
         case 'o': /*----------------------------------------------*/
    diff --git a/src/xschem.tcl b/src/xschem.tcl
    index 33d726d4..31ed18ff 100644
    --- a/src/xschem.tcl
    +++ b/src/xschem.tcl
    @@ -5800,6 +5800,9 @@ proc build_widgets { {topwin {} } } {
       $topwin.menubar.file.menu add command -label "PNG Export" -command "xschem print png" -accelerator {Ctrl+*}
       $topwin.menubar.file.menu add command -label "SVG Export" -command "xschem print svg" -accelerator {Alt+*}
       $topwin.menubar.file.menu add separator
    +  $topwin.menubar.file.menu add command -label "Start new Xschem process" -accelerator {X} -command {
    +    xschem new_process
    +  }
       $topwin.menubar.file.menu add command -label "Close schematic" -accelerator {Ctrl+W} -command {
         xschem exit
       }