DEFINITION MODULE MatEditor;
  (*******************************************************************
    Module  MatEditor     (Version 1.0)
      Copyright (c) 1990-2006 by Olivier Roth, Andreas Fischlin and
      ETH Zurich.
    Purpose   Simple, interactive editing of a matrix in a
              "Dialog Machine" window.
    Remarks   This module is part of the Mat-library, which forms
              part of the RAMSES package.
              Uses DMWindows, DMWindIO, DMEditFields.
    Programming
      o Design
        Olivier Roth              02/03/1990
        Andreas Fischlin          28/05/1993
      o Implementation
        Olivier Roth              02/03/1990
        Andreas Fischlin          28/05/1993
    ETH Zurich
    Systems Ecology
    CHN E 35.1
    Universitaetstrasse 16
    8092 Zurich
    SWITZERLAND
    URLs:
        <mailto:RAMSES@env.ethz.ch>
        <http://www.sysecol.ethz.ch>
        <http://www.sysecol.ethz.ch/SimSoftware/RAMSES>
    Last revision of definition:  28/05/1993  AF
  *******************************************************************)
  FROM DMWindows IMPORT WindowFrame;
  FROM Matrices IMPORT Matrix, Selection;
  PROCEDURE OpenMatrixEditor;
  (* Invokes the Matrix Editor in a separate window in which one
   * may chose interactivelly among the following commands:
   * New…, Open…, Save, Save As…, Close, Show, Hide, Duplicate, Rename.
   *)
  PROCEDURE CloseMatrixEditor;
  (* Closes the Matrix Editor's window. *)
  PROCEDURE ShowMatrixInWindow( VAR a: Matrix; wF: WindowFrame );
  (* Opens a window with matrix "a" at location "wF".  If "a" is not
   * an existent matrix (declared with MatBase.DeclMatrix) a new
   * matrix of dimension 2 x 2 and name 'Untitled' is declared implicitely.
   * If "wF.w" or "wF.h" are specified <= 0 then the matrix's window is
   * opened as big as necessary centered on the screen.
   * Closing the window interactivelly is equivalent to a call to
   * "HideMatrixInWindow" (see below). *)
  PROCEDURE HideMatrixInWindow( VAR a: Matrix );
  (* Closes the window in which matrix "a" is being edited. The matrix
   * "a" is not removed from the list of editable matrices and can be
   * reopened in a matrix edit window either interactivelly (Show) or
   * with the procedure "ShowMatrixInWindow". *)
  PROCEDURE AddMatrixToMatEdList( a: Matrix );
  (* This procedure adds the matrix "a" to the list of editable matrices
   * without showing it in a matrix edit window. *)
  PROCEDURE DelMatrixFromMatEdList( a: Matrix );
  (* This procedure deletes the matrix "a" from the list of editable
   * matrices and closes an eventual open matrix edit window. *)
  PROCEDURE SetSelection( a: Matrix;  sel: Selection );
  PROCEDURE GetSelection( a: Matrix;  VAR sel: Selection );
END MatEditor.