Search in sources :

Example 6 with StringDict

use of processing.data.StringDict in project processing by processing.

the class Library method handle.

/**
   * Handles all the Java-specific parsing for library handling.
   */
protected void handle() {
    File exportSettings = new File(libraryFolder, "export.txt");
    StringDict exportTable = exportSettings.exists() ? Util.readSettings(exportSettings) : new StringDict();
    exportList = new HashMap<String, String[]>();
    // get the list of files just in the library root
    String[] baseList = libraryFolder.list(standardFilter);
    //    System.out.println("Loading " + name + "...");
    //    PApplet.println(baseList);
    String appletExportStr = exportTable.get("applet");
    if (appletExportStr != null) {
        appletExportList = PApplet.splitTokens(appletExportStr, ", ");
    } else {
        appletExportList = baseList;
    }
    String androidExportStr = exportTable.get("android");
    if (androidExportStr != null) {
        androidExportList = PApplet.splitTokens(androidExportStr, ", ");
    } else {
        androidExportList = baseList;
    }
    // for the host platform, need to figure out what's available
    File nativeLibraryFolder = libraryFolder;
    String hostPlatform = Platform.getName();
    //    System.out.println("1 native lib folder now " + nativeLibraryFolder);
    // see if there's a 'windows', 'macosx', or 'linux' folder
    File hostLibrary = new File(libraryFolder, hostPlatform);
    if (hostLibrary.exists()) {
        nativeLibraryFolder = hostLibrary;
    }
    //    System.out.println("2 native lib folder now " + nativeLibraryFolder);
    // check for bit-specific version, e.g. on windows, check if there
    // is a window32 or windows64 folder (on windows)
    hostLibrary = new File(libraryFolder, hostPlatform + Platform.getNativeBits());
    if (hostLibrary.exists()) {
        nativeLibraryFolder = hostLibrary;
    }
    if (hostPlatform.equals("linux") && System.getProperty("os.arch").equals("arm")) {
        hostLibrary = new File(libraryFolder, "linux-armv6hf");
        if (hostLibrary.exists()) {
            nativeLibraryFolder = hostLibrary;
        }
    }
    // save that folder for later use
    nativeLibraryPath = nativeLibraryFolder.getAbsolutePath();
    // for each individual platform that this library supports, figure out what's around
    for (int i = 1; i < platformNames.length; i++) {
        String platformName = platformNames[i];
        String platformName32 = platformName + "32";
        String platformName64 = platformName + "64";
        String platformNameArmv6hh = platformName + "-armv6hf";
        // First check for things like 'application.macosx=' or 'application.windows32' in the export.txt file.
        // These will override anything in the platform-specific subfolders.
        String platformAll = exportTable.get("application." + platformName);
        String[] platformList = platformAll == null ? null : PApplet.splitTokens(platformAll, ", ");
        String platform32 = exportTable.get("application." + platformName + "32");
        String[] platformList32 = platform32 == null ? null : PApplet.splitTokens(platform32, ", ");
        String platform64 = exportTable.get("application." + platformName + "64");
        String[] platformList64 = platform64 == null ? null : PApplet.splitTokens(platform64, ", ");
        String platformArmv6hf = exportTable.get("application." + platformName + "-armv6hf");
        String[] platformListArmv6hf = platformArmv6hf == null ? null : PApplet.splitTokens(platformArmv6hf, ", ");
        // If nothing specified in the export.txt entries, look for the platform-specific folders.
        if (platformAll == null) {
            platformList = listPlatformEntries(libraryFolder, platformName, baseList);
        }
        if (platform32 == null) {
            platformList32 = listPlatformEntries(libraryFolder, platformName32, baseList);
        }
        if (platform64 == null) {
            platformList64 = listPlatformEntries(libraryFolder, platformName64, baseList);
        }
        if (platformListArmv6hf == null) {
            platformListArmv6hf = listPlatformEntries(libraryFolder, platformNameArmv6hh, baseList);
        }
        if (platformList32 != null || platformList64 != null || platformListArmv6hf != null) {
            multipleArch[i] = true;
        }
        // then use the baseList (root of the library folder) as the default.
        if (platformList == null && platformList32 == null && platformList64 == null && platformListArmv6hf == null) {
            exportList.put(platformName, baseList);
        } else {
            // (also concatenate the list of files in the root folder as well
            if (platformList != null) {
                exportList.put(platformName, platformList);
            }
            if (platformList32 != null) {
                exportList.put(platformName32, platformList32);
            }
            if (platformList64 != null) {
                exportList.put(platformName64, platformList64);
            }
            if (platformListArmv6hf != null) {
                exportList.put(platformNameArmv6hh, platformListArmv6hf);
            }
        }
    }
    //    for (String p : exportList.keySet()) {
    //      System.out.println(p + " -> ");
    //      PApplet.println(exportList.get(p));
    //    }
    // get the path for all .jar files in this code folder
    packageList = Util.packageListFromClassPath(getClassPath());
}
Also used : StringDict(processing.data.StringDict)

Aggregations

StringDict (processing.data.StringDict)6 Point (java.awt.Point)1 File (java.io.File)1 IOException (java.io.IOException)1 DefaultMutableTreeNode (javax.swing.tree.DefaultMutableTreeNode)1 TreeNode (javax.swing.tree.TreeNode)1 StringList (processing.data.StringList)1