Adding support for user-installed libraries in the "libraries" sub-directory of the sketchbook folder.

This commit is contained in:
David A. Mellis 2009-05-24 15:09:26 +00:00
parent 07feaca3a1
commit c2cac3e75d
3 changed files with 23 additions and 7 deletions

View File

@ -34,7 +34,7 @@ import javax.swing.*;
*/
public class LibraryManager {
private File libDir;
private File coreLibDir, userLibDir;
private List libraries = new ArrayList();
private Target target;
@ -44,9 +44,11 @@ public class LibraryManager {
public LibraryManager() throws IOException
{
String userDir = System.getProperty("user.dir") + File.separator;
libDir = new File(
coreLibDir = new File(
((!Base.isMacOS()) ? "" : userDir) + "hardware" + File.separator +
"libraries");
userLibDir =
new File(Sketchbook.getSketchbookPath() + File.separator + "libraries");
target = new Target(
System.getProperty("user.dir") + File.separator + "hardware" +
File.separator + "cores",
@ -70,9 +72,15 @@ public class LibraryManager {
}
};
libraries.clear();
File[] libs = libDir.listFiles(onlyDirs);
for(int i = 0; i < libs.length; ++i){
libraries.add(new Library(this, libs[i]));
File[] userLibs = userLibDir.listFiles(onlyDirs);
if (userLibs != null) {
for(int i = 0; i < userLibs.length; ++i){
libraries.add(new Library(this, userLibs[i]));
}
}
File[] coreLibs = coreLibDir.listFiles(onlyDirs);
for(int i = 0; i < coreLibs.length; ++i){
libraries.add(new Library(this, coreLibs[i]));
}
}

View File

@ -2238,6 +2238,7 @@ public class Sketch {
public boolean isReadOnly() {
String apath = folder.getAbsolutePath();
if (apath.startsWith(Sketchbook.examplesPath) ||
apath.startsWith(Sketchbook.userLibrariesPath) ||
apath.startsWith(Sketchbook.librariesPath)) {
return true;

View File

@ -68,6 +68,9 @@ public class Sketchbook {
static File librariesFolder;
static String librariesPath;
static File userLibrariesFolder;
static String userLibrariesPath;
// maps imported packages to their library folder
static Hashtable importToLibraryTable = new Hashtable();
@ -131,11 +134,14 @@ public class Sketchbook {
//System.out.println("resetting sketchbook path");
File sketchbookFolder = Base.getDefaultSketchbookFolder();
//System.out.println("default is " + sketchbookFolder);
Preferences.set("sketchbook.path",
sketchbookFolder.getAbsolutePath());
sketchbookPath = sketchbookFolder.getAbsolutePath();
Preferences.set("sketchbook.path", sketchbookPath);
if (!sketchbookFolder.exists()) sketchbookFolder.mkdirs();
}
userLibrariesFolder = new File(sketchbookPath, "libraries");
userLibrariesPath = userLibrariesFolder.getAbsolutePath();
openMenu = new JMenu("Sketchbook");
popupMenu = new JMenu("Sketchbook");
importMenu = new JMenu("Import Library");
@ -386,6 +392,7 @@ public class Sketchbook {
if (addLibraries(importMenu, examplesFolder)) {
importMenu.addSeparator();
}
addLibraries(importMenu, userLibrariesFolder);
addLibraries(importMenu, librariesFolder);
//System.out.println("libraries cp is now " + librariesClassPath);