4.3     Image processing window
  Figure 4.5 shows nip2’s main image processing window.
The centre area is the workspace, the left-hand area is a
pane you can reveal to write custom definitions for this
workspace (see View / Workspace Definitions), and the
right-hand pane is the toolkit browser (see View / Toolkit
Browser).
  Drag with the middle mouse button to scroll the
workspace window. Drop a file on to the workspace
background (from your file manager) to load that file. If you
right-click on the workspace background, a useful menu
will appear.
  
    - 
Workspace 
- A workspace is split into a set of separate
    tabs.  Right-click  on  a  tab  to  get  a  useful  menu.
    Press the add icon at the right to make a new tab.
    You can drag tabs between workspaces, or drag a
    tab to the desktop to make a new workspace. Use
    the syntax tab1.A1 to make references between tabs.
    
- 
Tab 
- This area displays the current tab. Tabs are divided
    into columns of objects which each behave rather
    like windows: they can be moved around, folded
    away, loaded, saved and deleted.
    
- 
Current column 
- One  column  is  the  current  column.
    This  is  the  column  to  which  all  new  objects  are
    added.  Single-left-clicking  on  the  title  bar  of  a
    column makes that the current column. See §4.3.1.
    
- 
File, Edit, View 
- Use  the  File  menu  to  create  or  save
    workspaces,  to  open  workspaces  or  load  other
    objects into this workspace, to merge workspaces
    and to search for workspace backups. Use the Edit
    menu to select, group, delete and duplicate sets of
    objects. Use View to show and hide elements of the
    main window, and to set the object view mode.
    
- 
Toolkits 
- This         menu         contains         all         of
    the image processing functions which are currently
    loaded  into  nip2.  They  are  generally  grouped  by
    object type: all of the operations on matricies are
    under Toolkits / Matrix, for example.
    If   you   select   one   of   these   image   processing
    operations,  nip2  will  apply  that  operation  to  the
    bottom few items in the current column (however
    many   are   necessary   —   two   items   for   Math   /
    Arithmetic  /  Add,  for  example),  or  alternatively,  if
    you have selected some objects explicitly, it will try
    to apply the operation to the selected objects. See
    §4.3.3. As you move the mouse pointer over menu
    items nip2 tries to display some helpful information
    about the operation, including the number and type
    of arguments the operation expects.
     
- 
Toolkit Browser 
- This side panel shows all the image           processing operations again, but this time as a large
          flat list you can easily browse. Type into the search
          box  at  the  top  to  filter  operations  by  keyword.
          Doubleclick on an item to activate it.
          
- 
  Tab Definitions  
- 
          This  side  pane  shows  private  definitions  for  this
          tab. Programs you write here are loaded and saved
          with this workspace. See the Programming chapter
          for details on nip2’s programming language.
          
- 
  Free space  
- This displays the amount of disc space you
          have  left  in  your  temporary  file  area.  See  §A  if
          you want to change the directory nip2 uses to store
          temporary files.
          If you left-click on the label, it changes to display
          the  space  nip2  has  free  internally  for  performing
          calculations.  You  can  change  this  limit  in  the
          Preferences workspace. Click again to switch back
          to disc free.
           If you have objects selected, this area changes to
          show the names of the selected objects.
           
- 
  Status bar  
- As you move the mouse pointer about the
          window, this bar tries to display useful information
          about the thing you are pointing at.
          
4.3.1     Columns
  
  
    Columns are split into a number of areas:
          
- 
  Column name  
- Each column has a name. You can pick
          any name you like when you make a new column
          with File / New / Column. There’s no way to rename
          a column, unfortunately. Objects in the column are
          named using the column name, plus a number.
          
- 
  Column title bar  
- Drag with the left mouse button held
          down on the column title bar to move the column
          around  the  workspace.  Double-left-click  on  the
          title  bar  to  change  the  comment  attached  to  the
          column. Hold down the right mouse button on the
                                                                                       
                                                                                       
    column title bar to pop up a useful menu.
    The  items  in  the  menu  let  you  edit  the  caption,
    select  all  the  objects  in  the  column,  make  a  new
    column which is a copy of this column, save the
    column to a file, convert the column into a menu
    item (see §4.3.6) and remove the whole column.
     
- 
Column fold button 
- Left-clicking  on  the  fold  button
    folds the column away. Use this to hide columns
    which  you  still  need,  but  which  you  are  not
    interested in just now.
    
- 
Expression entry 
- You  can  perform  calculations  by
    typing   expressions   directly   into   this   box.   For
    example,  try  entering  the  following  expressions,
    and pressing Return:
                                                     
          2 + 2
     
 A1 + 120
 "My cat likes\nlasagne"
 fred = 12
 
    The last example shows custom button name creation.
        Normaly nip2 will pick a name for you, but you can
        chose your own.
         
    
4.3.2     Rows
    A column holds a number of rows. Each row comes
