>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help User

# Controlling the Session Manager

A J program can use the Window Driver `wd` to access some aspects of the Session Manager, such as the Tools menu document windows. The names of Window Driver commands specific to the session manager start with the letters `sm`.

Tools Menu
You can add your own menu items to the Tools menu using `smsetcmd`. These also define the function keys. Your menu items can be accessed either by selecting the item directly from the Tools menu, or by pressing the corresponding function key. Function keys F2-F9 are available for this purpose.

The form is:

       wd 'smsetcmd num type name sentence;'

where:

- `num` corresponds to the function key being defined.

- `type` is one of :
  0 = remove definition
  1 = add definition, when invoked displays the sentence being run.
  2 = add definition, when invoked does not display the sentence being run.

- `name` is the text that appears on the Tools menu

- `sentence` is the sentence that will be run when the menu item is invoked.

  For example, the following will assign the sentence `load 'laserjet'` to the function key F2 and corresponding menu item LaserJet. The sentence will display when invoked:

         wd 'smsetcmd 2 1 "LaserJet" "load ''laserjet''";'

  When you next select the Tools menu, you will see the new menu item LaserJet. It is a good idea to define a "HotKey" letter and include the number of the corresponding function key in the menu item. If you do this, you can also right-justify the function key name by preceding it with a `TAB`. Thus, the above command could have been entered as:

         wd 'smsetcmd 2 1 "&LaserJet',TAB,'F2" "load ''laserjet''";'

  The menu item will now appear as:

         LaserJet F2

  To remove this definition, enter:

         wd 'smsetcmd 2 0;'

  Document Windows
  There are several Window Driver commands to access the document windows. In most cases, you must first select the window that is to be the target of subsequent commands (this need not be the active window). To select a window, you actually select its filename:

      qsmact

  file name of selected window

      qsmall

  file names of all windows

      qsmcsize

  size of current execution window

      qsmout

  file name of current execution window

      qsmsize

  size of selected window (pixels)

      qsmwh

  size of MDI client area (pixels)

      smappend

  appends text to selected window

      smcascade

  cascade windows

      smclose

  close selected window

      smfocus

  activates selected window

      smmove xywh

  move and size selected window (pixels)

      smopen

  opens selected filename, if not already open

      smread

  reads data from selected window

      smsave

  saves selected window (if modified)

      smscroll n

  scrolls selected window

      smsetselect

  set selected text

      smsel

  selects window, by its filename

      smshow param

  shows selected window, with parameters from the set:

      sw_hide              sw_maximize
      sw_minimize          sw_restore
      sw_show              sw_showmaximized
      sw_showminimized     sw_showminnoactive
      sw_showna            sw_shownoactivate
      sw_shownormal

      smssetcmd n t name sentence

  modifies Tools menu

      smtile

  tile windows down

      smtilea

  tile windows across

      smwrite

  writes text to selected window

  For example, the following will open file user\mywork.ijs for editing and make it the active window:

         wd 'smsel "user\mywork.ijs";smopen;smfocus'

  Having opened the window, you could write some text (e.g. in the noun `TXT`) to it as follows:

         wd 'smwrite *',TXT

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help User