Thanks, Miguel. This is a good starting point, I think.
Miguel wrote:
My rule-of-thumb criteria (or wishes) are:
* Bug fixes should be isolated to 1 or 2 source files.
One would hope.
* Features should be isolated to something like 4 source files ... major
changes in 1 source file + minor edits in 3 source files.
This latter won't always be possible. In general, a new script command requires
changes to Token, Eval, Viewer, JmolConstants, Frame, ModelManager, and possibly
new classes.
I would like to add:
* All new features to be discussed and agreed upon by consensus on this list
prior to implementation.
* All commits isolated to one specific topic.
* Use of Eclipse autoformating requested at least as a starting point for all
new methods.
* No use of file-wide autoformating. Ever.
* No changes "just to clean up the formatting."
Miguel wrote:
Script related
--------------
r4507 - multiple expressions for connect and monitor
r4522 - adds radius to connect
r4551,r4555 - monitor changes
r4664,r4666 - connected() script operator + within() changes
connected() is fantastic. Please restore as implemented.
Feature related
---------------
r4504,r4506 - frame play ?? Don't mnow whether or not this involved
changes to the threading model ??
Key here is the concept of frame RANGE, which was difficult to implement
correctly. Substantial changes here to all handling of current model display and
handling of model visibility. Not sure what you mean by "threading model" in
this context, but the changes implemented are important. What is changed is not
the model, as I see it, but the way the "next frame" is selected. Please restore
this in its entirety.
r4659,r4662,r4663,r4668,r4669,r4674 - polyhedra ?? Why was an Atom
constructor introduced that creates a fake/artificial atom ??
This is necessary because the centerpoint of the "collapsed" polyhedron is not
an atom, it is a projected point from the central atom. So it has xyz and screen
coordinates only. I like your idea that "Atom" should be an extension of "Point"
and that this should be a Point.
Review post 10.1 release
========================
Applet event model + model info
-------------------------------
r4445-r4461 - getAppletInfo work - at a minimum needs a method name change
because getAppletInfo is part of java.awt.Applet public interface. Perhaps
this was replaced by some form of getProperty.
I originally introduced this as a sort of getProperty, but then in response to
your concerns changed it to the standard:
Syntax: String getAppletInfo()
Returns: String
Description: This method returns the Applet producer and copyright
I would like that functionality returned (involves Viewer functions that can
deliver this information) so that JavaScript and other apps can read the Jmol
version/date and OS information as I had set up.
r4447-r4470 - applet getProperty
this was later also introduced as a script command. That will be quite useful.
r4472 - JSON
r4475,r4476 - applet.loadLinee + getProperty
r4477,r4560,r4651 - event queuing/polling - applet synchronization
r4480,r4483 - statusManager / propertyManager
I'm looking forward to your implementation ideas here.
r4500 - scriptWait with JSON
or not -- just don't return a Java object to JavaScript. It will be a true
support headache.
r4509 - isPredefining + atomInfo
>
> r4512 - statusManager + animation + compiler define/@
(Two together.) The key here is that we have a fundamental flaw in the handling
of user-defined terms. If we allow this, which we must, then we need to allow
people to override current Tokenized terms, only warning them via System.out.
Otherwise, as we add new tokens, SOMEONE out there might have an instantly
broken page. We must reserve the right to add new tokens; we should not make
that break pages. The compromise is that introduction of a new token, in this
case "prev" for the frame business, if it conflicts with a user definition
(Otto's, as I recall), should gracefullly notify but not disallow that
overloading. Chances are the functionality introduced are not used in any
current application EXCEPT in this "define" context. Please restore.
r4516-r4519 - atomInfo + JSON
r4523,r4525 - getProperty("modelInfo")
etc., etc.
r4528 - statusManager + pmesh
The inline pmesh idea may be unnecessary now with draw; Easy enough to put in
though, and it allows for simple testing of pmesh. Not a priority
r4530 - orientationInfo change
r4531 - statusManager + propertyManager
Somewhere in there is the whole business of "state" that I introduced. Please
restore.
r4533 - refresh() in evalExpression
no longer necessary. This should be handled by the Viewer modifications that
checks model visibility, with abstraction of all unnecessary checking of states
in renderers and the addition of Atom and other class visibility flags.
r4545 - getProperty()
r4550 - viewer.script() -> viewer.evalStringQuiet()
This has to do with the App not notifying the status manager when menu items are
selected, I think.
Atom visibility
---------------
r4537,r4539,r4541,r4543,r4545,r4598,r4599 - atom visibility + tainted
critical.
transformation/spin/camera related
----------------------------------
r4586,r4587,r4591,r4593,r4606,r4608,r4610,r4627,r4633,r4638,r4650,
r4688,r4689,r4690, - spin, rotate, internal coordinates, windowCentered
This will keep you busy. :) changes we discussed on Sunday involving
Viewer.getDefaultRotationCenter() that fixes Frieda-like jumps and permanently
stabilizes model from "walking" into the camera.
Reader/File related
-------------------
r4558 - amino read
I don't think this is mine.
Featire related
---------------
r4562,r4563,r4567,r4570,r4658 - draw
This should be relatively painless. Add the classes; stitch in the
Compiler/Eval/Token/JmolConstants business.
r4614,r4621 - #jmolscript in AtomSetCollectionReader
and Spartan SMOL reader and Xyz reader and related functions;
Unknown
-------
r4655 - ? spin + compiler + bug + Float.MIN_VALUE
You'll have to look carefully at the compiler code changes there; I can't
remember specifically.
If you mean "the smallest positive number" -- something like 1E-45, then leave
it; if you mean "the most negative number" (which I think you do, in some cases)
then you want -Float.MAX_VALUE
r4685 - ? movement of code from Eval to Viewer
Actually, this is all to Frame, via Viewer and modelManager. The programming
model had been "just do atom-bitset construction in Eval" such as getNucleic()
getProtein() and such (I can't remember the exact names) even though all these
have nothing to do with scripting. I moved them to Frame and then created a
standard set of interfaces via Viewer that accessed them using just a couple of
generic functions. We need to do this because there is a general need to create
bitsets outside of the Eval framework. I'm forgetting the exact point of need,
but once one was needed, the rest naturally followed. As I did this I found a
bug in the resno/chain specification business. That needs fixing prior to 10.1.
r4529 - ? multifile not showing bonds
These are ongoing changes needed to display multiple files. It's a work in
progress. Please restore it.
Deprecated (not a complete list)
--------------------------------
r4474 - connect STATIC - deprecated
That's connect EXISTS, right?
bondorder - deprecated
I guess I'm OK with that. It does have a use, vaguely.
Other concerns Bob has
----------------------
--Your schedule is very ambitious.
--The frame business was especially tricky. It's very important functionality
but quite complex. I would like all of the model display and visibility flag
business that I introduced to be restored, as it is critical functionality and
needs very careful implementation. I think part of this is in JmolConstants.
Check the end of ModelManager for the central methods.
--The new streamlined handling of all transformations in terms of two entrant
"internal" an "fixed" methods is critical. There are important tie-ins to the
MouseManager or PickingManager (can't remember which).
--I'd like to add dipoles before 10.1. The code is all there (on my local set);
it just needs inclusion. This was discussed at the ACS meeting, and I promised
it to John Gelder. It involves three classes: Dipole, Dipoles, and
DipolesRenderer, and Eval. It's a fundamentally new class -- sort of a mix of
Rasmol-like cartoon and atom-based vector. The dipole information from Spartan
SMOL files is read and stored in atomSetCollectionAuxiliaryInfo. Spartan partial
charges are also read, and general utilities to install auxiliaryInfo into the
partialCharges array are included. Bond dipoles are calculated from partial charges.
--I'm assuming this is the full list of commits, including those prior to SVN
implemenation.
--
--
Robert M. Hanson, [EMAIL PROTECTED], 507-646-3107
Professor of Chemistry, St. Olaf College
1520 St. Olaf Ave., Northfield, MN 55057
mailto:[EMAIL PROTECTED]
http://www.stolaf.edu/people/hansonr
"Imagination is more important than knowledge." - Albert Einstein
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Jmol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-developers