Thread: [Pydev-cvs] org.python.pydev/src/org/python/pydev/plugin/nature PythonPathNature.java,1.12,1.13 Pyth
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2006-01-25 12:16:56
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/plugin/nature In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3642/src/org/python/pydev/plugin/nature Modified Files: PythonPathNature.java PythonNature.java SystemPythonNature.java Log Message: Index: SystemPythonNature.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/plugin/nature/SystemPythonNature.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SystemPythonNature.java 16 Jan 2006 17:17:49 -0000 1.1 --- SystemPythonNature.java 25 Jan 2006 12:16:46 -0000 1.2 *************** *** 88,90 **** --- 88,94 ---- } + public void rebuildPath() { + throw new RuntimeException("Not Implemented"); + } + } Index: PythonNature.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/plugin/nature/PythonNature.java,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** PythonNature.java 23 Jan 2006 15:22:49 -0000 1.31 --- PythonNature.java 25 Jan 2006 12:16:46 -0000 1.32 *************** *** 9,12 **** --- 9,13 ---- import java.io.File; + import java.util.ArrayList; import java.util.List; *************** *** 17,20 **** --- 18,23 ---- import org.eclipse.core.resources.IProjectNature; import org.eclipse.core.resources.IResource; + import org.eclipse.core.resources.IWorkspaceRoot; + import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; *************** *** 217,243 **** JobProgressComunicator jobProgressComunicator = new JobProgressComunicator(monitorArg, "Pydev restoring cache info...", IProgressMonitor.UNKNOWN, this); ! astManager = (ICodeCompletionASTManager) ASTManager.loadFromFile(getAstOutputFile()); //errors can happen when restoring it if(astManager == null){ try { ! String pythonPathStr = pythonPathNature.getOnlyProjectPythonPathStr(); ! rebuildPath(pythonPathStr); } catch (Exception e) { PydevPlugin.log(e); } - }else{ - synchronized(astManager){ - astManager.setProject(getProject(), true); // this is the project related to it, restore the deltas (we may have some crash) - List<IInterpreterObserver> participants = ExtensionHelper.getParticipants(ExtensionHelper.PYDEV_INTERPRETER_OBSERVER); - for (IInterpreterObserver observer : participants) { - try { - observer.notifyNatureRecreated(nature, jobProgressComunicator); - } catch (Exception e) { - //let's not fail because of other plugins - PydevPlugin.log(e); - } - } - } } jobProgressComunicator.done(); --- 220,260 ---- JobProgressComunicator jobProgressComunicator = new JobProgressComunicator(monitorArg, "Pydev restoring cache info...", IProgressMonitor.UNKNOWN, this); ! try { ! astManager = (ICodeCompletionASTManager) ASTManager.loadFromFile(getAstOutputFile()); ! if (astManager != null) { ! synchronized (astManager) { ! astManager.setProject(getProject(), true); // this is the project related to it, restore the deltas (we may have some crash) ! ! //just a little validation so that we restore the needed info if we did not get the modules ! if (astManager.getModulesManager().getOnlyDirectModules().length < 5) { ! astManager = null; ! } ! ! if (astManager != null) { ! List<IInterpreterObserver> participants = ExtensionHelper ! .getParticipants(ExtensionHelper.PYDEV_INTERPRETER_OBSERVER); ! for (IInterpreterObserver observer : participants) { ! try { ! observer.notifyNatureRecreated(nature, jobProgressComunicator); ! } catch (Exception e) { ! //let's not fail because of other plugins ! PydevPlugin.log(e); ! } ! } ! } ! } ! } ! } catch (Exception e) { ! PydevPlugin.log(e); ! astManager = null; ! } //errors can happen when restoring it if(astManager == null){ try { ! rebuildPath(); } catch (Exception e) { PydevPlugin.log(e); } } jobProgressComunicator.done(); *************** *** 280,283 **** --- 297,312 ---- /** + * Can be called to refresh internal info (or after changing the path in the preferences). + */ + public void rebuildPath() { + try { + String pythonPathStr = this.pythonPathNature.getOnlyProjectPythonPathStr(); + this.rebuildPath(pythonPathStr); + } catch (CoreException e) { + throw new RuntimeException(e); + } + } + + /** * This method is called whenever the pythonpath for the project with this nature is changed. */ *************** *** 306,312 **** for (IInterpreterObserver observer : participants) { try { - //let's keep it safe observer.notifyProjectPythonpathRestored(nature, jobProgressComunicator); } catch (Exception e) { PydevPlugin.log(e); } --- 335,341 ---- for (IInterpreterObserver observer : participants) { try { observer.notifyProjectPythonpathRestored(nature, jobProgressComunicator); } catch (Exception e) { + //let's keep it safe PydevPlugin.log(e); } *************** *** 348,351 **** --- 377,397 ---- return null; } + + /** + * @return all the python natures available in the workspace + */ + public static List<IPythonNature> getAllPythonNatures() { + List<IPythonNature> natures = new ArrayList<IPythonNature>(); + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + IProject[] projects = root.getProjects(); + for (IProject project : projects) { + PythonNature nature = getPythonNature(project); + if(nature != null){ + natures.add(nature); + } + } + return natures; + } + /** * @param project the project we want to know about (if it is null, null is returned) *************** *** 411,416 **** public void saveAstManager() { ! synchronized(astManager){ ! REF.writeToFile(astManager, getAstOutputFile()); } } --- 457,467 ---- public void saveAstManager() { ! if(astManager == null){ ! REF.writeToFile(null, getAstOutputFile()); ! ! }else{ ! synchronized(astManager){ ! REF.writeToFile(astManager, getAstOutputFile()); ! } } } Index: PythonPathNature.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/plugin/nature/PythonPathNature.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** PythonPathNature.java 22 Jan 2006 20:19:25 -0000 1.12 --- PythonPathNature.java 25 Jan 2006 12:16:46 -0000 1.13 *************** *** 149,152 **** --- 149,156 ---- boolean restore = false; String projectSourcePath = project.getPersistentProperty(PythonPathNature.PROJECT_SOURCE_PATH); + if(projectSourcePath == null){ + //has not been set + return ""; + } //we have to validate it, because as we store the values relative to the workspace, and not to the //project, the path may become invalid (in which case we have to make it compatible again). *************** *** 178,182 **** //yeap, everything has to be done from scratch, as all the filesystem paths have just //been turned to dust! ! nature.rebuildPath(getOnlyProjectPythonPathStr()); } } --- 182,186 ---- //yeap, everything has to be done from scratch, as all the filesystem paths have just //been turned to dust! ! nature.rebuildPath(); } } *************** *** 188,192 **** synchronized(project){ //no need to validate because those are always 'file-system' related ! return project.getPersistentProperty(PythonPathNature.PROJECT_EXTERNAL_SOURCE_PATH); } } --- 192,200 ---- synchronized(project){ //no need to validate because those are always 'file-system' related ! String extPath = project.getPersistentProperty(PythonPathNature.PROJECT_EXTERNAL_SOURCE_PATH); ! if(extPath == null){ ! extPath = ""; ! } ! return extPath; } } |