Scripting API

From Freeplane - free mind mapping and knowledge management software
Revision as of 06:02, 26 November 2009 by Jayseye (talk | contribs) (Added categories)

Dimitry 07:54, 3 November 2009 (UTC)

Please use this page to specify the methods which should be available for objects "node" and "c"

This page was started following a suggestion of Dimitry [1] in reply of a post of mine.

Its first goal is to specify Freeplane Script API which is not implemented yet. Afterwards it can serve as documentation for users with little knowledge of the internals of Freeplane so that they can port their scripts when changing from Freemind.

This is a list of methods (and a variable) of the objects "node" and "c" passed to the scripts by Freemind which I used so far. It is not complete, and in fact I'd like to have methods at hand to access (read/write) attributes and their values, as well as icons. There might be more useful things that one could wish to do in a script.

Finally the list:

Is is complete? Dimitry

In the sense of "does it cover all methods that are available in Freemind 0.9.0": No. These are just the ones I am currently using.

Would you rather like to have a 'wishlist', or to implement a 100% Freemind compatible API in one step? My feeling is that -- for you, and once you wrote proxy classes partially implementing the Freemind API -- it would be very easy to add one after the other, depending on user requests. I don't know which way you prefer. philshvarcz

Actually neither the first nor the second. I do not want to copy FreeMind API because FreeMind does not use proxy object which is likely to make troubles with undo after script is executed. I would like to implement a new property like API which contains enough methods for changing anything you need but is easy to use and clear, although there are a lot of parameters it can get/set. So may be having only "node" is not enough, maybe we need something like

node.style.font.setSize(14) 
node.note.setHtmlText("<html><b>text")
node.attributes.getAttributePosition(String)

Therefore I ask you to be creative so that we have an extendable, clear and easy to use API for scripting. Once we see what we need I can implement it in a couple of days because it is not a new functionality but just a new interface. Dimitry 10:18, 3 November 2009 (UTC)

node

int getAttributePosition(String)

what is it? Dimitry

this will return the position of the attribute with name xyz in the list of attributes of the node. If there's no attribute with that name, it returns -1. philshvarcz


String getPlainTextContent()
int getChildCount()
void setBackgroundColor(Color)
void setColor(Color)
void node.setFont(Font)
List getChildren()

List children

c

void nodeStructureChanged(MindMapNode)
List getSelecteds()
MindMapNode getSelected()
void centerNode(MindMapNode)

--Philshvarcz 21:33, 2 November 2009 (UTC)