It works!
I had to use 'set syncscript on' instead of 'sync script'.
But when I enter any command from the Jmol console, in data[1] I have:
mycommand## EDITOR_IGNORE ## #NOSYNC;
What does that '## EDITOR_IGNORE ## #NOSYNC;' thing mean? Am I doing
something wrong?
Here's my code: https://gist.github.com/2158139
Adrià
El 22 de març de 2012 11:48, Adrià Cereto Massagué
<adrian.cer...@urv.cat>ha escrit:
> 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