We are happy to announce the release of latest update of the MGL Tools (PMV, ADT and ViPEr) (December 2nd 2002)

This version does not allow binding of multiple commands to a picking event.

Undo:
Support for un-doing commands has been added to the Command base class and most of the basic commands have been made un-doable. PMV maintains a stack of undo commands. The undo command is bound to the CTRL-Z keyboard event. This will undo the last command on the stack.
The name of the next command that could be un-done appears under the File menu. "Undo xxxxx".
A user-preference called "Number Of Undo" enable to set the maximum depth of this stack.
A user preference let's you specify how many undo commands should be stored. Setting this value to -1 specifies unlimited undo, 0 let's you save the price of setting up the undo. The default value of this parameter is 100.
When a molecule is deleted, The delete commands warns you that ths action would reset the undo command stack. You can choose the continue, cancel ot simply keep the molecule in the viewer but hide it.

Customize:
It is now possible to customize the GUI of PMV:

onAddObjectCommands:
This commmand defines commands to be applied to molecule when loaded. Only the commands loaded so far in the application will be exposed.
WARNING : The order in which the commands are selected is the order in which the commands will be applied to the molecule.
adding these 2 lines to your .pmvrc will display any molecule you load as lines.It will restaure the behavior of the previous version of PMV.
self.setOnAddObjectCommands("buildBondsByDistance", 1, log = 0)
self.setOnAddObjectCommands("displayLines", 1, log = 0)

MolKit:
  • The __getattr__ method of the TreeNodeSet class has been modified to handle node attributes that are dictionaries.
  • The charge attribute of instances of Atom is now a dictionary

    DejaVu:
  • added support for orthographic projection
  • added support for overall geometry transparency. All blending function both for source and destination can be selected. Depthbuffer checking can be enabled and polygons can be z-sorted on a per-object basis
  • rewrote the DisplayFunction for Cylinder geometries
  • worked over the trackball object to make is possible to bind actions to different events
  • made redrawing the scene an asynchronous process
  • add support for GL_SCISSORS, enabling to clip any geometry using a user modifiable rectangular shape.
  • drag selection mechanism has been added. When the mouse is dragged during a picking operation, a box is drawn. After a user setable time without a motion the box turns solid. When the picking button is released, all vertices within the box are selected.
  • picking has been modified to use an differnet display list (based only on vertices by default). This renders the makeVerticesPickable option obsolete.
  • picking now returns a PickObject instance.


  • ViewerFramework:
  • Logging of command has been fully automated.
  • Support for un-doing commands.


  • Pmv:
  • .
  • II- What is new in PMV version 1.0 from a developer point of view:
    ______________________________________________________________
    New commands architecture:
    The __call__ and guiCallback methods call now a doitWrapper method.

    doitWrapper in turn:

    1. calls the beforeDoit method
    2. try to execute the doit method, if doit succeeds log the command automatically, add the undo commands to the undo stack.
    3. calls the afterDoit method.
    With this new architecture: Macros:
    Macro commands are now executed like commands using a doitWrapper mechanism. A macro is basically any Python function. The framework calls it as a real command who's doit method is the macro function. Therefore macros log themselves, they turn the busy led on and off, and they get executed within a try except statment.




    mgllab, February 2001, (mgltools@scripps.edu)