[Pydev-code] changing python interpreter and project's python path programmatically
Brought to you by:
fabioz
From: Josh S. <str...@gm...> - 2012-05-14 22:41:39
|
After digging around with the pydev code I've been trying to write a simple eclipse plugin that can change the active python interpreter or alter the current project's python path programmatically. For example, if I call PythonInterpreterManager.createInterpreterInfo(), I get the popup asking for which system libs to include on the path. With the info I get back, I can call addInterpreterInfo() to store it in the manager. What I don't understand though is what happens with this stored data. For example, if I call PythonInterpreterManager.getInterpreterInfos(), I don't get that new info I just added back. Looking at the code, it seems to be doing something more complex than just pulling from a list. I also don't see anything outside the preferences as to which interpreter is actually being used. Is it the selected one? Is there a way to query this without actually looking at the IPreferencePage? Because we have several diferrent interpreters, I'd like to write a view plugin that can add/switch-between the various interpreters without having to open up the preferences window. However, it seems that the preferences are intimately tied to the actual data, so I have to actually look at preferences pages instead of some function on a manager like getActiveInterpreter() or setActiveInterpreter(). In a related vein, I'd like to be able to alter the pythonpath for a given project I'm working on. For example, I might add a checkbox to my view and when it's toggled, it adds/removes some path from the project's python path. I was expecting some functions like addInterpreterPath() on some manager that adds that path to the interpreters preferences page. Or getProjectPythonPath(IProject) or setProjectPythonPath(IProject, String) that could change the project's python path without dealing with the actual preference pages. Just from my limited understanding of the code, however, a lot of the "model" state is actually in the UI itself instead of just in the managers. Is this functionality currently possible with the existing API without having to jump through a bunch of hoops? Thanks, Josh |