Thank you! I'll try the JmolStatusListener approach.
I think it would be helpful for others to have this on the wiki.
Regards,
Adrià
El 22 de març de 2012 3:39, Robert Hanson <hans...@stolaf.edu> ha escrit:
> Ah, I see. Let's work on this.....
>
> That's very interesting, and it's easy. Absolutely no hacking of Jmol
> code. It's all ready for you. A couple of options:
>
> 1) create a JmolScript function with the command name. That's your
> starting point. it doesn't matter what this function does. maybe nothing.
>
> Function myCommand () {}
>
> Now the user can type;
>
> mycommand whatever whatever whatever....
>
> 2) Now, in your application's JmolStatusListener, you need to tell Jmol
> that you are interested in listening for script commands and also process
> those. That's called a SYNC callback. See the Export.java example:
>
> class MyStatusListener implements JmolStatusListener {
>
> public boolean notifyEnabled(EnumCallback type) {
> // indicate here any callbacks you will be working with.
> // some of these flags are not tested. See
> org.jmol.viewer.StatusManager.java
> switch (type) {
> case SYNC:
> return true;
> default:
> return false;
> }
> }
>
> @SuppressWarnings("incomplete-switch")
> public void notifyCallback(EnumCallback type, Object[] data) {
> switch (type) {
> case SYNC:
> ...
> break;
> }
> }
>
>
> now issue the Jmol script command;
>
> sync script
> sync ON
>
> and watch every script command come your way.
>
> The command from Viewer.StatusManager will be this:
>
> void syncSend(String script, String appletName, int port) {
> if (port != 0 || notifyEnabled(EnumCallback.SYNC))
> jmolCallbackListener.notifyCallback(EnumCallback.SYNC,
> new Object[] { null, script, appletName, Integer.valueOf(port)
> });
> }
>
> So the script command will appear as data[1].
>
> I realize this is not at all obvious. But it is very powerful and
> flexible.
>
> Another option would be within your function to use the JAVASCRIPT
> command. That will return a string value to Jmol. And, come to think of it,
> we could set that up to return anything in the form of a ScriptToken. So
> for example:
>
>
> Function getCharges (atoms) {
> return javascript("exec getES: " + atoms.label("%i %e %[xyz]")
> }
>
> Now if in Jmol the user enters:
>
> print getcharges({helix})
>
> they will see the result after your end processes that command. Of course,
> if you want, rather than just returning the result, you could do anything
> you want with it.
>
> More possibilities: Maybe you would like to connect with Jmol over a
> socket? We do that in the molecular playground. It works great, and you can
> receive and send commands to Jmol using the SYNC command with a port number:
>
> SYNC -30000
>
> Now Jmol is listening on port 30000 for NIOS calls. Now you can connect a
> client and off you go.
>
> more about that if you are interested. No documentation on that I think.
>
> Bob
>
>
>
> Bob
>
>
>
>
>
>
>
> listen for your command and do anything with it you want to.
>
> The "registering" in jmol is just the definition of
>
> You would just ignore all the commands you aren't interested in
> processing.
>
>
>
> 2012/3/21 Adrià Cereto Massagué <adrian.cer...@urv.cat>
>
>>
>>
>> El 21 de març de 2012 19:31, Robert Hanson <hans...@stolaf.edu> ha
>> escrit:
>>
>> That's Jmol script, not JavaScript. Yes, essentially exactly like pyMol.
>>> You can write any macro you want.
>>>
>>
>> I didn't explain well.
>> I can implement some of that functionality using JmolScript, but not
>> everything I want.
>> I would like to map commands to, or directly call ,Java (not JavaScript
>> nor JmolScript) functions from the Jmol console.
>> With pymol one can register any python function as a command available
>> from pymol's console.
>> Here it's explained: http://www.pymolwiki.org/index.php/Extend
>>
>>
>> Is there something similar in Jmol?
>>
>>
>>
>>
>>>
>>>
>>> 2012/3/21 Adrià Cereto Massagué <adrian.cer...@urv.cat>
>>>
>>>>
>>>>
>>>> El 21 de març de 2012 1:45, Robert Hanson <hans...@stolaf.edu> ha
>>>> escrit:
>>>>
>>>> Custom commands can be simply set up by defining a function with that
>>>>> command name. is that what you mean -- sort of a macro?
>>>>>
>>>>>
>>>>>
>>>>> function colorMeBlue(atoms) {
>>>>>
>>>>> color @atoms blue
>>>>>
>>>>> }
>>>>>
>>>>>
>>>>>
>>>>> colorMeBlue {helix}
>>>>>
>>>>>
>>>>>
>>>>>
>>>> Thank you. I have some commands I can implement in JmolScript, and
>>>> therefore defien as functions,
>>>> but I would like to call or execute an external Java method. Can it be
>>>> done?
>>>>
>>>> In PyMol it is possible to map a python function to a script command.
>>>> Is there something similar in Jmol?
>>>>
>>>>
>>>>>
>>>>>
>>>>> 2012/3/20 Adrià Cereto Massagué <adrian.cer...@urv.cat>
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I am new to Jmol, and I am developing an application which relies on
>>>>>> it (the Integration.java example has been very useful)
>>>>>>
>>>>>> I want to have some custom commands available from the scripting
>>>>>> console. Is there an easy way for doing so?
>>>>>>
>>>>>> I have tried extending AppConsole and overriding the enterPressed()
>>>>>> method and checking AppConsole.text for the last line, but then I have no
>>>>>> way no clear the custom command from the console unless i call
>>>>>> super.enterPressed(), which prints a script error about (obviously) not
>>>>>> recognizing the command.
>>>>>>
>>>>>> Thank you in advance,
>>>>>>
>>>>>> Adrià
>>>>>>
>>>>>> --
>>>>>> *Adrià Cereto Massagué*
>>>>>> Ph.D Student
>>>>>> Nutrigenomics Research Group
>>>>>> Biochemistry and Biotechnology Department
>>>>>> Building N4, Campus Sescelades
>>>>>> Universitat Rovira i Virgili
>>>>>> Tarragona, Catalonia
>>>>>>
>>>>>> Languages: Català, Español, English, Français, Deutsch, Português
>>>>>>
>>>>>> Nota
>>>>>> importante<http://www.gnu.org/philosophy/no-word-attachments.es.html>|
>>>>>> Important
>>>>>> Notice <http://www.gnu.org/philosophy/no-word-attachments.html>
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> This SF email is sponsosred by:
>>>>>> Try Windows Azure free for 90 days Click Here
>>>>>> http://p.sf.net/sfu/sfd2d-msazure
>>>>>> _______________________________________________
>>>>>> Jmol-users mailing list
>>>>>> Jmol-users@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/jmol-users
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Robert M. Hanson
>>>>> Professor of Chemistry
>>>>> St. Olaf College
>>>>> 1520 St. Olaf Ave.
>>>>> Northfield, MN 55057
>>>>> http://www.stolaf.edu/people/hansonr
>>>>> phone: 507-786-3107
>>>>>
>>>>>
>>>>> If nature does not answer first what we want,
>>>>> it is better to take what answer we get.
>>>>>
>>>>> -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> This SF email is sponsosred by:
>>>>> Try Windows Azure free for 90 days Click Here
>>>>> http://p.sf.net/sfu/sfd2d-msazure
>>>>>
>>>>> _______________________________________________
>>>>> Jmol-users mailing list
>>>>> Jmol-users@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/jmol-users
>>>>>
>>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> This SF email is sponsosred by:
>>>> Try Windows Azure free for 90 days Click Here
>>>> http://p.sf.net/sfu/sfd2d-msazure
>>>> _______________________________________________
>>>> Jmol-users mailing list
>>>> Jmol-users@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/jmol-users
>>>>
>>>>
>>>
>>>
>>> --
>>> Robert M. Hanson
>>> Professor of Chemistry
>>> St. Olaf College
>>> 1520 St. Olaf Ave.
>>> Northfield, MN 55057
>>> http://www.stolaf.edu/people/hansonr
>>> phone: 507-786-3107
>>>
>>>
>>> If nature does not answer first what we want,
>>> it is better to take what answer we get.
>>>
>>> -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> This SF email is sponsosred by:
>>> Try Windows Azure free for 90 days Click Here
>>> http://p.sf.net/sfu/sfd2d-msazure
>>>
>>> _______________________________________________
>>> Jmol-users mailing list
>>> Jmol-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/jmol-users
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------------
>> This SF email is sponsosred by:
>> Try Windows Azure free for 90 days Click Here
>> http://p.sf.net/sfu/sfd2d-msazure
>> _______________________________________________
>> Jmol-users mailing list
>> Jmol-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/jmol-users
>>
>>
>
>
> --
> Robert M. Hanson
> Professor of Chemistry
> St. Olaf College
> 1520 St. Olaf Ave.
> Northfield, MN 55057
> http://www.stolaf.edu/people/hansonr
> phone: 507-786-3107
>
>
> If nature does not answer first what we want,
> it is better to take what answer we get.
>
> -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900
>
>
> ------------------------------------------------------------------------------
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here
> http://p.sf.net/sfu/sfd2d-msazure
>
> _______________________________________________
> Jmol-users mailing list
> Jmol-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jmol-users
>
>
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Jmol-users mailing list
Jmol-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-users