in four main parts, not all of which are visible for all
row values. Rows which represent classes have a pair
or up/down arrows to the left of the row name button
which you can use to control which parts of the row are
visible.
    
    - 
Row name button 
- Each  row  has  a  name.  The  name
    is normally formed from the name of the current
    column, plus a number.
    If  you  double-left-click  on  the  row  name  button,
    nip2  will  pop  up  a  viewer  or  dialog  box  for  the
    value of the row. If you left-click, nip2 will select
    that row and deselect all other rows. If you click on
    an empty space in the workspace, it will deselect
    all  rows.  If  you  Ctrl-left-click,  nip2  will  toggle
    selection of that row. If you select one row and then
    Shift-left-click on another row in the same column
    it  will  select  the  second  row  and  all  the  rows  in
    between. If you drag with the left button, you can
    change the order of rows in a column. Hold down
    the right mouse button for a useful menu. If you let
    the mouse linger over a button, a useful tooltip will
    appear.
     
- 
Graphic 
- If the row’s value is a class, and if the class
    is an instance of one of nip2’s graphic classes, then
    nip2 will draw a graphic representation of the row’s
    value. See §6.12.2 for a more detailed explanation.
    
- 
Members 
- If the row has a class for a value, then nip2
    will draw a sub-column listing the class members.
    Subcolumn members are in turn rows themselves.
    
- 
Text 
- Finally,   the   text   part   normally   shows   a   text
    representation of the row’s value. If you left-click
    on the value, it changes to show the formula which
    generated that value. You can edit the formula and
    press Return to change it.
    Alternatively,    selecting    View    /    Show    Formula
    toggles between displaying values for objects and
    displaying the formula.
     
Object name colours
nip2 changes the background colour of the row name button
to show the state of the row. If background colours
are not visible (perhaps your theme turns them off),
try turning on the Display LEDs in workspace option in
Preferences.                                     
    Green means the row is selected (click on the background
  to unselect), red indicates an error (right-click on the row
  button ans select Recalculate to see the full text of the error),
  brown indicates that the row value is out of date and needs
  recalculating and the various blues indicate parent and child
  relationships.
  
      
4.3.3     Applying operations to objects
  
  
    There are three ways you can apply image processing
  operations to objects in your workspace:
  
          
          - Select the object you want to apply the operation to
          by single-left-clicking on the object name. When
          you  single-click,  the  object  name  will  change
          colour  to  show  that  it  is  selected,  and  nip2  will
          display the name of the selected object at the left
          end of the status bar (this is useful if the selected
          object is scrolled off the edge of the window).
          You                                                                     can
          select  additional  objects  with  Ctrl-left-click  and
          Shift-left-click. This is necessary if you want to use
          an image processing operation that takes more than
          one argument.
           Once you have selected the rows (sometimes you
          need  to  select  them  in  a  certain  order),  click  on
          the processing operation you want from the Toolkits
           menu.
           
- If  there  are  no  objects  selected  when  you  click
          on  an  image  processing  operation,  nip2  uses  the
          bottom few items (as many as are needed by the
          operation) in the current column.
          
- You  can  also  type  your  formula  directly  into  the
          expresion entry line at the bottom of the selected
          column. Chapter 6 describes the syntax in detail,
          but it’s approximately C.
          
  
4.3.4     Batch processing
  If you select a number of rows and then click Edit / Group,
nip2 will group the rows together. Now if you select the
group and click on an item in the Toolkits menu, nip2 will
apply that operation to every item in the group. You can
group groups, and you can mix grouped and non-grouped
rows freely.
  If you save a group, nip2 will write each item in the
group to a separate file, incrementing the filename each
time.
  
4.3.5     Error handling
  If an object in your workspace has an error (for example,
if you are trying to join two images of different types), then
the object name button will turn red to show that this object
contains an error and the tooltip for the button will show the
error message.
  
4.3.6     Making menu items out of columns
  If you make a column that does something useful,
you can make it into a menu item by following these
steps:
    
    - Make   your   column   look   nice.   Drag   with   the
    left  mouse  button  on  the  object  name  buttons  to
    re-order items in the column, and add comments to
    explain what are the input fields and what are the
    output. Double-click on the column title bar to add
    a helpful title to the column.
    Add a comment by typing your text (enclosed in
    double  quotes)  into  the  line  at  the  bottom  of  the
    column. Left-drag the row to the right place.
     
- Select Make Column Into Menu Item from the column
    title-bar menu, see §4.3.1.
    This will open up a new dialog box which you can
    use  to  set  a  name  for  your  new  menu  item  and           the name of the top level menu the item should be
          added to.
           
- That’s  it.  You’ll  be  prompted  to  save  your  new
          toolkit when you try to quit nip2. We recommend
          you  just  say  OK   to  the  suggested  location  for
          the  file.  Edit  your  menus  with  the  programming
          window, see §4.4.