mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-19 13:54:23 +01:00
svn merge -r 72:HEAD svn+ssh://mellis@svn.berlios.de/svnroot/repos/arduino/tags/0004 - used Base.java from tags/0004 but changed version back to 0003.
This commit is contained in:
parent
5ede9c8d2e
commit
b7728ae604
2226
app/Base.java
2226
app/Base.java
@ -1,1113 +1,1113 @@
|
||||
/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
|
||||
/*
|
||||
Part of the Arduino project - http://arduino.berlios.de
|
||||
|
||||
|
||||
|
||||
Based on processing http://www.processing.org
|
||||
Copyright (c) 2004-05 Ben Fry and Casey Reas
|
||||
Copyright (c) 2001-04 Massachusetts Institute of Technology
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
package processing.app;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.net.*;
|
||||
import java.util.*;
|
||||
import java.util.zip.*;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.*;
|
||||
import javax.swing.text.*;
|
||||
import javax.swing.undo.*;
|
||||
|
||||
import com.apple.mrj.*;
|
||||
import com.ice.jni.registry.*;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The base class for the main Arduino application.
|
||||
* <P>
|
||||
* Primary role of this class is for platform identification and
|
||||
* general interaction with the system (launching URLs, loading
|
||||
* files and images, etc) that comes from that.
|
||||
*/
|
||||
public class Base {
|
||||
static final int VERSION = 3;
|
||||
static final String VERSION_NAME = "0003 Alpha";
|
||||
|
||||
static public int platform;
|
||||
|
||||
// platform IDs for platform
|
||||
|
||||
static final int WINDOWS = 1;
|
||||
static final int MACOS9 = 2;
|
||||
static final int MACOSX = 3;
|
||||
static final int LINUX = 4;
|
||||
static final int OTHER = 0;
|
||||
|
||||
|
||||
// moved from PApplet
|
||||
// in preperation of detaching the IDE from the
|
||||
// Arduino core classes
|
||||
|
||||
/**
|
||||
* Current platform in use.
|
||||
* <P>
|
||||
* Equivalent to System.getProperty("os.name"), just used internally.
|
||||
*/
|
||||
static public String platformName = System.getProperty("os.name");
|
||||
|
||||
static {
|
||||
// figure out which operating system
|
||||
// this has to be first, since editor needs to know
|
||||
|
||||
if (platformName.toLowerCase().indexOf("mac") != -1) {
|
||||
// can only check this property if running on a mac
|
||||
// on a pc it throws a security exception and kills the applet
|
||||
// (but on the mac it does just fine)
|
||||
if (System.getProperty("mrj.version") != null) { // running on a mac
|
||||
platform = (platformName.equals("Mac OS X")) ?
|
||||
MACOSX : MACOS9;
|
||||
}
|
||||
|
||||
} else {
|
||||
String osname = System.getProperty("os.name");
|
||||
|
||||
if (osname.indexOf("Windows") != -1) {
|
||||
platform = WINDOWS;
|
||||
|
||||
} else if (osname.equals("Linux")) { // true for the ibm vm
|
||||
platform = LINUX;
|
||||
|
||||
} else {
|
||||
platform = OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// used by split, all the standard whitespace chars
|
||||
// (uncludes unicode nbsp, that little bostage)
|
||||
|
||||
static final String WHITESPACE = " \t\n\r\f\u00A0";
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Path of filename opened on the command line,
|
||||
* or via the MRJ open document handler.
|
||||
*/
|
||||
static String openedAtStartup;
|
||||
|
||||
Editor editor;
|
||||
|
||||
|
||||
static public void main(String args[]) {
|
||||
|
||||
// make sure that this is running on java 1.4
|
||||
|
||||
//if (PApplet.javaVersion < 1.4f) {
|
||||
//System.err.println("no way man");
|
||||
// Base.showError("Need to install Java 1.4",
|
||||
// "This version of Arduino requires \n" +
|
||||
// "Java 1.4 or later to run properly.\n" +
|
||||
// "Please visit java.com to upgrade.", null);
|
||||
// }
|
||||
|
||||
|
||||
// grab any opened file from the command line
|
||||
|
||||
if (args.length == 1) {
|
||||
Base.openedAtStartup = args[0];
|
||||
}
|
||||
|
||||
|
||||
// register a temporary/early version of the mrj open document handler,
|
||||
// because the event may be lost (sometimes, not always) by the time
|
||||
// that Editor is properly constructed.
|
||||
|
||||
MRJOpenDocumentHandler startupOpen = new MRJOpenDocumentHandler() {
|
||||
public void handleOpenFile(File file) {
|
||||
// this will only get set once.. later will be handled
|
||||
// by the Editor version of this fella
|
||||
if (Base.openedAtStartup == null) {
|
||||
//System.out.println("handling outside open file: " + file);
|
||||
Base.openedAtStartup = file.getAbsolutePath();
|
||||
}
|
||||
}
|
||||
};
|
||||
MRJApplicationUtils.registerOpenDocumentHandler(startupOpen);
|
||||
|
||||
Base app = new Base();
|
||||
}
|
||||
|
||||
|
||||
public Base() {
|
||||
|
||||
// set the look and feel before opening the window
|
||||
|
||||
try {
|
||||
if (Base.isLinux()) {
|
||||
// linux is by default (motif?) even uglier than metal
|
||||
// actually, i'm using native menus, so they're ugly and
|
||||
// motif-looking. ick. need to fix this.
|
||||
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
|
||||
} else {
|
||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// build the editor object
|
||||
editor = new Editor();
|
||||
|
||||
// get things rawkin
|
||||
editor.pack();
|
||||
|
||||
// has to be here to set window size properly
|
||||
editor.restorePreferences();
|
||||
|
||||
// show the window
|
||||
editor.show();
|
||||
|
||||
// check for updates
|
||||
if (Preferences.getBoolean("update.check")) {
|
||||
new UpdateCheck(editor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// .................................................................
|
||||
|
||||
|
||||
/**
|
||||
* returns true if the Arduino is running on a Mac OS machine,
|
||||
* specifically a Mac OS X machine because it doesn't un on OS 9 anymore.
|
||||
*/
|
||||
static public boolean isMacOS() {
|
||||
return platform == MACOSX;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* returns true if running on windows.
|
||||
*/
|
||||
static public boolean isWindows() {
|
||||
|
||||
return platform == WINDOWS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* true if running on linux.
|
||||
*/
|
||||
static public boolean isLinux() {
|
||||
|
||||
return platform == LINUX;
|
||||
}
|
||||
|
||||
|
||||
// .................................................................
|
||||
|
||||
|
||||
static final int kDocumentsFolderType =
|
||||
('d' << 24) | ('o' << 16) | ('c' << 8) | 's';
|
||||
static final int kPreferencesFolderType =
|
||||
('p' << 24) | ('r' << 16) | ('e' << 8) | 'f';
|
||||
static final int kDomainLibraryFolderType =
|
||||
('d' << 24) | ('l' << 16) | ('i' << 8) | 'b';
|
||||
static final short kUserDomain = -32763;
|
||||
|
||||
|
||||
static public File getSettingsFolder() {
|
||||
File dataFolder = null;
|
||||
|
||||
String pref = Preferences.get("settings.path");
|
||||
if (pref != null) {
|
||||
dataFolder = new File(pref);
|
||||
|
||||
} else if (Base.isMacOS()) {
|
||||
// carbon folder constants
|
||||
// http://developer.apple.com/documentation/Carbon/Reference
|
||||
// /Folder_Manager/folder_manager_ref/constant_6.html#/
|
||||
// /apple_ref/doc/uid/TP30000238/C006889
|
||||
|
||||
// additional information found int the local file:
|
||||
// /System/Library/Frameworks/CoreServices.framework
|
||||
// /Versions/Current/Frameworks/CarbonCore.framework/Headers/
|
||||
|
||||
// this is the 1.4 version.. but using 1.3 since i have the stubs
|
||||
// import com.apple.eio.*
|
||||
//println(FileManager.findFolder(kUserDomain,
|
||||
// kDomainLibraryFolderType));
|
||||
|
||||
// not clear if i can write to this folder tho..
|
||||
try {
|
||||
/*
|
||||
if (false) {
|
||||
// this is because the mrjtoolkit stubs don't have the
|
||||
// thows exception around them
|
||||
new FileInputStream("ignored");
|
||||
}
|
||||
*/
|
||||
|
||||
// this method has to be dynamically loaded, because
|
||||
MRJOSType domainLibrary = new MRJOSType("dlib");
|
||||
Method findFolderMethod =
|
||||
MRJFileUtils.class.getMethod("findFolder",
|
||||
new Class[] { Short.TYPE,
|
||||
MRJOSType.class });
|
||||
File libraryFolder = (File)
|
||||
findFolderMethod.invoke(null, new Object[] { new Short(kUserDomain),
|
||||
domainLibrary });
|
||||
|
||||
dataFolder = new File(libraryFolder, "Arduino");
|
||||
|
||||
} catch (Exception e) {
|
||||
// this could be FileNotFound or NoSuchMethod
|
||||
//} catch (FileNotFoundException e) {
|
||||
//e.printStackTrace();
|
||||
//System.exit(1);
|
||||
showError("Problem getting data folder",
|
||||
"Error getting the Arduino data folder.", e);
|
||||
}
|
||||
|
||||
} else if (Base.isWindows()) {
|
||||
// looking for Documents and Settings/blah/Application Data/Arduino
|
||||
|
||||
// this is just based on the other documentation, and eyeballing
|
||||
// that part of the registry.. not confirmed by any msft/msdn docs.
|
||||
// HKEY_CURRENT_USER\Software\Microsoft
|
||||
// \Windows\CurrentVersion\Explorer\Shell Folders
|
||||
// Value Name: AppData
|
||||
// Value Type: REG_SZ
|
||||
// Value Data: path
|
||||
|
||||
try {
|
||||
//RegistryKey topKey = Registry.getTopLevelKey("HKCU");
|
||||
RegistryKey topKey = Registry.HKEY_CURRENT_USER;
|
||||
|
||||
String localKeyPath =
|
||||
"Software\\Microsoft\\Windows\\CurrentVersion" +
|
||||
"\\Explorer\\Shell Folders";
|
||||
RegistryKey localKey = topKey.openSubKey(localKeyPath);
|
||||
String appDataPath = cleanKey(localKey.getStringValue("AppData"));
|
||||
//System.out.println("app data path is " + appDataPath);
|
||||
//System.exit(0);
|
||||
//topKey.closeKey(); // necessary?
|
||||
//localKey.closeKey();
|
||||
|
||||
dataFolder = new File(appDataPath, "Arduino");
|
||||
|
||||
} catch (Exception e) {
|
||||
showError("Problem getting data folder",
|
||||
"Error getting the Arduino data folder.", e);
|
||||
}
|
||||
//return null;
|
||||
|
||||
} else {
|
||||
// otherwise make a .arduino directory int the user's home dir
|
||||
File home = new File(System.getProperty("user.home"));
|
||||
dataFolder = new File(home, ".arduino");
|
||||
}
|
||||
|
||||
// create the folder if it doesn't exist already
|
||||
boolean result = true;
|
||||
if (!dataFolder.exists()) {
|
||||
result = dataFolder.mkdirs();
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
// try the fallback location
|
||||
System.out.println("Using fallback path for settings.");
|
||||
String fallback = Preferences.get("settings.path.fallback");
|
||||
dataFolder = new File(fallback);
|
||||
if (!dataFolder.exists()) {
|
||||
result = dataFolder.mkdirs();
|
||||
}
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
showError("Settings issues",
|
||||
"Arduino cannot run because it could not\n" +
|
||||
"create a folder to store your settings.", null);
|
||||
}
|
||||
|
||||
return dataFolder;
|
||||
}
|
||||
|
||||
|
||||
static public File getSettingsFile(String filename) {
|
||||
return new File(getSettingsFolder(), filename);
|
||||
}
|
||||
|
||||
|
||||
static public File getBuildFolder() {
|
||||
String buildPath = Preferences.get("build.path");
|
||||
if (buildPath != null) return new File(buildPath);
|
||||
|
||||
File folder = new File(getTempFolder(), "build");
|
||||
if (!folder.exists()) folder.mkdirs();
|
||||
return folder;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the path to the platform's temporary folder, by creating
|
||||
* a temporary temporary file and getting its parent folder.
|
||||
*/
|
||||
static public File getTempFolder() {
|
||||
try {
|
||||
File ignored = File.createTempFile("ignored", null);
|
||||
String tempPath = ignored.getParent();
|
||||
ignored.delete();
|
||||
return new File(tempPath);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null; // TODO could we *really* ever reach this?
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
static public void addBuildFolderToClassPath() {
|
||||
String path = getBuildFolder().getAbsolutePath();
|
||||
String jcp = System.getProperty("java.class.path");
|
||||
if (jcp.indexOf(path) == -1) {
|
||||
System.setProperty("java.class.path", path + File.pathSeparator + jcp);
|
||||
//return new File(getProcessingDataFolder(), "build");
|
||||
System.out.println("jcp is now " +
|
||||
System.getProperty("java.class.path"));
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
static public File getDefaultSketchbookFolder() {
|
||||
File sketchbookFolder = null;
|
||||
|
||||
if (Base.isMacOS()) {
|
||||
// looking for /Users/blah/Documents/Arduino
|
||||
|
||||
// carbon folder constants
|
||||
// http://developer.apple.com/documentation/Carbon/Reference/Folder_Manager/folder_manager_ref/constant_6.html#//apple_ref/doc/uid/TP30000238/C006889
|
||||
|
||||
// additional information found int the local file:
|
||||
// /System/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/CarbonCore.framework/Headers/
|
||||
|
||||
// this is the 1.4 version.. but using 1.3 since i have the stubs
|
||||
// import com.apple.eio.*
|
||||
//println(FileManager.findFolder(kUserDomain,
|
||||
// kDomainLibraryFolderType));
|
||||
|
||||
// not clear if i can write to this folder tho..
|
||||
try {
|
||||
MRJOSType domainDocuments = new MRJOSType("docs");
|
||||
//File libraryFolder = MRJFileUtils.findFolder(domainDocuments);
|
||||
|
||||
// for 77, try switching this to the user domain, just to be sure
|
||||
Method findFolderMethod =
|
||||
MRJFileUtils.class.getMethod("findFolder",
|
||||
new Class[] { Short.TYPE,
|
||||
MRJOSType.class });
|
||||
File documentsFolder = (File)
|
||||
findFolderMethod.invoke(null, new Object[] { new Short(kUserDomain),
|
||||
domainDocuments });
|
||||
sketchbookFolder = new File(documentsFolder, "Arduino");
|
||||
|
||||
} catch (Exception e) {
|
||||
showError("sketch folder problem",
|
||||
"Could not locate default sketch folder location.", e);
|
||||
}
|
||||
|
||||
} else if (isWindows()) {
|
||||
// looking for Documents and Settings/blah/My Documents/Arduino
|
||||
// (though using a reg key since it's different on other platforms)
|
||||
|
||||
// http://support.microsoft.com/?kbid=221837&sd=RMVP
|
||||
// The path to the My Documents folder is stored in the
|
||||
// following registry key, where path is the complete path
|
||||
// to your storage location:
|
||||
// HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
|
||||
// Value Name: Personal
|
||||
// Value Type: REG_SZ
|
||||
// Value Data: path
|
||||
|
||||
try {
|
||||
RegistryKey topKey = Registry.HKEY_CURRENT_USER;
|
||||
|
||||
String localKeyPath =
|
||||
"Software\\Microsoft\\Windows\\CurrentVersion" +
|
||||
"\\Explorer\\Shell Folders";
|
||||
RegistryKey localKey = topKey.openSubKey(localKeyPath);
|
||||
String personalPath = cleanKey(localKey.getStringValue("Personal"));
|
||||
//topKey.closeKey(); // necessary?
|
||||
//localKey.closeKey();
|
||||
sketchbookFolder = new File(personalPath, "Arduino");
|
||||
|
||||
} catch (Exception e) {
|
||||
showError("Problem getting documents folder",
|
||||
"Error getting the Arduino sketchbook folder.", e);
|
||||
}
|
||||
|
||||
} else {
|
||||
// on linux (or elsewhere?) prompt the user for the location
|
||||
JFileChooser fc = new JFileChooser();
|
||||
fc.setDialogTitle("Select the folder where " +
|
||||
"Arduino programs should be stored...");
|
||||
//fc.setSelectedFile(new File(sketchbookLocationField.getText()));
|
||||
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
||||
|
||||
int returned = fc.showOpenDialog(new JDialog());
|
||||
if (returned == JFileChooser.APPROVE_OPTION) {
|
||||
//File file = fc.getSelectedFile();
|
||||
//sketchbookLocationField.setText(file.getAbsolutePath());
|
||||
sketchbookFolder = fc.getSelectedFile();
|
||||
|
||||
} else {
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
// create the folder if it doesn't exist already
|
||||
boolean result = true;
|
||||
if (!sketchbookFolder.exists()) {
|
||||
result = sketchbookFolder.mkdirs();
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
// try the fallback location
|
||||
System.out.println("Using fallback path for sketchbook.");
|
||||
String fallback = Preferences.get("sketchbook.path.fallback");
|
||||
sketchbookFolder = new File(fallback);
|
||||
if (!sketchbookFolder.exists()) {
|
||||
result = sketchbookFolder.mkdirs();
|
||||
}
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
showError("error",
|
||||
"Arduino cannot run because it could not\n" +
|
||||
"create a folder to store your sketchbook.", null);
|
||||
}
|
||||
|
||||
return sketchbookFolder;
|
||||
}
|
||||
|
||||
|
||||
static public String cleanKey(String what) {
|
||||
// jnireg seems to be reading the chars as bytes
|
||||
// so maybe be as simple as & 0xff and then running through decoder
|
||||
|
||||
char c[] = what.toCharArray();
|
||||
|
||||
// if chars are in the tooHigh range, it's prolly because
|
||||
// a byte from the jni registry was turned into a char
|
||||
// and there was a sign extension.
|
||||
// e.g. 0xFC (252, umlaut u) became 0xFFFC (65532).
|
||||
// but on a japanese system, maybe this is two-byte and ok?
|
||||
int tooHigh = 65536 - 128;
|
||||
for (int i = 0; i < c.length; i++) {
|
||||
if (c[i] >= tooHigh) c[i] &= 0xff;
|
||||
|
||||
/*
|
||||
if ((c[i] >= 32) && (c[i] < 128)) {
|
||||
System.out.print(c[i]);
|
||||
} else {
|
||||
System.out.print("[" + PApplet.hex(c[i]) + "]");
|
||||
}
|
||||
*/
|
||||
}
|
||||
//System.out.println();
|
||||
return new String(c);
|
||||
}
|
||||
|
||||
|
||||
// .................................................................
|
||||
|
||||
|
||||
/**
|
||||
* Given the reference filename from the keywords list,
|
||||
* builds a URL and passes it to openURL.
|
||||
*/
|
||||
static public void showReference(String referenceFile) {
|
||||
String currentDir = System.getProperty("user.dir");
|
||||
openURL(currentDir + File.separator +
|
||||
"reference" + File.separator +
|
||||
referenceFile + ".html");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implements the cross-platform headache of opening URLs
|
||||
*/
|
||||
static public void openURL(String url) {
|
||||
//System.out.println("opening url " + url);
|
||||
try {
|
||||
if (Base.isWindows()) {
|
||||
// this is not guaranteed to work, because who knows if the
|
||||
// path will always be c:\progra~1 et al. also if the user has
|
||||
// a different browser set as their default (which would
|
||||
// include me) it'd be annoying to be dropped into ie.
|
||||
//Runtime.getRuntime().exec("c:\\progra~1\\intern~1\\iexplore "
|
||||
// + currentDir
|
||||
|
||||
// the following uses a shell execute to launch the .html file
|
||||
// note that under cygwin, the .html files have to be chmodded +x
|
||||
// after they're unpacked from the zip file. i don't know why,
|
||||
// and don't understand what this does in terms of windows
|
||||
// permissions. without the chmod, the command prompt says
|
||||
// "Access is denied" in both cygwin and the "dos" prompt.
|
||||
//Runtime.getRuntime().exec("cmd /c " + currentDir + "\\reference\\" +
|
||||
// referenceFile + ".html");
|
||||
if (url.startsWith("http://")) {
|
||||
// open dos prompt, give it 'start' command, which will
|
||||
// open the url properly. start by itself won't work since
|
||||
// it appears to need cmd
|
||||
Runtime.getRuntime().exec("cmd /c start " + url);
|
||||
} else {
|
||||
// just launching the .html file via the shell works
|
||||
// but make sure to chmod +x the .html files first
|
||||
// also place quotes around it in case there's a space
|
||||
// in the user.dir part of the url
|
||||
Runtime.getRuntime().exec("cmd /c \"" + url + "\"");
|
||||
}
|
||||
|
||||
} else if (Base.isMacOS()) {
|
||||
//com.apple.eio.FileManager.openURL(url);
|
||||
|
||||
if (!url.startsWith("http://")) {
|
||||
// prepend file:// on this guy since it's a file
|
||||
url = "file://" + url;
|
||||
|
||||
// replace spaces with %20 for the file url
|
||||
// otherwise the mac doesn't like to open it
|
||||
// can't just use URLEncoder, since that makes slashes into
|
||||
// %2F characters, which is no good. some might say "useless"
|
||||
if (url.indexOf(' ') != -1) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
char c[] = url.toCharArray();
|
||||
for (int i = 0; i < c.length; i++) {
|
||||
if (c[i] == ' ') {
|
||||
sb.append("%20");
|
||||
} else {
|
||||
sb.append(c[i]);
|
||||
}
|
||||
}
|
||||
url = sb.toString();
|
||||
}
|
||||
}
|
||||
com.apple.mrj.MRJFileUtils.openURL(url);
|
||||
|
||||
} else if (Base.isLinux()) {
|
||||
// how's mozilla sound to ya, laddie?
|
||||
//Runtime.getRuntime().exec(new String[] { "mozilla", url });
|
||||
String browser = Preferences.get("browser");
|
||||
Runtime.getRuntime().exec(new String[] { browser, url });
|
||||
|
||||
} else {
|
||||
System.err.println("unspecified platform");
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
Base.showWarning("Could not open URL",
|
||||
"An error occurred while trying to open\n" + url, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implements the other cross-platform headache of opening
|
||||
* a folder in the machine's native file browser.
|
||||
*/
|
||||
static public void openFolder(File file) {
|
||||
try {
|
||||
String folder = file.getAbsolutePath();
|
||||
|
||||
if (Base.isWindows()) {
|
||||
// doesn't work
|
||||
//Runtime.getRuntime().exec("cmd /c \"" + folder + "\"");
|
||||
|
||||
// works fine on winxp, prolly win2k as well
|
||||
Runtime.getRuntime().exec("explorer \"" + folder + "\"");
|
||||
|
||||
// not tested
|
||||
//Runtime.getRuntime().exec("start explorer \"" + folder + "\"");
|
||||
|
||||
} else if (Base.isMacOS()) {
|
||||
openURL(folder); // handles char replacement, etc
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* "No cookie for you" type messages. Nothing fatal or all that
|
||||
* much of a bummer, but something to notify the user about.
|
||||
*/
|
||||
static public void showMessage(String title, String message) {
|
||||
if (title == null) title = "Message";
|
||||
JOptionPane.showMessageDialog(new Frame(), message, title,
|
||||
JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Non-fatal error message with optional stack trace side dish.
|
||||
*/
|
||||
static public void showWarning(String title, String message,
|
||||
Exception e) {
|
||||
if (title == null) title = "Warning";
|
||||
JOptionPane.showMessageDialog(new Frame(), message, title,
|
||||
JOptionPane.WARNING_MESSAGE);
|
||||
|
||||
//System.err.println(e.toString());
|
||||
if (e != null) e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show an error message that's actually fatal to the program.
|
||||
* This is an error that can't be recovered. Use showWarning()
|
||||
* for errors that allow P5 to continue running.
|
||||
*/
|
||||
static public void showError(String title, String message,
|
||||
Exception e) {
|
||||
if (title == null) title = "Error";
|
||||
JOptionPane.showMessageDialog(new Frame(), message, title,
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
|
||||
if (e != null) e.printStackTrace();
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
|
||||
// ...................................................................
|
||||
|
||||
|
||||
static public Image getImage(String name, Component who) {
|
||||
Image image = null;
|
||||
Toolkit tk = Toolkit.getDefaultToolkit();
|
||||
|
||||
//if ((Base.platform == Base.MACOSX) ||
|
||||
//(Base.platform == Base.MACOS9)) {
|
||||
image = tk.getImage("lib/" + name);
|
||||
//} else {
|
||||
//image = tk.getImage(who.getClass().getResource(name));
|
||||
//}
|
||||
|
||||
//image = tk.getImage("lib/" + name);
|
||||
//URL url = PdeApplet.class.getResource(name);
|
||||
//image = tk.getImage(url);
|
||||
//}
|
||||
//MediaTracker tracker = new MediaTracker(applet);
|
||||
MediaTracker tracker = new MediaTracker(who); //frame);
|
||||
tracker.addImage(image, 0);
|
||||
try {
|
||||
tracker.waitForAll();
|
||||
} catch (InterruptedException e) { }
|
||||
return image;
|
||||
}
|
||||
|
||||
|
||||
static public InputStream getStream(String filename) throws IOException {
|
||||
//if (Base.platform == Base.MACOSX) {
|
||||
// macos doesn't seem to think that files in the lib folder
|
||||
// are part of the resources, unlike windows or linux.
|
||||
// actually, this is only the case when running as a .app,
|
||||
// since it works fine from run.sh, but not Arduino.app
|
||||
return new FileInputStream("lib/" + filename);
|
||||
//}
|
||||
|
||||
// all other, more reasonable operating systems
|
||||
//return cls.getResource(filename).openStream();
|
||||
//return Base.class.getResource(filename).openStream();
|
||||
}
|
||||
|
||||
|
||||
// ...................................................................
|
||||
|
||||
|
||||
static public byte[] grabFile(File file) throws IOException {
|
||||
int size = (int) file.length();
|
||||
FileInputStream input = new FileInputStream(file);
|
||||
byte buffer[] = new byte[size];
|
||||
int offset = 0;
|
||||
int bytesRead;
|
||||
while ((bytesRead = input.read(buffer, offset, size-offset)) != -1) {
|
||||
offset += bytesRead;
|
||||
if (bytesRead == 0) break;
|
||||
}
|
||||
input.close(); // weren't properly being closed
|
||||
input = null;
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
static public void copyFile(File afile, File bfile) throws IOException {
|
||||
InputStream from = new BufferedInputStream(new FileInputStream(afile));
|
||||
OutputStream to = new BufferedOutputStream(new FileOutputStream(bfile));
|
||||
byte[] buffer = new byte[16 * 1024];
|
||||
int bytesRead;
|
||||
while ((bytesRead = from.read(buffer)) != -1) {
|
||||
to.write(buffer, 0, bytesRead);
|
||||
}
|
||||
to.flush();
|
||||
from.close(); // ??
|
||||
from = null;
|
||||
to.close(); // ??
|
||||
to = null;
|
||||
|
||||
bfile.setLastModified(afile.lastModified()); // jdk13+ required
|
||||
//} catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Grab the contents of a file as a string.
|
||||
*/
|
||||
static public String loadFile(File file) throws IOException {
|
||||
// empty code file.. no worries, might be getting filled up later
|
||||
if (file.length() == 0) return "";
|
||||
|
||||
InputStreamReader isr = new InputStreamReader(new FileInputStream(file));
|
||||
BufferedReader reader = new BufferedReader(isr);
|
||||
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
String line = null;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
buffer.append(line);
|
||||
buffer.append('\n');
|
||||
}
|
||||
reader.close();
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Spew the contents of a String object out to a file.
|
||||
*/
|
||||
static public void saveFile(String str,
|
||||
File file) throws IOException {
|
||||
|
||||
ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes());
|
||||
InputStreamReader isr = new InputStreamReader(bis);
|
||||
BufferedReader reader = new BufferedReader(isr);
|
||||
|
||||
FileWriter fw = new FileWriter(file);
|
||||
PrintWriter writer = new PrintWriter(new BufferedWriter(fw));
|
||||
|
||||
String line = null;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
writer.println(line);
|
||||
}
|
||||
writer.flush();
|
||||
writer.close();
|
||||
}
|
||||
|
||||
|
||||
static public void copyDir(File sourceDir,
|
||||
File targetDir) throws IOException {
|
||||
targetDir.mkdirs();
|
||||
String files[] = sourceDir.list();
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if (files[i].equals(".") || files[i].equals("..")) continue;
|
||||
File source = new File(sourceDir, files[i]);
|
||||
File target = new File(targetDir, files[i]);
|
||||
if (source.isDirectory()) {
|
||||
//target.mkdirs();
|
||||
copyDir(source, target);
|
||||
target.setLastModified(source.lastModified());
|
||||
} else {
|
||||
copyFile(source, target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove all files in a directory and the directory itself.
|
||||
*/
|
||||
static public void removeDir(File dir) {
|
||||
if (dir.exists()) {
|
||||
removeDescendants(dir);
|
||||
dir.delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Recursively remove all files within a directory,
|
||||
* used with removeDir(), or when the contents of a dir
|
||||
* should be removed, but not the directory itself.
|
||||
* (i.e. when cleaning temp files from lib/build)
|
||||
*/
|
||||
static public void removeDescendants(File dir) {
|
||||
if (!dir.exists()) return;
|
||||
|
||||
String files[] = dir.list();
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if (files[i].equals(".") || files[i].equals("..")) continue;
|
||||
File dead = new File(dir, files[i]);
|
||||
if (!dead.isDirectory()) {
|
||||
if (!Preferences.getBoolean("compiler.save_build_files")) {
|
||||
if (!dead.delete()) {
|
||||
// temporarily disabled
|
||||
//System.err.println("couldn't delete " + dead);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
removeDir(dead);
|
||||
//dead.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calculate the size of the contents of a folder.
|
||||
* Used to determine whether sketches are empty or not.
|
||||
* Note that the function calls itself recursively.
|
||||
*/
|
||||
static public int calcFolderSize(File folder) {
|
||||
int size = 0;
|
||||
|
||||
String files[] = folder.list();
|
||||
// null if folder doesn't exist, happens when deleting sketch
|
||||
if (files == null) return -1;
|
||||
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if (files[i].equals(".") || (files[i].equals("..")) ||
|
||||
files[i].equals(".DS_Store")) continue;
|
||||
File fella = new File(folder, files[i]);
|
||||
if (fella.isDirectory()) {
|
||||
size += calcFolderSize(fella);
|
||||
} else {
|
||||
size += (int) fella.length();
|
||||
}
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Equivalent to the one in PApplet, but static (die() is removed)
|
||||
*/
|
||||
static public String[] loadStrings(File file) {
|
||||
try {
|
||||
FileInputStream input = new FileInputStream(file);
|
||||
BufferedReader reader =
|
||||
new BufferedReader(new InputStreamReader(input));
|
||||
|
||||
String lines[] = new String[100];
|
||||
int lineCount = 0;
|
||||
String line = null;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
if (lineCount == lines.length) {
|
||||
String temp[] = new String[lineCount << 1];
|
||||
System.arraycopy(lines, 0, temp, 0, lineCount);
|
||||
lines = temp;
|
||||
}
|
||||
lines[lineCount++] = line;
|
||||
}
|
||||
reader.close();
|
||||
|
||||
if (lineCount == lines.length) {
|
||||
return lines;
|
||||
}
|
||||
|
||||
// resize array to appropraite amount for these lines
|
||||
String output[] = new String[lineCount];
|
||||
System.arraycopy(lines, 0, output, 0, lineCount);
|
||||
return output;
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
// STRINGS
|
||||
|
||||
|
||||
/**
|
||||
* Remove whitespace characters from the beginning and ending
|
||||
* of a String. Works like String.trim() but includes the
|
||||
* unicode nbsp character as well.
|
||||
*/
|
||||
static public String trim(String str) {
|
||||
return str.replace('\u00A0', ' ').trim();
|
||||
|
||||
/*
|
||||
int left = 0;
|
||||
int right = str.length() - 1;
|
||||
|
||||
while ((left <= right) &&
|
||||
(WHITESPACE.indexOf(str.charAt(left)) != -1)) left++;
|
||||
if (left == right) return "";
|
||||
|
||||
while (WHITESPACE.indexOf(str.charAt(right)) != -1) --right;
|
||||
|
||||
return str.substring(left, right-left+1);
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Join an array of Strings together as a single String,
|
||||
* separated by the whatever's passed in for the separator.
|
||||
*/
|
||||
static public String join(String str[], char separator) {
|
||||
return join(str, String.valueOf(separator));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Join an array of Strings together as a single String,
|
||||
* separated by the whatever's passed in for the separator.
|
||||
* <P>
|
||||
* To use this on numbers, first pass the array to nf() or nfs()
|
||||
* to get a list of String objects, then use join on that.
|
||||
* <PRE>
|
||||
* e.g. String stuff[] = { "apple", "bear", "cat" };
|
||||
* String list = join(stuff, ", ");
|
||||
* // list is now "apple, bear, cat"</PRE>
|
||||
*/
|
||||
static public String join(String str[], String separator) {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
for (int i = 0; i < str.length; i++) {
|
||||
if (i != 0) buffer.append(separator);
|
||||
buffer.append(str[i]);
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Split the provided String at wherever whitespace occurs.
|
||||
* Multiple whitespace (extra spaces or tabs or whatever)
|
||||
* between items will count as a single break.
|
||||
* <P>
|
||||
* The whitespace characters are "\t\n\r\f", which are the defaults
|
||||
* for java.util.StringTokenizer, plus the unicode non-breaking space
|
||||
* character, which is found commonly on files created by or used
|
||||
* in conjunction with Mac OS X (character 160, or 0x00A0 in hex).
|
||||
* <PRE>
|
||||
* i.e. split("a b") -> { "a", "b" }
|
||||
* split("a b") -> { "a", "b" }
|
||||
* split("a\tb") -> { "a", "b" }
|
||||
* split("a \t b ") -> { "a", "b" }</PRE>
|
||||
*/
|
||||
static public String[] split(String what) {
|
||||
return split(what, WHITESPACE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Splits a string into pieces, using any of the chars in the
|
||||
* String 'delim' as separator characters. For instance,
|
||||
* in addition to white space, you might want to treat commas
|
||||
* as a separator. The delimeter characters won't appear in
|
||||
* the returned String array.
|
||||
* <PRE>
|
||||
* i.e. split("a, b", " ,") -> { "a", "b" }
|
||||
* </PRE>
|
||||
* To include all the whitespace possibilities, use the variable
|
||||
* WHITESPACE, found in PConstants:
|
||||
* <PRE>
|
||||
* i.e. split("a | b", WHITESPACE + "|"); -> { "a", "b" }</PRE>
|
||||
*/
|
||||
static public String[] split(String what, String delim) {
|
||||
StringTokenizer toker = new StringTokenizer(what, delim);
|
||||
String pieces[] = new String[toker.countTokens()];
|
||||
|
||||
int index = 0;
|
||||
while (toker.hasMoreTokens()) {
|
||||
pieces[index++] = toker.nextToken();
|
||||
}
|
||||
return pieces;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Split a string into pieces along a specific character.
|
||||
* Most commonly used to break up a String along tab characters.
|
||||
* <P>
|
||||
* This operates differently than the others, where the
|
||||
* single delimeter is the only breaking point, and consecutive
|
||||
* delimeters will produce an empty string (""). This way,
|
||||
* one can split on tab characters, but maintain the column
|
||||
* alignments (of say an excel file) where there are empty columns.
|
||||
*/
|
||||
static public String[] split(String what, char delim) {
|
||||
// do this so that the exception occurs inside the user's
|
||||
// program, rather than appearing to be a bug inside split()
|
||||
if (what == null) return null;
|
||||
//return split(what, String.valueOf(delim)); // huh
|
||||
|
||||
char chars[] = what.toCharArray();
|
||||
int splitCount = 0; //1;
|
||||
for (int i = 0; i < chars.length; i++) {
|
||||
if (chars[i] == delim) splitCount++;
|
||||
}
|
||||
// make sure that there is something in the input string
|
||||
//if (chars.length > 0) {
|
||||
// if the last char is a delimeter, get rid of it..
|
||||
//if (chars[chars.length-1] == delim) splitCount--;
|
||||
// on second thought, i don't agree with this, will disable
|
||||
//}
|
||||
if (splitCount == 0) {
|
||||
String splits[] = new String[1];
|
||||
splits[0] = new String(what);
|
||||
return splits;
|
||||
}
|
||||
//int pieceCount = splitCount + 1;
|
||||
String splits[] = new String[splitCount + 1];
|
||||
int splitIndex = 0;
|
||||
int startIndex = 0;
|
||||
for (int i = 0; i < chars.length; i++) {
|
||||
if (chars[i] == delim) {
|
||||
splits[splitIndex++] =
|
||||
new String(chars, startIndex, i-startIndex);
|
||||
startIndex = i + 1;
|
||||
}
|
||||
}
|
||||
//if (startIndex != chars.length) {
|
||||
splits[splitIndex] =
|
||||
new String(chars, startIndex, chars.length-startIndex);
|
||||
//}
|
||||
return splits;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
|
||||
/*
|
||||
Part of the Arduino project - http://arduino.berlios.de
|
||||
|
||||
|
||||
|
||||
Based on processing http://www.processing.org
|
||||
Copyright (c) 2004-05 Ben Fry and Casey Reas
|
||||
Copyright (c) 2001-04 Massachusetts Institute of Technology
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
package processing.app;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.net.*;
|
||||
import java.util.*;
|
||||
import java.util.zip.*;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.*;
|
||||
import javax.swing.text.*;
|
||||
import javax.swing.undo.*;
|
||||
|
||||
import com.apple.mrj.*;
|
||||
import com.ice.jni.registry.*;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The base class for the main Arduino application.
|
||||
* <P>
|
||||
* Primary role of this class is for platform identification and
|
||||
* general interaction with the system (launching URLs, loading
|
||||
* files and images, etc) that comes from that.
|
||||
*/
|
||||
public class Base {
|
||||
static final int VERSION = 1;
|
||||
static final String VERSION_NAME = "0003 Alpha";
|
||||
|
||||
static public int platform;
|
||||
|
||||
// platform IDs for platform
|
||||
|
||||
static final int WINDOWS = 1;
|
||||
static final int MACOS9 = 2;
|
||||
static final int MACOSX = 3;
|
||||
static final int LINUX = 4;
|
||||
static final int OTHER = 0;
|
||||
|
||||
|
||||
// moved from PApplet
|
||||
// in preperation of detaching the IDE from the
|
||||
// Arduino core classes
|
||||
|
||||
/**
|
||||
* Current platform in use.
|
||||
* <P>
|
||||
* Equivalent to System.getProperty("os.name"), just used internally.
|
||||
*/
|
||||
static public String platformName = System.getProperty("os.name");
|
||||
|
||||
static {
|
||||
// figure out which operating system
|
||||
// this has to be first, since editor needs to know
|
||||
|
||||
if (platformName.toLowerCase().indexOf("mac") != -1) {
|
||||
// can only check this property if running on a mac
|
||||
// on a pc it throws a security exception and kills the applet
|
||||
// (but on the mac it does just fine)
|
||||
if (System.getProperty("mrj.version") != null) { // running on a mac
|
||||
platform = (platformName.equals("Mac OS X")) ?
|
||||
MACOSX : MACOS9;
|
||||
}
|
||||
|
||||
} else {
|
||||
String osname = System.getProperty("os.name");
|
||||
|
||||
if (osname.indexOf("Windows") != -1) {
|
||||
platform = WINDOWS;
|
||||
|
||||
} else if (osname.equals("Linux")) { // true for the ibm vm
|
||||
platform = LINUX;
|
||||
|
||||
} else {
|
||||
platform = OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// used by split, all the standard whitespace chars
|
||||
// (uncludes unicode nbsp, that little bostage)
|
||||
|
||||
static final String WHITESPACE = " \t\n\r\f\u00A0";
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Path of filename opened on the command line,
|
||||
* or via the MRJ open document handler.
|
||||
*/
|
||||
static String openedAtStartup;
|
||||
|
||||
Editor editor;
|
||||
|
||||
|
||||
static public void main(String args[]) {
|
||||
|
||||
// make sure that this is running on java 1.4
|
||||
|
||||
//if (PApplet.javaVersion < 1.4f) {
|
||||
//System.err.println("no way man");
|
||||
// Base.showError("Need to install Java 1.4",
|
||||
// "This version of Arduino requires \n" +
|
||||
// "Java 1.4 or later to run properly.\n" +
|
||||
// "Please visit java.com to upgrade.", null);
|
||||
// }
|
||||
|
||||
|
||||
// grab any opened file from the command line
|
||||
|
||||
if (args.length == 1) {
|
||||
Base.openedAtStartup = args[0];
|
||||
}
|
||||
|
||||
|
||||
// register a temporary/early version of the mrj open document handler,
|
||||
// because the event may be lost (sometimes, not always) by the time
|
||||
// that Editor is properly constructed.
|
||||
|
||||
MRJOpenDocumentHandler startupOpen = new MRJOpenDocumentHandler() {
|
||||
public void handleOpenFile(File file) {
|
||||
// this will only get set once.. later will be handled
|
||||
// by the Editor version of this fella
|
||||
if (Base.openedAtStartup == null) {
|
||||
//System.out.println("handling outside open file: " + file);
|
||||
Base.openedAtStartup = file.getAbsolutePath();
|
||||
}
|
||||
}
|
||||
};
|
||||
MRJApplicationUtils.registerOpenDocumentHandler(startupOpen);
|
||||
|
||||
Base app = new Base();
|
||||
}
|
||||
|
||||
|
||||
public Base() {
|
||||
|
||||
// set the look and feel before opening the window
|
||||
|
||||
try {
|
||||
if (Base.isLinux()) {
|
||||
// linux is by default (motif?) even uglier than metal
|
||||
// actually, i'm using native menus, so they're ugly and
|
||||
// motif-looking. ick. need to fix this.
|
||||
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
|
||||
} else {
|
||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// build the editor object
|
||||
editor = new Editor();
|
||||
|
||||
// get things rawkin
|
||||
editor.pack();
|
||||
|
||||
// has to be here to set window size properly
|
||||
editor.restorePreferences();
|
||||
|
||||
// show the window
|
||||
editor.show();
|
||||
|
||||
// check for updates
|
||||
if (Preferences.getBoolean("update.check")) {
|
||||
new UpdateCheck(editor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// .................................................................
|
||||
|
||||
|
||||
/**
|
||||
* returns true if the Arduino is running on a Mac OS machine,
|
||||
* specifically a Mac OS X machine because it doesn't un on OS 9 anymore.
|
||||
*/
|
||||
static public boolean isMacOS() {
|
||||
return platform == MACOSX;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* returns true if running on windows.
|
||||
*/
|
||||
static public boolean isWindows() {
|
||||
|
||||
return platform == WINDOWS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* true if running on linux.
|
||||
*/
|
||||
static public boolean isLinux() {
|
||||
|
||||
return platform == LINUX;
|
||||
}
|
||||
|
||||
|
||||
// .................................................................
|
||||
|
||||
|
||||
static final int kDocumentsFolderType =
|
||||
('d' << 24) | ('o' << 16) | ('c' << 8) | 's';
|
||||
static final int kPreferencesFolderType =
|
||||
('p' << 24) | ('r' << 16) | ('e' << 8) | 'f';
|
||||
static final int kDomainLibraryFolderType =
|
||||
('d' << 24) | ('l' << 16) | ('i' << 8) | 'b';
|
||||
static final short kUserDomain = -32763;
|
||||
|
||||
|
||||
static public File getSettingsFolder() {
|
||||
File dataFolder = null;
|
||||
|
||||
String pref = Preferences.get("settings.path");
|
||||
if (pref != null) {
|
||||
dataFolder = new File(pref);
|
||||
|
||||
} else if (Base.isMacOS()) {
|
||||
// carbon folder constants
|
||||
// http://developer.apple.com/documentation/Carbon/Reference
|
||||
// /Folder_Manager/folder_manager_ref/constant_6.html#/
|
||||
// /apple_ref/doc/uid/TP30000238/C006889
|
||||
|
||||
// additional information found int the local file:
|
||||
// /System/Library/Frameworks/CoreServices.framework
|
||||
// /Versions/Current/Frameworks/CarbonCore.framework/Headers/
|
||||
|
||||
// this is the 1.4 version.. but using 1.3 since i have the stubs
|
||||
// import com.apple.eio.*
|
||||
//println(FileManager.findFolder(kUserDomain,
|
||||
// kDomainLibraryFolderType));
|
||||
|
||||
// not clear if i can write to this folder tho..
|
||||
try {
|
||||
/*
|
||||
if (false) {
|
||||
// this is because the mrjtoolkit stubs don't have the
|
||||
// thows exception around them
|
||||
new FileInputStream("ignored");
|
||||
}
|
||||
*/
|
||||
|
||||
// this method has to be dynamically loaded, because
|
||||
MRJOSType domainLibrary = new MRJOSType("dlib");
|
||||
Method findFolderMethod =
|
||||
MRJFileUtils.class.getMethod("findFolder",
|
||||
new Class[] { Short.TYPE,
|
||||
MRJOSType.class });
|
||||
File libraryFolder = (File)
|
||||
findFolderMethod.invoke(null, new Object[] { new Short(kUserDomain),
|
||||
domainLibrary });
|
||||
|
||||
dataFolder = new File(libraryFolder, "Arduino");
|
||||
|
||||
} catch (Exception e) {
|
||||
// this could be FileNotFound or NoSuchMethod
|
||||
//} catch (FileNotFoundException e) {
|
||||
//e.printStackTrace();
|
||||
//System.exit(1);
|
||||
showError("Problem getting data folder",
|
||||
"Error getting the Arduino data folder.", e);
|
||||
}
|
||||
|
||||
} else if (Base.isWindows()) {
|
||||
// looking for Documents and Settings/blah/Application Data/Arduino
|
||||
|
||||
// this is just based on the other documentation, and eyeballing
|
||||
// that part of the registry.. not confirmed by any msft/msdn docs.
|
||||
// HKEY_CURRENT_USER\Software\Microsoft
|
||||
// \Windows\CurrentVersion\Explorer\Shell Folders
|
||||
// Value Name: AppData
|
||||
// Value Type: REG_SZ
|
||||
// Value Data: path
|
||||
|
||||
try {
|
||||
//RegistryKey topKey = Registry.getTopLevelKey("HKCU");
|
||||
RegistryKey topKey = Registry.HKEY_CURRENT_USER;
|
||||
|
||||
String localKeyPath =
|
||||
"Software\\Microsoft\\Windows\\CurrentVersion" +
|
||||
"\\Explorer\\Shell Folders";
|
||||
RegistryKey localKey = topKey.openSubKey(localKeyPath);
|
||||
String appDataPath = cleanKey(localKey.getStringValue("AppData"));
|
||||
//System.out.println("app data path is " + appDataPath);
|
||||
//System.exit(0);
|
||||
//topKey.closeKey(); // necessary?
|
||||
//localKey.closeKey();
|
||||
|
||||
dataFolder = new File(appDataPath, "Arduino");
|
||||
|
||||
} catch (Exception e) {
|
||||
showError("Problem getting data folder",
|
||||
"Error getting the Arduino data folder.", e);
|
||||
}
|
||||
//return null;
|
||||
|
||||
} else {
|
||||
// otherwise make a .arduino directory int the user's home dir
|
||||
File home = new File(System.getProperty("user.home"));
|
||||
dataFolder = new File(home, ".arduino");
|
||||
}
|
||||
|
||||
// create the folder if it doesn't exist already
|
||||
boolean result = true;
|
||||
if (!dataFolder.exists()) {
|
||||
result = dataFolder.mkdirs();
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
// try the fallback location
|
||||
System.out.println("Using fallback path for settings.");
|
||||
String fallback = Preferences.get("settings.path.fallback");
|
||||
dataFolder = new File(fallback);
|
||||
if (!dataFolder.exists()) {
|
||||
result = dataFolder.mkdirs();
|
||||
}
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
showError("Settings issues",
|
||||
"Arduino cannot run because it could not\n" +
|
||||
"create a folder to store your settings.", null);
|
||||
}
|
||||
|
||||
return dataFolder;
|
||||
}
|
||||
|
||||
|
||||
static public File getSettingsFile(String filename) {
|
||||
return new File(getSettingsFolder(), filename);
|
||||
}
|
||||
|
||||
|
||||
static public File getBuildFolder() {
|
||||
String buildPath = Preferences.get("build.path");
|
||||
if (buildPath != null) return new File(buildPath);
|
||||
|
||||
File folder = new File(getTempFolder(), "build");
|
||||
if (!folder.exists()) folder.mkdirs();
|
||||
return folder;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the path to the platform's temporary folder, by creating
|
||||
* a temporary temporary file and getting its parent folder.
|
||||
*/
|
||||
static public File getTempFolder() {
|
||||
try {
|
||||
File ignored = File.createTempFile("ignored", null);
|
||||
String tempPath = ignored.getParent();
|
||||
ignored.delete();
|
||||
return new File(tempPath);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null; // TODO could we *really* ever reach this?
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
static public void addBuildFolderToClassPath() {
|
||||
String path = getBuildFolder().getAbsolutePath();
|
||||
String jcp = System.getProperty("java.class.path");
|
||||
if (jcp.indexOf(path) == -1) {
|
||||
System.setProperty("java.class.path", path + File.pathSeparator + jcp);
|
||||
//return new File(getProcessingDataFolder(), "build");
|
||||
System.out.println("jcp is now " +
|
||||
System.getProperty("java.class.path"));
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
static public File getDefaultSketchbookFolder() {
|
||||
File sketchbookFolder = null;
|
||||
|
||||
if (Base.isMacOS()) {
|
||||
// looking for /Users/blah/Documents/Arduino
|
||||
|
||||
// carbon folder constants
|
||||
// http://developer.apple.com/documentation/Carbon/Reference/Folder_Manager/folder_manager_ref/constant_6.html#//apple_ref/doc/uid/TP30000238/C006889
|
||||
|
||||
// additional information found int the local file:
|
||||
// /System/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/CarbonCore.framework/Headers/
|
||||
|
||||
// this is the 1.4 version.. but using 1.3 since i have the stubs
|
||||
// import com.apple.eio.*
|
||||
//println(FileManager.findFolder(kUserDomain,
|
||||
// kDomainLibraryFolderType));
|
||||
|
||||
// not clear if i can write to this folder tho..
|
||||
try {
|
||||
MRJOSType domainDocuments = new MRJOSType("docs");
|
||||
//File libraryFolder = MRJFileUtils.findFolder(domainDocuments);
|
||||
|
||||
// for 77, try switching this to the user domain, just to be sure
|
||||
Method findFolderMethod =
|
||||
MRJFileUtils.class.getMethod("findFolder",
|
||||
new Class[] { Short.TYPE,
|
||||
MRJOSType.class });
|
||||
File documentsFolder = (File)
|
||||
findFolderMethod.invoke(null, new Object[] { new Short(kUserDomain),
|
||||
domainDocuments });
|
||||
sketchbookFolder = new File(documentsFolder, "Arduino");
|
||||
|
||||
} catch (Exception e) {
|
||||
showError("sketch folder problem",
|
||||
"Could not locate default sketch folder location.", e);
|
||||
}
|
||||
|
||||
} else if (isWindows()) {
|
||||
// looking for Documents and Settings/blah/My Documents/Arduino
|
||||
// (though using a reg key since it's different on other platforms)
|
||||
|
||||
// http://support.microsoft.com/?kbid=221837&sd=RMVP
|
||||
// The path to the My Documents folder is stored in the
|
||||
// following registry key, where path is the complete path
|
||||
// to your storage location:
|
||||
// HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
|
||||
// Value Name: Personal
|
||||
// Value Type: REG_SZ
|
||||
// Value Data: path
|
||||
|
||||
try {
|
||||
RegistryKey topKey = Registry.HKEY_CURRENT_USER;
|
||||
|
||||
String localKeyPath =
|
||||
"Software\\Microsoft\\Windows\\CurrentVersion" +
|
||||
"\\Explorer\\Shell Folders";
|
||||
RegistryKey localKey = topKey.openSubKey(localKeyPath);
|
||||
String personalPath = cleanKey(localKey.getStringValue("Personal"));
|
||||
//topKey.closeKey(); // necessary?
|
||||
//localKey.closeKey();
|
||||
sketchbookFolder = new File(personalPath, "Arduino");
|
||||
|
||||
} catch (Exception e) {
|
||||
showError("Problem getting documents folder",
|
||||
"Error getting the Arduino sketchbook folder.", e);
|
||||
}
|
||||
|
||||
} else {
|
||||
// on linux (or elsewhere?) prompt the user for the location
|
||||
JFileChooser fc = new JFileChooser();
|
||||
fc.setDialogTitle("Select the folder where " +
|
||||
"Arduino programs should be stored...");
|
||||
//fc.setSelectedFile(new File(sketchbookLocationField.getText()));
|
||||
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
||||
|
||||
int returned = fc.showOpenDialog(new JDialog());
|
||||
if (returned == JFileChooser.APPROVE_OPTION) {
|
||||
//File file = fc.getSelectedFile();
|
||||
//sketchbookLocationField.setText(file.getAbsolutePath());
|
||||
sketchbookFolder = fc.getSelectedFile();
|
||||
|
||||
} else {
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
// create the folder if it doesn't exist already
|
||||
boolean result = true;
|
||||
if (!sketchbookFolder.exists()) {
|
||||
result = sketchbookFolder.mkdirs();
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
// try the fallback location
|
||||
System.out.println("Using fallback path for sketchbook.");
|
||||
String fallback = Preferences.get("sketchbook.path.fallback");
|
||||
sketchbookFolder = new File(fallback);
|
||||
if (!sketchbookFolder.exists()) {
|
||||
result = sketchbookFolder.mkdirs();
|
||||
}
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
showError("error",
|
||||
"Arduino cannot run because it could not\n" +
|
||||
"create a folder to store your sketchbook.", null);
|
||||
}
|
||||
|
||||
return sketchbookFolder;
|
||||
}
|
||||
|
||||
|
||||
static public String cleanKey(String what) {
|
||||
// jnireg seems to be reading the chars as bytes
|
||||
// so maybe be as simple as & 0xff and then running through decoder
|
||||
|
||||
char c[] = what.toCharArray();
|
||||
|
||||
// if chars are in the tooHigh range, it's prolly because
|
||||
// a byte from the jni registry was turned into a char
|
||||
// and there was a sign extension.
|
||||
// e.g. 0xFC (252, umlaut u) became 0xFFFC (65532).
|
||||
// but on a japanese system, maybe this is two-byte and ok?
|
||||
int tooHigh = 65536 - 128;
|
||||
for (int i = 0; i < c.length; i++) {
|
||||
if (c[i] >= tooHigh) c[i] &= 0xff;
|
||||
|
||||
/*
|
||||
if ((c[i] >= 32) && (c[i] < 128)) {
|
||||
System.out.print(c[i]);
|
||||
} else {
|
||||
System.out.print("[" + PApplet.hex(c[i]) + "]");
|
||||
}
|
||||
*/
|
||||
}
|
||||
//System.out.println();
|
||||
return new String(c);
|
||||
}
|
||||
|
||||
|
||||
// .................................................................
|
||||
|
||||
|
||||
/**
|
||||
* Given the reference filename from the keywords list,
|
||||
* builds a URL and passes it to openURL.
|
||||
*/
|
||||
static public void showReference(String referenceFile) {
|
||||
String currentDir = System.getProperty("user.dir");
|
||||
openURL(currentDir + File.separator +
|
||||
"reference" + File.separator +
|
||||
referenceFile + ".html");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implements the cross-platform headache of opening URLs
|
||||
*/
|
||||
static public void openURL(String url) {
|
||||
//System.out.println("opening url " + url);
|
||||
try {
|
||||
if (Base.isWindows()) {
|
||||
// this is not guaranteed to work, because who knows if the
|
||||
// path will always be c:\progra~1 et al. also if the user has
|
||||
// a different browser set as their default (which would
|
||||
// include me) it'd be annoying to be dropped into ie.
|
||||
//Runtime.getRuntime().exec("c:\\progra~1\\intern~1\\iexplore "
|
||||
// + currentDir
|
||||
|
||||
// the following uses a shell execute to launch the .html file
|
||||
// note that under cygwin, the .html files have to be chmodded +x
|
||||
// after they're unpacked from the zip file. i don't know why,
|
||||
// and don't understand what this does in terms of windows
|
||||
// permissions. without the chmod, the command prompt says
|
||||
// "Access is denied" in both cygwin and the "dos" prompt.
|
||||
//Runtime.getRuntime().exec("cmd /c " + currentDir + "\\reference\\" +
|
||||
// referenceFile + ".html");
|
||||
if (url.startsWith("http://")) {
|
||||
// open dos prompt, give it 'start' command, which will
|
||||
// open the url properly. start by itself won't work since
|
||||
// it appears to need cmd
|
||||
Runtime.getRuntime().exec("cmd /c start " + url);
|
||||
} else {
|
||||
// just launching the .html file via the shell works
|
||||
// but make sure to chmod +x the .html files first
|
||||
// also place quotes around it in case there's a space
|
||||
// in the user.dir part of the url
|
||||
Runtime.getRuntime().exec("cmd /c \"" + url + "\"");
|
||||
}
|
||||
|
||||
} else if (Base.isMacOS()) {
|
||||
//com.apple.eio.FileManager.openURL(url);
|
||||
|
||||
if (!url.startsWith("http://")) {
|
||||
// prepend file:// on this guy since it's a file
|
||||
url = "file://" + url;
|
||||
|
||||
// replace spaces with %20 for the file url
|
||||
// otherwise the mac doesn't like to open it
|
||||
// can't just use URLEncoder, since that makes slashes into
|
||||
// %2F characters, which is no good. some might say "useless"
|
||||
if (url.indexOf(' ') != -1) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
char c[] = url.toCharArray();
|
||||
for (int i = 0; i < c.length; i++) {
|
||||
if (c[i] == ' ') {
|
||||
sb.append("%20");
|
||||
} else {
|
||||
sb.append(c[i]);
|
||||
}
|
||||
}
|
||||
url = sb.toString();
|
||||
}
|
||||
}
|
||||
com.apple.mrj.MRJFileUtils.openURL(url);
|
||||
|
||||
} else if (Base.isLinux()) {
|
||||
// how's mozilla sound to ya, laddie?
|
||||
//Runtime.getRuntime().exec(new String[] { "mozilla", url });
|
||||
String browser = Preferences.get("browser");
|
||||
Runtime.getRuntime().exec(new String[] { browser, url });
|
||||
|
||||
} else {
|
||||
System.err.println("unspecified platform");
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
Base.showWarning("Could not open URL",
|
||||
"An error occurred while trying to open\n" + url, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implements the other cross-platform headache of opening
|
||||
* a folder in the machine's native file browser.
|
||||
*/
|
||||
static public void openFolder(File file) {
|
||||
try {
|
||||
String folder = file.getAbsolutePath();
|
||||
|
||||
if (Base.isWindows()) {
|
||||
// doesn't work
|
||||
//Runtime.getRuntime().exec("cmd /c \"" + folder + "\"");
|
||||
|
||||
// works fine on winxp, prolly win2k as well
|
||||
Runtime.getRuntime().exec("explorer \"" + folder + "\"");
|
||||
|
||||
// not tested
|
||||
//Runtime.getRuntime().exec("start explorer \"" + folder + "\"");
|
||||
|
||||
} else if (Base.isMacOS()) {
|
||||
openURL(folder); // handles char replacement, etc
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* "No cookie for you" type messages. Nothing fatal or all that
|
||||
* much of a bummer, but something to notify the user about.
|
||||
*/
|
||||
static public void showMessage(String title, String message) {
|
||||
if (title == null) title = "Message";
|
||||
JOptionPane.showMessageDialog(new Frame(), message, title,
|
||||
JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Non-fatal error message with optional stack trace side dish.
|
||||
*/
|
||||
static public void showWarning(String title, String message,
|
||||
Exception e) {
|
||||
if (title == null) title = "Warning";
|
||||
JOptionPane.showMessageDialog(new Frame(), message, title,
|
||||
JOptionPane.WARNING_MESSAGE);
|
||||
|
||||
//System.err.println(e.toString());
|
||||
if (e != null) e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show an error message that's actually fatal to the program.
|
||||
* This is an error that can't be recovered. Use showWarning()
|
||||
* for errors that allow P5 to continue running.
|
||||
*/
|
||||
static public void showError(String title, String message,
|
||||
Exception e) {
|
||||
if (title == null) title = "Error";
|
||||
JOptionPane.showMessageDialog(new Frame(), message, title,
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
|
||||
if (e != null) e.printStackTrace();
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
|
||||
// ...................................................................
|
||||
|
||||
|
||||
static public Image getImage(String name, Component who) {
|
||||
Image image = null;
|
||||
Toolkit tk = Toolkit.getDefaultToolkit();
|
||||
|
||||
//if ((Base.platform == Base.MACOSX) ||
|
||||
//(Base.platform == Base.MACOS9)) {
|
||||
image = tk.getImage("lib/" + name);
|
||||
//} else {
|
||||
//image = tk.getImage(who.getClass().getResource(name));
|
||||
//}
|
||||
|
||||
//image = tk.getImage("lib/" + name);
|
||||
//URL url = PdeApplet.class.getResource(name);
|
||||
//image = tk.getImage(url);
|
||||
//}
|
||||
//MediaTracker tracker = new MediaTracker(applet);
|
||||
MediaTracker tracker = new MediaTracker(who); //frame);
|
||||
tracker.addImage(image, 0);
|
||||
try {
|
||||
tracker.waitForAll();
|
||||
} catch (InterruptedException e) { }
|
||||
return image;
|
||||
}
|
||||
|
||||
|
||||
static public InputStream getStream(String filename) throws IOException {
|
||||
//if (Base.platform == Base.MACOSX) {
|
||||
// macos doesn't seem to think that files in the lib folder
|
||||
// are part of the resources, unlike windows or linux.
|
||||
// actually, this is only the case when running as a .app,
|
||||
// since it works fine from run.sh, but not Arduino.app
|
||||
return new FileInputStream("lib/" + filename);
|
||||
//}
|
||||
|
||||
// all other, more reasonable operating systems
|
||||
//return cls.getResource(filename).openStream();
|
||||
//return Base.class.getResource(filename).openStream();
|
||||
}
|
||||
|
||||
|
||||
// ...................................................................
|
||||
|
||||
|
||||
static public byte[] grabFile(File file) throws IOException {
|
||||
int size = (int) file.length();
|
||||
FileInputStream input = new FileInputStream(file);
|
||||
byte buffer[] = new byte[size];
|
||||
int offset = 0;
|
||||
int bytesRead;
|
||||
while ((bytesRead = input.read(buffer, offset, size-offset)) != -1) {
|
||||
offset += bytesRead;
|
||||
if (bytesRead == 0) break;
|
||||
}
|
||||
input.close(); // weren't properly being closed
|
||||
input = null;
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
static public void copyFile(File afile, File bfile) throws IOException {
|
||||
InputStream from = new BufferedInputStream(new FileInputStream(afile));
|
||||
OutputStream to = new BufferedOutputStream(new FileOutputStream(bfile));
|
||||
byte[] buffer = new byte[16 * 1024];
|
||||
int bytesRead;
|
||||
while ((bytesRead = from.read(buffer)) != -1) {
|
||||
to.write(buffer, 0, bytesRead);
|
||||
}
|
||||
to.flush();
|
||||
from.close(); // ??
|
||||
from = null;
|
||||
to.close(); // ??
|
||||
to = null;
|
||||
|
||||
bfile.setLastModified(afile.lastModified()); // jdk13+ required
|
||||
//} catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Grab the contents of a file as a string.
|
||||
*/
|
||||
static public String loadFile(File file) throws IOException {
|
||||
// empty code file.. no worries, might be getting filled up later
|
||||
if (file.length() == 0) return "";
|
||||
|
||||
InputStreamReader isr = new InputStreamReader(new FileInputStream(file));
|
||||
BufferedReader reader = new BufferedReader(isr);
|
||||
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
String line = null;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
buffer.append(line);
|
||||
buffer.append('\n');
|
||||
}
|
||||
reader.close();
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Spew the contents of a String object out to a file.
|
||||
*/
|
||||
static public void saveFile(String str,
|
||||
File file) throws IOException {
|
||||
|
||||
ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes());
|
||||
InputStreamReader isr = new InputStreamReader(bis);
|
||||
BufferedReader reader = new BufferedReader(isr);
|
||||
|
||||
FileWriter fw = new FileWriter(file);
|
||||
PrintWriter writer = new PrintWriter(new BufferedWriter(fw));
|
||||
|
||||
String line = null;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
writer.println(line);
|
||||
}
|
||||
writer.flush();
|
||||
writer.close();
|
||||
}
|
||||
|
||||
|
||||
static public void copyDir(File sourceDir,
|
||||
File targetDir) throws IOException {
|
||||
targetDir.mkdirs();
|
||||
String files[] = sourceDir.list();
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if (files[i].equals(".") || files[i].equals("..")) continue;
|
||||
File source = new File(sourceDir, files[i]);
|
||||
File target = new File(targetDir, files[i]);
|
||||
if (source.isDirectory()) {
|
||||
//target.mkdirs();
|
||||
copyDir(source, target);
|
||||
target.setLastModified(source.lastModified());
|
||||
} else {
|
||||
copyFile(source, target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove all files in a directory and the directory itself.
|
||||
*/
|
||||
static public void removeDir(File dir) {
|
||||
if (dir.exists()) {
|
||||
removeDescendants(dir);
|
||||
dir.delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Recursively remove all files within a directory,
|
||||
* used with removeDir(), or when the contents of a dir
|
||||
* should be removed, but not the directory itself.
|
||||
* (i.e. when cleaning temp files from lib/build)
|
||||
*/
|
||||
static public void removeDescendants(File dir) {
|
||||
if (!dir.exists()) return;
|
||||
|
||||
String files[] = dir.list();
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if (files[i].equals(".") || files[i].equals("..")) continue;
|
||||
File dead = new File(dir, files[i]);
|
||||
if (!dead.isDirectory()) {
|
||||
if (!Preferences.getBoolean("compiler.save_build_files")) {
|
||||
if (!dead.delete()) {
|
||||
// temporarily disabled
|
||||
//System.err.println("couldn't delete " + dead);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
removeDir(dead);
|
||||
//dead.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calculate the size of the contents of a folder.
|
||||
* Used to determine whether sketches are empty or not.
|
||||
* Note that the function calls itself recursively.
|
||||
*/
|
||||
static public int calcFolderSize(File folder) {
|
||||
int size = 0;
|
||||
|
||||
String files[] = folder.list();
|
||||
// null if folder doesn't exist, happens when deleting sketch
|
||||
if (files == null) return -1;
|
||||
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if (files[i].equals(".") || (files[i].equals("..")) ||
|
||||
files[i].equals(".DS_Store")) continue;
|
||||
File fella = new File(folder, files[i]);
|
||||
if (fella.isDirectory()) {
|
||||
size += calcFolderSize(fella);
|
||||
} else {
|
||||
size += (int) fella.length();
|
||||
}
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Equivalent to the one in PApplet, but static (die() is removed)
|
||||
*/
|
||||
static public String[] loadStrings(File file) {
|
||||
try {
|
||||
FileInputStream input = new FileInputStream(file);
|
||||
BufferedReader reader =
|
||||
new BufferedReader(new InputStreamReader(input));
|
||||
|
||||
String lines[] = new String[100];
|
||||
int lineCount = 0;
|
||||
String line = null;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
if (lineCount == lines.length) {
|
||||
String temp[] = new String[lineCount << 1];
|
||||
System.arraycopy(lines, 0, temp, 0, lineCount);
|
||||
lines = temp;
|
||||
}
|
||||
lines[lineCount++] = line;
|
||||
}
|
||||
reader.close();
|
||||
|
||||
if (lineCount == lines.length) {
|
||||
return lines;
|
||||
}
|
||||
|
||||
// resize array to appropraite amount for these lines
|
||||
String output[] = new String[lineCount];
|
||||
System.arraycopy(lines, 0, output, 0, lineCount);
|
||||
return output;
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
// STRINGS
|
||||
|
||||
|
||||
/**
|
||||
* Remove whitespace characters from the beginning and ending
|
||||
* of a String. Works like String.trim() but includes the
|
||||
* unicode nbsp character as well.
|
||||
*/
|
||||
static public String trim(String str) {
|
||||
return str.replace('\u00A0', ' ').trim();
|
||||
|
||||
/*
|
||||
int left = 0;
|
||||
int right = str.length() - 1;
|
||||
|
||||
while ((left <= right) &&
|
||||
(WHITESPACE.indexOf(str.charAt(left)) != -1)) left++;
|
||||
if (left == right) return "";
|
||||
|
||||
while (WHITESPACE.indexOf(str.charAt(right)) != -1) --right;
|
||||
|
||||
return str.substring(left, right-left+1);
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Join an array of Strings together as a single String,
|
||||
* separated by the whatever's passed in for the separator.
|
||||
*/
|
||||
static public String join(String str[], char separator) {
|
||||
return join(str, String.valueOf(separator));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Join an array of Strings together as a single String,
|
||||
* separated by the whatever's passed in for the separator.
|
||||
* <P>
|
||||
* To use this on numbers, first pass the array to nf() or nfs()
|
||||
* to get a list of String objects, then use join on that.
|
||||
* <PRE>
|
||||
* e.g. String stuff[] = { "apple", "bear", "cat" };
|
||||
* String list = join(stuff, ", ");
|
||||
* // list is now "apple, bear, cat"</PRE>
|
||||
*/
|
||||
static public String join(String str[], String separator) {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
for (int i = 0; i < str.length; i++) {
|
||||
if (i != 0) buffer.append(separator);
|
||||
buffer.append(str[i]);
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Split the provided String at wherever whitespace occurs.
|
||||
* Multiple whitespace (extra spaces or tabs or whatever)
|
||||
* between items will count as a single break.
|
||||
* <P>
|
||||
* The whitespace characters are "\t\n\r\f", which are the defaults
|
||||
* for java.util.StringTokenizer, plus the unicode non-breaking space
|
||||
* character, which is found commonly on files created by or used
|
||||
* in conjunction with Mac OS X (character 160, or 0x00A0 in hex).
|
||||
* <PRE>
|
||||
* i.e. split("a b") -> { "a", "b" }
|
||||
* split("a b") -> { "a", "b" }
|
||||
* split("a\tb") -> { "a", "b" }
|
||||
* split("a \t b ") -> { "a", "b" }</PRE>
|
||||
*/
|
||||
static public String[] split(String what) {
|
||||
return split(what, WHITESPACE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Splits a string into pieces, using any of the chars in the
|
||||
* String 'delim' as separator characters. For instance,
|
||||
* in addition to white space, you might want to treat commas
|
||||
* as a separator. The delimeter characters won't appear in
|
||||
* the returned String array.
|
||||
* <PRE>
|
||||
* i.e. split("a, b", " ,") -> { "a", "b" }
|
||||
* </PRE>
|
||||
* To include all the whitespace possibilities, use the variable
|
||||
* WHITESPACE, found in PConstants:
|
||||
* <PRE>
|
||||
* i.e. split("a | b", WHITESPACE + "|"); -> { "a", "b" }</PRE>
|
||||
*/
|
||||
static public String[] split(String what, String delim) {
|
||||
StringTokenizer toker = new StringTokenizer(what, delim);
|
||||
String pieces[] = new String[toker.countTokens()];
|
||||
|
||||
int index = 0;
|
||||
while (toker.hasMoreTokens()) {
|
||||
pieces[index++] = toker.nextToken();
|
||||
}
|
||||
return pieces;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Split a string into pieces along a specific character.
|
||||
* Most commonly used to break up a String along tab characters.
|
||||
* <P>
|
||||
* This operates differently than the others, where the
|
||||
* single delimeter is the only breaking point, and consecutive
|
||||
* delimeters will produce an empty string (""). This way,
|
||||
* one can split on tab characters, but maintain the column
|
||||
* alignments (of say an excel file) where there are empty columns.
|
||||
*/
|
||||
static public String[] split(String what, char delim) {
|
||||
// do this so that the exception occurs inside the user's
|
||||
// program, rather than appearing to be a bug inside split()
|
||||
if (what == null) return null;
|
||||
//return split(what, String.valueOf(delim)); // huh
|
||||
|
||||
char chars[] = what.toCharArray();
|
||||
int splitCount = 0; //1;
|
||||
for (int i = 0; i < chars.length; i++) {
|
||||
if (chars[i] == delim) splitCount++;
|
||||
}
|
||||
// make sure that there is something in the input string
|
||||
//if (chars.length > 0) {
|
||||
// if the last char is a delimeter, get rid of it..
|
||||
//if (chars[chars.length-1] == delim) splitCount--;
|
||||
// on second thought, i don't agree with this, will disable
|
||||
//}
|
||||
if (splitCount == 0) {
|
||||
String splits[] = new String[1];
|
||||
splits[0] = new String(what);
|
||||
return splits;
|
||||
}
|
||||
//int pieceCount = splitCount + 1;
|
||||
String splits[] = new String[splitCount + 1];
|
||||
int splitIndex = 0;
|
||||
int startIndex = 0;
|
||||
for (int i = 0; i < chars.length; i++) {
|
||||
if (chars[i] == delim) {
|
||||
splits[splitIndex++] =
|
||||
new String(chars, startIndex, i-startIndex);
|
||||
startIndex = i + 1;
|
||||
}
|
||||
}
|
||||
//if (startIndex != chars.length) {
|
||||
splits[splitIndex] =
|
||||
new String(chars, startIndex, chars.length-startIndex);
|
||||
//}
|
||||
return splits;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
$Id:$
|
||||
$Id$
|
||||
*/
|
||||
|
||||
package processing.app;
|
||||
|
135
app/Editor.java
135
app/Editor.java
@ -82,7 +82,7 @@ public class Editor extends JFrame
|
||||
EditorHeader header;
|
||||
EditorStatus status;
|
||||
EditorConsole console;
|
||||
|
||||
Serial serialPort;
|
||||
JSplitPane splitPane;
|
||||
JPanel consolePanel;
|
||||
|
||||
@ -107,12 +107,13 @@ public class Editor extends JFrame
|
||||
JMenuItem saveMenuItem;
|
||||
JMenuItem saveAsMenuItem;
|
||||
|
||||
|
||||
//ButtonGroup serialGroup;
|
||||
JMenu serialSubMenu;
|
||||
JMenu serialRateSubMenu;
|
||||
SerialMenuListener serialMenuListener;
|
||||
|
||||
//
|
||||
|
||||
boolean debugging;
|
||||
boolean running;
|
||||
boolean presenting;
|
||||
|
||||
@ -655,9 +656,10 @@ public class Editor extends JFrame
|
||||
JMenuItem item;
|
||||
JMenuItem rbMenuItem;
|
||||
JMenuItem cbMenuItem;
|
||||
SerialMenuListener sml = new SerialMenuListener();
|
||||
SerialRateMenuListener srml = new SerialRateMenuListener();
|
||||
// Enumeration portRates = {"9600","19200","38400","57600","115200"};
|
||||
|
||||
serialMenuListener = new SerialMenuListener();
|
||||
|
||||
JMenu menu = new JMenu("Tools");
|
||||
|
||||
@ -675,55 +677,17 @@ public class Editor extends JFrame
|
||||
|
||||
serialSubMenu = new JMenu("Serial port");
|
||||
|
||||
item = newJMenuItem("Update List", 'E', false);
|
||||
item.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// if (debug) displayResult("Serial Port List Updated");
|
||||
//updateSerial();
|
||||
}
|
||||
});
|
||||
// item = newJMenuItem("Update List", 'E', false);
|
||||
// item.addActionListener(new ActionListener() {
|
||||
// public void actionPerformed(ActionEvent e) {
|
||||
// // if (debug) displayResult("Serial Port List Updated");
|
||||
// //updateSerial();
|
||||
// }
|
||||
// });
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ButtonGroup group = new ButtonGroup();
|
||||
|
||||
|
||||
// getting list of ports
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
for (Enumeration enumeration = CommPortIdentifier.getPortIdentifiers(); enumeration.hasMoreElements();)
|
||||
{
|
||||
CommPortIdentifier commportidentifier = (CommPortIdentifier)enumeration.nextElement();
|
||||
if (commportidentifier.getPortType() == CommPortIdentifier.PORT_SERIAL)
|
||||
{
|
||||
String curr_port = commportidentifier.getName();
|
||||
rbMenuItem = new JCheckBoxMenuItem(curr_port, curr_port.equals(Preferences.get("serial.port")));
|
||||
rbMenuItem.addActionListener(sml);
|
||||
group.add(rbMenuItem);
|
||||
serialSubMenu.add(rbMenuItem);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
catch (Exception exception)
|
||||
{
|
||||
System.out.println("error retrieving port list");
|
||||
exception.printStackTrace();
|
||||
}
|
||||
|
||||
if (serialSubMenu.getItemCount() == 0) {
|
||||
serialSubMenu.setEnabled(false);
|
||||
}
|
||||
|
||||
//serialSubMenu.addSeparator();
|
||||
//serialSubMenu.add(item);
|
||||
|
||||
menu.add(serialSubMenu);
|
||||
//serialGroup = new ButtonGroup();
|
||||
populateSerialMenu();
|
||||
menu.add(serialSubMenu);
|
||||
|
||||
// End of The serial options
|
||||
|
||||
@ -735,7 +699,7 @@ public class Editor extends JFrame
|
||||
|
||||
//serialSubMenu.add(item);
|
||||
//serialSubMenu.addSeparator();
|
||||
group = new ButtonGroup();
|
||||
ButtonGroup group = new ButtonGroup();
|
||||
|
||||
int curr_rate = Preferences.getInteger("serial.download_rate");
|
||||
|
||||
@ -755,9 +719,55 @@ public class Editor extends JFrame
|
||||
serialRateSubMenu.add(rbMenuItem);
|
||||
|
||||
menu.add(serialRateSubMenu);
|
||||
|
||||
menu.addMenuListener(new MenuListener() {
|
||||
public void menuCanceled(MenuEvent e) {}
|
||||
public void menuDeselected(MenuEvent e) {}
|
||||
public void menuSelected(MenuEvent e) {
|
||||
populateSerialMenu();
|
||||
}
|
||||
});
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
protected void populateSerialMenu() {
|
||||
// getting list of ports
|
||||
|
||||
JMenuItem rbMenuItem;
|
||||
|
||||
serialSubMenu.removeAll();
|
||||
|
||||
try
|
||||
{
|
||||
for (Enumeration enumeration = CommPortIdentifier.getPortIdentifiers(); enumeration.hasMoreElements();)
|
||||
{
|
||||
CommPortIdentifier commportidentifier = (CommPortIdentifier)enumeration.nextElement();
|
||||
if (commportidentifier.getPortType() == CommPortIdentifier.PORT_SERIAL)
|
||||
{
|
||||
String curr_port = commportidentifier.getName();
|
||||
rbMenuItem = new JCheckBoxMenuItem(curr_port, curr_port.equals(Preferences.get("serial.port")));
|
||||
rbMenuItem.addActionListener(serialMenuListener);
|
||||
//serialGroup.add(rbMenuItem);
|
||||
serialSubMenu.add(rbMenuItem);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
catch (Exception exception)
|
||||
{
|
||||
System.out.println("error retrieving port list");
|
||||
exception.printStackTrace();
|
||||
}
|
||||
|
||||
if (serialSubMenu.getItemCount() == 0) {
|
||||
serialSubMenu.setEnabled(false);
|
||||
}
|
||||
|
||||
//serialSubMenu.addSeparator();
|
||||
//serialSubMenu.add(item);
|
||||
}
|
||||
|
||||
|
||||
protected JMenu buildHelpMenu() {
|
||||
@ -1292,6 +1302,17 @@ public class Editor extends JFrame
|
||||
}
|
||||
|
||||
|
||||
public void handleSerial() {
|
||||
if (!debugging) {
|
||||
console.clear();
|
||||
serialPort = new Serial(true);
|
||||
debugging = true;
|
||||
} else {
|
||||
doStop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void handleStop() { // called by menu or buttons
|
||||
if (presenting) {
|
||||
doClose();
|
||||
@ -1305,6 +1326,10 @@ public class Editor extends JFrame
|
||||
* Stop the applet but don't kill its window.
|
||||
*/
|
||||
public void doStop() {
|
||||
if (debugging) {
|
||||
serialPort.dispose();
|
||||
debugging = false;
|
||||
}
|
||||
if (runtime != null) runtime.stop();
|
||||
if (watcher != null) watcher.stop();
|
||||
message(EMPTY);
|
||||
@ -1695,8 +1720,8 @@ public class Editor extends JFrame
|
||||
* hitting export twice, quickly, and horking things up.
|
||||
*/
|
||||
synchronized public void handleExport() {
|
||||
//if(debugging)
|
||||
//doStop();
|
||||
if(debugging)
|
||||
doStop();
|
||||
console.clear();
|
||||
//String what = sketch.isLibrary() ? "Applet" : "Library";
|
||||
//message("Exporting " + what + "...");
|
||||
|
@ -37,7 +37,7 @@ import javax.swing.event.*;
|
||||
public class EditorButtons extends JComponent implements MouseInputListener {
|
||||
|
||||
static final String title[] = {
|
||||
"Compile", "Stop", "New", "Open", "Save", "Export"
|
||||
"Compile", "Stop", "New", "Open", "Save", "Export", "Serial Monitor"
|
||||
};
|
||||
|
||||
static final int BUTTON_COUNT = title.length;
|
||||
@ -52,6 +52,7 @@ public class EditorButtons extends JComponent implements MouseInputListener {
|
||||
static final int OPEN = 3;
|
||||
static final int SAVE = 4;
|
||||
static final int EXPORT = 5;
|
||||
static final int SERIAL = 6;
|
||||
|
||||
static final int INACTIVE = 0;
|
||||
static final int ROLLOVER = 1;
|
||||
@ -103,6 +104,7 @@ public class EditorButtons extends JComponent implements MouseInputListener {
|
||||
which[buttonCount++] = OPEN;
|
||||
which[buttonCount++] = SAVE;
|
||||
which[buttonCount++] = EXPORT;
|
||||
which[buttonCount++] = SERIAL;
|
||||
|
||||
currentRollover = -1;
|
||||
|
||||
@ -339,6 +341,7 @@ public class EditorButtons extends JComponent implements MouseInputListener {
|
||||
case NEW: editor.handleNew(e.isShiftDown()); break;
|
||||
case SAVE: editor.handleSave(); break;
|
||||
case EXPORT: editor.handleExport(); break;
|
||||
case SERIAL: editor.handleSerial(); break;
|
||||
}
|
||||
currentSelection = -1;
|
||||
}
|
||||
|
@ -59,59 +59,41 @@ public class Serial implements SerialPortEventListener {
|
||||
int bufferIndex;
|
||||
int bufferLast;
|
||||
|
||||
|
||||
// defaults
|
||||
|
||||
static String dname = Preferences.get("serial.port"); //"COM1";
|
||||
static int drate = 9600;
|
||||
static char dparity = 'N';
|
||||
static int ddatabits = 8;
|
||||
static float dstopbits = 1;
|
||||
|
||||
/*
|
||||
public void setProperties(Properties props) {
|
||||
dname =
|
||||
props.getProperty("serial.port", dname);
|
||||
drate =
|
||||
Integer.parseInt(props.getProperty("serial.rate", "9600"));
|
||||
dparity =
|
||||
props.getProperty("serial.parity", "N").charAt(0);
|
||||
ddatabits =
|
||||
Integer.parseInt(props.getProperty("serial.databits", "8"));
|
||||
dstopbits =
|
||||
new Float(props.getProperty("serial.stopbits", "1")).floatValue();
|
||||
}
|
||||
*/
|
||||
|
||||
public void setProperties() {
|
||||
//System.out.println("setting serial properties");
|
||||
dname = Preferences.get("serial.port");
|
||||
drate = Preferences.getInteger("serial.debug_rate");
|
||||
dparity = Preferences.get("serial.parity").charAt(0);
|
||||
ddatabits = Preferences.getInteger("serial.databits");
|
||||
dstopbits = new Float(Preferences.get("serial.stopbits")).floatValue();
|
||||
}
|
||||
|
||||
public Serial(boolean monitor) {
|
||||
this(dname, drate, dparity, ddatabits, dstopbits);
|
||||
this(Preferences.get("serial.port"),
|
||||
Preferences.getInteger("serial.debug_rate"),
|
||||
Preferences.get("serial.parity").charAt(0),
|
||||
Preferences.getInteger("serial.databits"),
|
||||
new Float(Preferences.get("serial.stopbits")).floatValue());
|
||||
this.monitor = monitor;
|
||||
}
|
||||
|
||||
public Serial() {
|
||||
//setProperties();
|
||||
this(dname, drate, dparity, ddatabits, dstopbits);
|
||||
this(Preferences.get("serial.port"),
|
||||
Preferences.getInteger("serial.debug_rate"),
|
||||
Preferences.get("serial.parity").charAt(0),
|
||||
Preferences.getInteger("serial.databits"),
|
||||
new Float(Preferences.get("serial.stopbits")).floatValue());
|
||||
}
|
||||
|
||||
public Serial(int irate) {
|
||||
this(dname, irate, dparity, ddatabits, dstopbits);
|
||||
this(Preferences.get("serial.port"), irate,
|
||||
Preferences.get("serial.parity").charAt(0),
|
||||
Preferences.getInteger("serial.databits"),
|
||||
new Float(Preferences.get("serial.stopbits")).floatValue());
|
||||
}
|
||||
|
||||
public Serial(String iname, int irate) {
|
||||
this(iname, irate, dparity, ddatabits, dstopbits);
|
||||
this(iname, irate, Preferences.get("serial.parity").charAt(0),
|
||||
Preferences.getInteger("serial.databits"),
|
||||
new Float(Preferences.get("serial.stopbits")).floatValue());
|
||||
}
|
||||
|
||||
public Serial(String iname) {
|
||||
this(iname, drate, dparity, ddatabits, dstopbits);
|
||||
this(iname, Preferences.getInteger("serial.debug_rate"),
|
||||
Preferences.get("serial.parity").charAt(0),
|
||||
Preferences.getInteger("serial.databits"),
|
||||
new Float(Preferences.get("serial.stopbits")).floatValue());
|
||||
}
|
||||
|
||||
public Serial(String iname, int irate,
|
||||
|
@ -20,7 +20,7 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
$Id:$
|
||||
$Id$
|
||||
*/
|
||||
|
||||
package processing.app;
|
||||
|
@ -21,7 +21,7 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
$Id:$
|
||||
$Id$
|
||||
*/
|
||||
|
||||
package processing.app;
|
||||
|
@ -21,7 +21,7 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
$Id:$
|
||||
$Id$
|
||||
*/
|
||||
|
||||
package processing.app;
|
||||
|
@ -4,7 +4,7 @@ package antlr;
|
||||
* Project led by Terence Parr at http://www.jGuru.com
|
||||
* Software rights: http://www.antlr.org/RIGHTS.html
|
||||
*
|
||||
* $Id: ExtendedCommonASTWithHiddenTokens.java,v 1.1.1.1 2005/06/22 22:18:14 h Exp $
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
|
@ -15,7 +15,7 @@ import javax.swing.text.Segment;
|
||||
* C token marker.
|
||||
*
|
||||
* @author Slava Pestov
|
||||
* @version $Id: CTokenMarker.java,v 1.1 2005/04/09 02:30:37 benfry Exp $
|
||||
* @version $Id$
|
||||
*/
|
||||
public class CTokenMarker extends TokenMarker
|
||||
{
|
||||
|
@ -19,7 +19,7 @@ import java.util.StringTokenizer;
|
||||
* The default input handler. It maps sequences of keystrokes into actions
|
||||
* and inserts key typed events into the text area.
|
||||
* @author Slava Pestov
|
||||
* @version $Id: DefaultInputHandler.java,v 1.2 2005/05/11 08:34:16 benfry Exp $
|
||||
* @version $Id$
|
||||
*/
|
||||
public class DefaultInputHandler extends InputHandler
|
||||
{
|
||||
|
@ -24,7 +24,7 @@ import java.util.*;
|
||||
* to the implementations of this class to do so.
|
||||
*
|
||||
* @author Slava Pestov
|
||||
* @version $Id: InputHandler.java,v 1.1 2005/04/09 02:30:37 benfry Exp $
|
||||
* @version $Id$
|
||||
* @see org.gjt.sp.jedit.textarea.DefaultInputHandler
|
||||
*/
|
||||
public abstract class InputHandler extends KeyAdapter
|
||||
|
@ -52,7 +52,7 @@ import java.util.Vector;
|
||||
* + "}");</pre>
|
||||
*
|
||||
* @author Slava Pestov
|
||||
* @version $Id: JEditTextArea.java,v 1.5 2005/05/10 00:29:05 benfry Exp $
|
||||
* @version $Id$
|
||||
*/
|
||||
public class JEditTextArea extends JComponent
|
||||
{
|
||||
|
@ -20,7 +20,7 @@ import javax.swing.text.Segment;
|
||||
* This class is used by <code>CTokenMarker</code> to map keywords to ids.
|
||||
*
|
||||
* @author Slava Pestov, Mike Dillon
|
||||
* @version $Id: KeywordMap.java,v 1.1 2005/04/09 02:30:37 benfry Exp $
|
||||
* @version $Id$
|
||||
*/
|
||||
public class KeywordMap
|
||||
{
|
||||
|
@ -18,7 +18,7 @@ import javax.swing.undo.UndoableEdit;
|
||||
* system.
|
||||
*
|
||||
* @author Slava Pestov
|
||||
* @version $Id: SyntaxDocument.java,v 1.1 2005/04/09 02:30:37 benfry Exp $
|
||||
* @version $Id$
|
||||
*/
|
||||
public class SyntaxDocument extends PlainDocument
|
||||
{
|
||||
|
@ -16,7 +16,7 @@ import java.util.StringTokenizer;
|
||||
* A simple text style class. It can specify the color, italic flag,
|
||||
* and bold flag of a run of text.
|
||||
* @author Slava Pestov
|
||||
* @version $Id: SyntaxStyle.java,v 1.1 2005/04/09 02:30:37 benfry Exp $
|
||||
* @version $Id$
|
||||
*/
|
||||
public class SyntaxStyle
|
||||
{
|
||||
|
@ -18,7 +18,7 @@ import java.awt.*;
|
||||
* subsystem.
|
||||
*
|
||||
* @author Slava Pestov
|
||||
* @version $Id: SyntaxUtilities.java,v 1.1 2005/04/09 02:30:37 benfry Exp $
|
||||
* @version $Id$
|
||||
*/
|
||||
public class SyntaxUtilities
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ import java.awt.*;
|
||||
* The text area repaint manager. It performs double buffering and paints
|
||||
* lines of text.
|
||||
* @author Slava Pestov
|
||||
* @version $Id: TextAreaPainter.java,v 1.3 2005/05/10 01:17:21 benfry Exp $
|
||||
* @version $Id$
|
||||
*/
|
||||
public class TextAreaPainter extends JComponent implements TabExpander
|
||||
{
|
||||
|
@ -14,7 +14,7 @@ import javax.swing.text.*;
|
||||
/**
|
||||
* Class with several utility functions used by the text area component.
|
||||
* @author Slava Pestov
|
||||
* @version $Id: TextUtilities.java,v 1.1 2005/04/09 02:30:37 benfry Exp $
|
||||
* @version $Id$
|
||||
*/
|
||||
public class TextUtilities
|
||||
{
|
||||
|
@ -17,7 +17,7 @@ package processing.app.syntax;
|
||||
* token in the text, and a pointer to the next token in the list.
|
||||
*
|
||||
* @author Slava Pestov
|
||||
* @version $Id: Token.java,v 1.1 2005/04/09 02:30:37 benfry Exp $
|
||||
* @version $Id$
|
||||
*/
|
||||
public class Token
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ import java.util.*;
|
||||
* cached.
|
||||
*
|
||||
* @author Slava Pestov
|
||||
* @version $Id: TokenMarker.java,v 1.1 2005/04/09 02:30:37 benfry Exp $
|
||||
* @version $Id$
|
||||
*
|
||||
* @see org.gjt.sp.jedit.syntax.Token
|
||||
*/
|
||||
|
@ -121,4 +121,4 @@ the code, but all the other annoying crap that the build scripts do)
|
||||
then maybe we could switch to it. It's all about reaching some kind
|
||||
of critical mass.
|
||||
|
||||
$Id:$
|
||||
$Id$
|
||||
|
@ -30,7 +30,7 @@ else
|
||||
mkdir -p work/examples
|
||||
|
||||
#need to replace this with the linux native library for RXTX
|
||||
cp ../../lib/librxtxSerial.so work/
|
||||
cp dist/librxtxSerial.so work/
|
||||
|
||||
cp dist/arduino work/
|
||||
|
||||
|
1167
build/macosx/Arduino.xcodeproj/project.pbxproj
Normal file
1167
build/macosx/Arduino.xcodeproj/project.pbxproj
Normal file
@ -0,0 +1,1167 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 42;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXAggregateTarget section */
|
||||
33FFFE1C0965BBEF0016AC38 /* Dist */ = {
|
||||
isa = PBXAggregateTarget;
|
||||
buildConfigurationList = 33FFFE1F0965BC300016AC38 /* Build configuration list for PBXAggregateTarget "Dist" */;
|
||||
buildPhases = (
|
||||
33FFFE1D0965BC050016AC38 /* CopyFiles */,
|
||||
33FF070C0965BF760016AC38 /* CopyFiles */,
|
||||
33FF07130965BFA80016AC38 /* CopyFiles */,
|
||||
33FF071D0965C1C20016AC38 /* CopyFiles */,
|
||||
33FF07170965BFFE0016AC38 /* ShellScript */,
|
||||
);
|
||||
buildSettings = {
|
||||
OPTIMIZATION_CFLAGS = "";
|
||||
OTHER_CFLAGS = "";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_REZFLAGS = "";
|
||||
PRODUCT_NAME = Arduino;
|
||||
SECTORDER_FLAGS = "";
|
||||
WARNING_CFLAGS = (
|
||||
"-Wmost",
|
||||
"-Wno-four-char-constants",
|
||||
"-Wno-unknown-pragmas",
|
||||
);
|
||||
};
|
||||
dependencies = (
|
||||
);
|
||||
name = Dist;
|
||||
productName = Arduino;
|
||||
};
|
||||
/* End PBXAggregateTarget section */
|
||||
|
||||
/* Begin PBXApplicationTarget section */
|
||||
33AF61680965C4C600B514A9 /* App */ = {
|
||||
isa = PBXApplicationTarget;
|
||||
buildConfigurationList = 33AF616B0965C4CB00B514A9 /* Build configuration list for PBXApplicationTarget "App" */;
|
||||
buildPhases = (
|
||||
33AF61640965C4C600B514A9 /* Sources */,
|
||||
33AF61650965C4C600B514A9 /* Resources */,
|
||||
33AF61660965C4C600B514A9 /* JavaArchive */,
|
||||
33AF61670965C4C600B514A9 /* Frameworks */,
|
||||
33CF03C809662DA200F2C9A9 /* CopyFiles */,
|
||||
);
|
||||
buildSettings = {
|
||||
JAVA_COMPILER = /usr/bin/javac;
|
||||
JAVA_COMPILER_FLAGS = "";
|
||||
JAVA_ONLY = YES;
|
||||
JAVA_SOURCE_SUBDIR = .;
|
||||
OPTIMIZATION_CFLAGS = "";
|
||||
OTHER_CFLAGS = "";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_REZFLAGS = "";
|
||||
PRODUCT_NAME = App;
|
||||
SECTORDER_FLAGS = "";
|
||||
WARNING_CFLAGS = (
|
||||
"-Wmost",
|
||||
"-Wno-four-char-constants",
|
||||
"-Wno-unknown-pragmas",
|
||||
);
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
dependencies = (
|
||||
33AF61710965C51E00B514A9 /* PBXTargetDependency */,
|
||||
);
|
||||
name = App;
|
||||
productInstallPath = "$(USER_APPS_DIR)";
|
||||
productName = App;
|
||||
productReference = 33DD8FB6096AC8DA0013AF8F /* Arduino.app */;
|
||||
productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
||||
<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
|
||||
<plist version=\"1.0\">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string></string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string></string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>arduino.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string></string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Arduino</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string></string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.0.1d1</string>
|
||||
<key>Java</key>
|
||||
<dict>
|
||||
<key>ClassPath</key>
|
||||
<array>
|
||||
<string>$JAVAROOT/antlr.jar</string>
|
||||
<string>$JAVAROOT/Arduino.jar</string>
|
||||
<string>$JAVAROOT/oro.jar</string>
|
||||
<string>$JAVAROOT/mrj.jar</string>
|
||||
<string>$JAVAROOT/registry.jar</string>
|
||||
<string>$JAVAROOT/RXTXcomm.jar</string>
|
||||
</array>
|
||||
<key>JVMVersion</key>
|
||||
<string>1.4+</string>
|
||||
<key>MainClass</key>
|
||||
<string>processing.app.Base</string>
|
||||
<key>Properties</key>
|
||||
<dict>
|
||||
<key>apple.laf.useScreenMenuBar</key>
|
||||
<string>true</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
";
|
||||
};
|
||||
/* End PBXApplicationTarget section */
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
330B21540968180400345666 /* librxtxSerial.jnilib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 330B21530968180400345666 /* librxtxSerial.jnilib */; };
|
||||
33AF61760965C54B00B514A9 /* PreprocessorInfoChannel.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE3D0965BD110016AC38 /* PreprocessorInfoChannel.java */; };
|
||||
33AF61770965C54B00B514A9 /* EditorListener.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE2C0965BD110016AC38 /* EditorListener.java */; };
|
||||
33AF61780965C54B00B514A9 /* LineObject.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE3A0965BD110016AC38 /* LineObject.java */; };
|
||||
33AF61790965C54B00B514A9 /* Serial.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE590965BD110016AC38 /* Serial.java */; };
|
||||
33AF617A0965C54B00B514A9 /* TextUtilities.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE6D0965BD110016AC38 /* TextUtilities.java */; };
|
||||
33AF617B0965C54B00B514A9 /* EditorConsole.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE290965BD110016AC38 /* EditorConsole.java */; };
|
||||
33AF617C0965C54B00B514A9 /* TokenMarker.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE6F0965BD110016AC38 /* TokenMarker.java */; };
|
||||
33AF617D0965C54B00B514A9 /* MessageSiphon.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE310965BD110016AC38 /* MessageSiphon.java */; };
|
||||
33AF617E0965C54B00B514A9 /* FindReplace.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE2E0965BD110016AC38 /* FindReplace.java */; };
|
||||
33AF617F0965C54B00B514A9 /* SketchCode.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE5C0965BD110016AC38 /* SketchCode.java */; };
|
||||
33AF61800965C54B00B514A9 /* EditorLineStatus.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE2B0965BD110016AC38 /* EditorLineStatus.java */; };
|
||||
33AF61810965C54B00B514A9 /* EditorHeader.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE2A0965BD110016AC38 /* EditorHeader.java */; };
|
||||
33AF61820965C54B00B514A9 /* EditorButtons.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE280965BD100016AC38 /* EditorButtons.java */; };
|
||||
33AF61830965C54B00B514A9 /* SyntaxStyle.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE690965BD110016AC38 /* SyntaxStyle.java */; };
|
||||
33AF61840965C54B00B514A9 /* Uploader.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE740965BD110016AC38 /* Uploader.java */; };
|
||||
33AF61850965C54B00B514A9 /* RunnerException.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE580965BD110016AC38 /* RunnerException.java */; };
|
||||
33AF61860965C54B00B514A9 /* WParser.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE4E0965BD110016AC38 /* WParser.java */; };
|
||||
33AF61870965C54B00B514A9 /* TextAreaPainter.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE6C0965BD110016AC38 /* TextAreaPainter.java */; };
|
||||
33AF61880965C54B00B514A9 /* Sketchbook.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE5B0965BD110016AC38 /* Sketchbook.java */; };
|
||||
33AF61890965C54B00B514A9 /* EditorStatus.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE2D0965BD110016AC38 /* EditorStatus.java */; };
|
||||
33AF618A0965C54B00B514A9 /* WTokenTypes.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE4F0965BD110016AC38 /* WTokenTypes.java */; };
|
||||
33AF618B0965C54B00B514A9 /* TextAreaDefaults.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE6B0965BD110016AC38 /* TextAreaDefaults.java */; };
|
||||
33AF618C0965C54B00B514A9 /* PdePreprocessor.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE3C0965BD110016AC38 /* PdePreprocessor.java */; };
|
||||
33AF618D0965C54B00B514A9 /* CSymbolTable.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE350965BD110016AC38 /* CSymbolTable.java */; };
|
||||
33AF618E0965C54B00B514A9 /* SketchHistory.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE5D0965BD110016AC38 /* SketchHistory.java */; };
|
||||
33AF618F0965C54B00B514A9 /* RunnerClassLoader.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE570965BD110016AC38 /* RunnerClassLoader.java */; };
|
||||
33AF61900965C54B00B514A9 /* MessageStream.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE320965BD110016AC38 /* MessageStream.java */; };
|
||||
33AF61910965C54B00B514A9 /* SyntaxUtilities.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE6A0965BD110016AC38 /* SyntaxUtilities.java */; };
|
||||
33AF61930965C54B00B514A9 /* PresentMode.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE550965BD110016AC38 /* PresentMode.java */; };
|
||||
33AF61940965C54B00B514A9 /* STDCTokenTypes.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE410965BD110016AC38 /* STDCTokenTypes.java */; };
|
||||
33AF61950965C54B00B514A9 /* CTokenMarker.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE600965BD110016AC38 /* CTokenMarker.java */; };
|
||||
33AF61960965C54B00B514A9 /* CToken.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE360965BD110016AC38 /* CToken.java */; };
|
||||
33AF61970965C54B00B514A9 /* WTreeParserTokenTypes.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE530965BD110016AC38 /* WTreeParserTokenTypes.java */; };
|
||||
33AF61990965C54B00B514A9 /* Runner.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE560965BD110016AC38 /* Runner.java */; };
|
||||
33AF619A0965C54B00B514A9 /* TNode.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE430965BD110016AC38 /* TNode.java */; };
|
||||
33AF619B0965C54B00B514A9 /* KeywordMap.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE640965BD110016AC38 /* KeywordMap.java */; };
|
||||
33AF619C0965C54B00B514A9 /* ExtendedCommonASTWithHiddenTokens.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE390965BD110016AC38 /* ExtendedCommonASTWithHiddenTokens.java */; };
|
||||
33AF619D0965C54B00B514A9 /* Sketch.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE5A0965BD110016AC38 /* Sketch.java */; };
|
||||
33AF619E0965C54B00B514A9 /* WEmitterTokenTypes.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE470965BD110016AC38 /* WEmitterTokenTypes.java */; };
|
||||
33AF619F0965C54B00B514A9 /* TNodeFactory.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE440965BD110016AC38 /* TNodeFactory.java */; };
|
||||
33AF61A00965C54B00B514A9 /* Target.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE700965BD110016AC38 /* Target.java */; };
|
||||
33AF61A10965C54B00B514A9 /* UpdateCheck.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE730965BD110016AC38 /* UpdateCheck.java */; };
|
||||
33AF61A20965C54B00B514A9 /* InputHandler.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE620965BD110016AC38 /* InputHandler.java */; };
|
||||
33AF61A30965C54B00B514A9 /* MessageConsumer.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE300965BD110016AC38 /* MessageConsumer.java */; };
|
||||
33AF61A40965C54B00B514A9 /* WLexer.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE4A0965BD110016AC38 /* WLexer.java */; };
|
||||
33AF61A50965C54B00B514A9 /* Compiler.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE260965BD100016AC38 /* Compiler.java */; };
|
||||
33AF61A60965C54B00B514A9 /* AutoFormat.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE720965BD110016AC38 /* AutoFormat.java */; };
|
||||
33AF61A70965C54B00B514A9 /* StdCLexer.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE3E0965BD110016AC38 /* StdCLexer.java */; };
|
||||
33AF61A80965C54B00B514A9 /* StdCParser.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE400965BD110016AC38 /* StdCParser.java */; };
|
||||
33AF61A90965C54B00B514A9 /* PdeKeywords.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE650965BD110016AC38 /* PdeKeywords.java */; };
|
||||
33AF61AA0965C54B00B514A9 /* Editor.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE270965BD100016AC38 /* Editor.java */; };
|
||||
33AF61AB0965C54B00B514A9 /* WEmitter.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE460965BD110016AC38 /* WEmitter.java */; };
|
||||
33AF61AC0965C54B00B514A9 /* SwingWorker.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE5E0965BD110016AC38 /* SwingWorker.java */; };
|
||||
33AF61AD0965C54B00B514A9 /* DefaultInputHandler.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE610965BD110016AC38 /* DefaultInputHandler.java */; };
|
||||
33AF61AE0965C54B00B514A9 /* SyntaxDocument.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE680965BD110016AC38 /* SyntaxDocument.java */; };
|
||||
33AF61AF0965C54B00B514A9 /* WLexerTokenTypes.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE4B0965BD110016AC38 /* WLexerTokenTypes.java */; };
|
||||
33AF61B00965C54B00B514A9 /* Token.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE6E0965BD110016AC38 /* Token.java */; };
|
||||
33AF61B10965C54B00B514A9 /* Preferences.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE330965BD110016AC38 /* Preferences.java */; };
|
||||
33AF61B20965C54B00B514A9 /* PdeTextAreaDefaults.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE660965BD110016AC38 /* PdeTextAreaDefaults.java */; };
|
||||
33AF61B30965C54B00B514A9 /* WTreeParser.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE520965BD110016AC38 /* WTreeParser.java */; };
|
||||
33AF61B40965C54B00B514A9 /* JEditTextArea.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE630965BD110016AC38 /* JEditTextArea.java */; };
|
||||
33AF61B50965C54B00B514A9 /* Base.java in Sources */ = {isa = PBXBuildFile; fileRef = 33FFFE240965BD100016AC38 /* Base.java */; };
|
||||
33CF03B209662CB700F2C9A9 /* arduino.icns in Resources */ = {isa = PBXBuildFile; fileRef = 33CF03B009662CA800F2C9A9 /* arduino.icns */; };
|
||||
33CF03CC09662DC000F2C9A9 /* mrj.jar in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33AF620C0965D67900B514A9 /* mrj.jar */; settings = {JAVA_ARCHIVE_SUBDIR = ../shared/lib; }; };
|
||||
33CF03CD09662DC000F2C9A9 /* RXTXcomm.jar in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33AF620F0965D67A00B514A9 /* RXTXcomm.jar */; settings = {JAVA_ARCHIVE_SUBDIR = ../shared/lib; }; };
|
||||
33CF03CE09662DC000F2C9A9 /* antlr.jar in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33AF620A0965D67800B514A9 /* antlr.jar */; settings = {JAVA_ARCHIVE_SUBDIR = ../shared/lib; }; };
|
||||
33CF03CF09662DC000F2C9A9 /* registry.jar in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33AF620E0965D67A00B514A9 /* registry.jar */; settings = {JAVA_ARCHIVE_SUBDIR = ../shared/lib; }; };
|
||||
33CF03D009662DC000F2C9A9 /* oro.jar in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33AF620D0965D67900B514A9 /* oro.jar */; settings = {JAVA_ARCHIVE_SUBDIR = ../shared/lib; }; };
|
||||
33FF07020965BEE60016AC38 /* jikes in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FFFEB60965BD110016AC38 /* jikes */; };
|
||||
33FF07050965BEE60016AC38 /* macosx_setup.command in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FFFEB90965BD110016AC38 /* macosx_setup.command */; };
|
||||
33FF07100965BF8A0016AC38 /* burn.command in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FFFEAF0965BD110016AC38 /* burn.command */; };
|
||||
33FF07150965BFC10016AC38 /* FTDIUSBSerialDriver_v2_0_1.dmg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FFFEB30965BD110016AC38 /* FTDIUSBSerialDriver_v2_0_1.dmg */; };
|
||||
33FF07160965BFC10016AC38 /* KeyspanUSAdrvr20.dmg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FFFEB40965BD110016AC38 /* KeyspanUSAdrvr20.dmg */; };
|
||||
33FF071F0965C1E30016AC38 /* about.jpg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF01DE0965BD160016AC38 /* about.jpg */; };
|
||||
33FF07220965C1E30016AC38 /* buttons.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02770965BD160016AC38 /* buttons.gif */; };
|
||||
33FF07230965C1E30016AC38 /* icon.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02780965BD160016AC38 /* icon.gif */; };
|
||||
33FF07240965C1E30016AC38 /* keywords.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02790965BD160016AC38 /* keywords.txt */; };
|
||||
33FF07250965C1E30016AC38 /* loading.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF027A0965BD160016AC38 /* loading.gif */; };
|
||||
33FF07280965C1E30016AC38 /* preferences.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF027D0965BD160016AC38 /* preferences.txt */; };
|
||||
33FF072A0965C1E30016AC38 /* resize.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF027F0965BD160016AC38 /* resize.gif */; };
|
||||
33FF072C0965C1E30016AC38 /* tab-sel-left.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02810965BD160016AC38 /* tab-sel-left.gif */; };
|
||||
33FF072D0965C1E30016AC38 /* tab-sel-menu.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02820965BD160016AC38 /* tab-sel-menu.gif */; };
|
||||
33FF072E0965C1E30016AC38 /* tab-sel-mid.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02830965BD160016AC38 /* tab-sel-mid.gif */; };
|
||||
33FF072F0965C1E30016AC38 /* tab-sel-right.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02840965BD160016AC38 /* tab-sel-right.gif */; };
|
||||
33FF07300965C1E30016AC38 /* tab-unsel-left.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02850965BD160016AC38 /* tab-unsel-left.gif */; };
|
||||
33FF07310965C1E30016AC38 /* tab-unsel-menu.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02860965BD160016AC38 /* tab-unsel-menu.gif */; };
|
||||
33FF07320965C1E30016AC38 /* tab-unsel-mid.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02870965BD160016AC38 /* tab-unsel-mid.gif */; };
|
||||
33FF07330965C1E30016AC38 /* tab-unsel-right.gif in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF02880965BD160016AC38 /* tab-unsel-right.gif */; };
|
||||
33FF07360965C2590016AC38 /* ATmegaBOOT.hex in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FFFE790965BD110016AC38 /* ATmegaBOOT.hex */; };
|
||||
33FF07D30965C2B10016AC38 /* avrlib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF07370965C2B10016AC38 /* avrlib */; };
|
||||
33FF07FD0965C3560016AC38 /* targets in CopyFiles */ = {isa = PBXBuildFile; fileRef = 33FF07D50965C3560016AC38 /* targets */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXBuildStyle section */
|
||||
33AF609C0965C4B700B514A9 /* Development */ = {
|
||||
isa = PBXBuildStyle;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
};
|
||||
name = Development;
|
||||
};
|
||||
33AF609D0965C4B700B514A9 /* Deployment */ = {
|
||||
isa = PBXBuildStyle;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = YES;
|
||||
};
|
||||
name = Deployment;
|
||||
};
|
||||
/* End PBXBuildStyle section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
33AF61700965C51E00B514A9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 33FFFD3F0965B1E40016AC38 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 33FFFE1C0965BBEF0016AC38;
|
||||
remoteInfo = Dist;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
33CF03C809662DA200F2C9A9 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 15;
|
||||
files = (
|
||||
33CF03CC09662DC000F2C9A9 /* mrj.jar in CopyFiles */,
|
||||
33CF03CD09662DC000F2C9A9 /* RXTXcomm.jar in CopyFiles */,
|
||||
33CF03CE09662DC000F2C9A9 /* antlr.jar in CopyFiles */,
|
||||
33CF03CF09662DC000F2C9A9 /* registry.jar in CopyFiles */,
|
||||
33CF03D009662DC000F2C9A9 /* oro.jar in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
33FF070C0965BF760016AC38 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = bootloader;
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
33FF07360965C2590016AC38 /* ATmegaBOOT.hex in CopyFiles */,
|
||||
33FF07100965BF8A0016AC38 /* burn.command in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
33FF07130965BFA80016AC38 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = drivers;
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
33FF07150965BFC10016AC38 /* FTDIUSBSerialDriver_v2_0_1.dmg in CopyFiles */,
|
||||
33FF07160965BFC10016AC38 /* KeyspanUSAdrvr20.dmg in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
33FF071D0965C1C20016AC38 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = lib;
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
33FF07FD0965C3560016AC38 /* targets in CopyFiles */,
|
||||
33FF07D30965C2B10016AC38 /* avrlib in CopyFiles */,
|
||||
33FF071F0965C1E30016AC38 /* about.jpg in CopyFiles */,
|
||||
33FF07220965C1E30016AC38 /* buttons.gif in CopyFiles */,
|
||||
33FF07230965C1E30016AC38 /* icon.gif in CopyFiles */,
|
||||
33FF07240965C1E30016AC38 /* keywords.txt in CopyFiles */,
|
||||
33FF07250965C1E30016AC38 /* loading.gif in CopyFiles */,
|
||||
33FF07280965C1E30016AC38 /* preferences.txt in CopyFiles */,
|
||||
33FF072A0965C1E30016AC38 /* resize.gif in CopyFiles */,
|
||||
33FF072C0965C1E30016AC38 /* tab-sel-left.gif in CopyFiles */,
|
||||
33FF072D0965C1E30016AC38 /* tab-sel-menu.gif in CopyFiles */,
|
||||
33FF072E0965C1E30016AC38 /* tab-sel-mid.gif in CopyFiles */,
|
||||
33FF072F0965C1E30016AC38 /* tab-sel-right.gif in CopyFiles */,
|
||||
33FF07300965C1E30016AC38 /* tab-unsel-left.gif in CopyFiles */,
|
||||
33FF07310965C1E30016AC38 /* tab-unsel-menu.gif in CopyFiles */,
|
||||
33FF07320965C1E30016AC38 /* tab-unsel-mid.gif in CopyFiles */,
|
||||
33FF07330965C1E30016AC38 /* tab-unsel-right.gif in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
33FFFE1D0965BC050016AC38 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
33FF07020965BEE60016AC38 /* jikes in CopyFiles */,
|
||||
33FF07050965BEE60016AC38 /* macosx_setup.command in CopyFiles */,
|
||||
330B21540968180400345666 /* librxtxSerial.jnilib in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
330B21530968180400345666 /* librxtxSerial.jnilib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; path = librxtxSerial.jnilib; sourceTree = "<group>"; };
|
||||
33AF620A0965D67800B514A9 /* antlr.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = antlr.jar; sourceTree = "<group>"; };
|
||||
33AF620B0965D67900B514A9 /* applet.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; path = applet.html; sourceTree = "<group>"; };
|
||||
33AF620C0965D67900B514A9 /* mrj.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = mrj.jar; sourceTree = "<group>"; };
|
||||
33AF620D0965D67900B514A9 /* oro.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = oro.jar; sourceTree = "<group>"; };
|
||||
33AF620E0965D67A00B514A9 /* registry.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = registry.jar; sourceTree = "<group>"; };
|
||||
33AF620F0965D67A00B514A9 /* RXTXcomm.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = RXTXcomm.jar; sourceTree = "<group>"; };
|
||||
33CF03B009662CA800F2C9A9 /* arduino.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = arduino.icns; path = dist/arduino.icns; sourceTree = "<group>"; };
|
||||
33DD8FB6096AC8DA0013AF8F /* Arduino.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Arduino.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
33FF01DC0965BD160016AC38 /* examples.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = examples.zip; sourceTree = "<group>"; };
|
||||
33FF01DE0965BD160016AC38 /* about.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = about.jpg; sourceTree = "<group>"; };
|
||||
33FF02770965BD160016AC38 /* buttons.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = buttons.gif; sourceTree = "<group>"; };
|
||||
33FF02780965BD160016AC38 /* icon.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = icon.gif; sourceTree = "<group>"; };
|
||||
33FF02790965BD160016AC38 /* keywords.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = keywords.txt; sourceTree = "<group>"; };
|
||||
33FF027A0965BD160016AC38 /* loading.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = loading.gif; sourceTree = "<group>"; };
|
||||
33FF027D0965BD160016AC38 /* preferences.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = preferences.txt; sourceTree = "<group>"; };
|
||||
33FF027F0965BD160016AC38 /* resize.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = resize.gif; sourceTree = "<group>"; };
|
||||
33FF02810965BD160016AC38 /* tab-sel-left.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "tab-sel-left.gif"; sourceTree = "<group>"; };
|
||||
33FF02820965BD160016AC38 /* tab-sel-menu.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "tab-sel-menu.gif"; sourceTree = "<group>"; };
|
||||
33FF02830965BD160016AC38 /* tab-sel-mid.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "tab-sel-mid.gif"; sourceTree = "<group>"; };
|
||||
33FF02840965BD160016AC38 /* tab-sel-right.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "tab-sel-right.gif"; sourceTree = "<group>"; };
|
||||
33FF02850965BD160016AC38 /* tab-unsel-left.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "tab-unsel-left.gif"; sourceTree = "<group>"; };
|
||||
33FF02860965BD160016AC38 /* tab-unsel-menu.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "tab-unsel-menu.gif"; sourceTree = "<group>"; };
|
||||
33FF02870965BD160016AC38 /* tab-unsel-mid.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "tab-unsel-mid.gif"; sourceTree = "<group>"; };
|
||||
33FF02880965BD160016AC38 /* tab-unsel-right.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "tab-unsel-right.gif"; sourceTree = "<group>"; };
|
||||
33FF028B0965BD160016AC38 /* run.bat */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = run.bat; sourceTree = "<group>"; };
|
||||
33FF02900965BD160016AC38 /* .cvsignore */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = .cvsignore; sourceTree = "<group>"; };
|
||||
33FF02920965BD160016AC38 /* avr_tools.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = avr_tools.zip; sourceTree = "<group>"; };
|
||||
33FF02940965BD160016AC38 /* burn.bat */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = burn.bat; sourceTree = "<group>"; };
|
||||
33FF02960965BD160016AC38 /* makefile.w2k */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = makefile.w2k; sourceTree = "<group>"; };
|
||||
33FF02970965BD160016AC38 /* makefile.win */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = makefile.win; sourceTree = "<group>"; };
|
||||
33FF02990965BD160016AC38 /* FTDI USB Drivers.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = "FTDI USB Drivers.zip"; sourceTree = "<group>"; };
|
||||
33FF029A0965BD160016AC38 /* KeyspanUSA19wWinV31.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = KeyspanUSA19wWinV31.exe; sourceTree = "<group>"; };
|
||||
33FF029B0965BD160016AC38 /* ICE_JNIRegistry.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = ICE_JNIRegistry.dll; sourceTree = "<group>"; };
|
||||
33FF029C0965BD160016AC38 /* jikes.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = jikes.exe; sourceTree = "<group>"; };
|
||||
33FF029E0965BD170016AC38 /* makefile.w2k */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = makefile.w2k; sourceTree = "<group>"; };
|
||||
33FF029F0965BD170016AC38 /* makefile.win */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = makefile.win; sourceTree = "<group>"; };
|
||||
33FF02A00965BD170016AC38 /* run-expert.bat */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = "run-expert.bat"; sourceTree = "<group>"; };
|
||||
33FF02A10965BD170016AC38 /* run.bat */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = run.bat; sourceTree = "<group>"; };
|
||||
33FF02A20965BD170016AC38 /* rxtxSerial.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = rxtxSerial.dll; sourceTree = "<group>"; };
|
||||
33FF02A40965BD170016AC38 /* dist.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = dist.sh; sourceTree = "<group>"; };
|
||||
33FF02A50965BD170016AC38 /* jre.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = jre.zip; sourceTree = "<group>"; };
|
||||
33FF02A70965BD170016AC38 /* .cvsignore */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = .cvsignore; sourceTree = "<group>"; };
|
||||
33FF02A80965BD170016AC38 /* application.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = application.ico; sourceTree = "<group>"; };
|
||||
33FF02A90965BD170016AC38 /* document.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = document.ico; sourceTree = "<group>"; };
|
||||
33FF02AA0965BD170016AC38 /* launcher.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = launcher.cpp; sourceTree = "<group>"; };
|
||||
33FF02AB0965BD170016AC38 /* launcher.rc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = launcher.rc; sourceTree = "<group>"; };
|
||||
33FF02AC0965BD170016AC38 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
|
||||
33FF02AE0965BD170016AC38 /* make.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = make.sh; sourceTree = "<group>"; };
|
||||
33FF02AF0965BD170016AC38 /* run.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = run.sh; sourceTree = "<group>"; };
|
||||
33FF02B00965BD170016AC38 /* srun.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = srun.sh; sourceTree = "<group>"; };
|
||||
33FF02B60965BD170016AC38 /* license.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = license.txt; path = ../../license.txt; sourceTree = SOURCE_ROOT; };
|
||||
33FF02B70965BD170016AC38 /* readme.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = readme.txt; path = ../../readme.txt; sourceTree = SOURCE_ROOT; };
|
||||
33FF02DC0965BD170016AC38 /* todo.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = todo.txt; path = ../../todo.txt; sourceTree = SOURCE_ROOT; };
|
||||
33FF07370965C2B10016AC38 /* avrlib */ = {isa = PBXFileReference; lastKnownFileType = folder; path = avrlib; sourceTree = "<group>"; };
|
||||
33FF07D50965C3560016AC38 /* targets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = targets; path = ../../targets; sourceTree = SOURCE_ROOT; };
|
||||
33FFFE240965BD100016AC38 /* Base.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Base.java; sourceTree = "<group>"; };
|
||||
33FFFE260965BD100016AC38 /* Compiler.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Compiler.java; sourceTree = "<group>"; };
|
||||
33FFFE270965BD100016AC38 /* Editor.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Editor.java; sourceTree = "<group>"; };
|
||||
33FFFE280965BD100016AC38 /* EditorButtons.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = EditorButtons.java; sourceTree = "<group>"; };
|
||||
33FFFE290965BD110016AC38 /* EditorConsole.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = EditorConsole.java; sourceTree = "<group>"; };
|
||||
33FFFE2A0965BD110016AC38 /* EditorHeader.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = EditorHeader.java; sourceTree = "<group>"; };
|
||||
33FFFE2B0965BD110016AC38 /* EditorLineStatus.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = EditorLineStatus.java; sourceTree = "<group>"; };
|
||||
33FFFE2C0965BD110016AC38 /* EditorListener.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = EditorListener.java; sourceTree = "<group>"; };
|
||||
33FFFE2D0965BD110016AC38 /* EditorStatus.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = EditorStatus.java; sourceTree = "<group>"; };
|
||||
33FFFE2E0965BD110016AC38 /* FindReplace.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = FindReplace.java; sourceTree = "<group>"; };
|
||||
33FFFE300965BD110016AC38 /* MessageConsumer.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = MessageConsumer.java; sourceTree = "<group>"; };
|
||||
33FFFE310965BD110016AC38 /* MessageSiphon.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = MessageSiphon.java; sourceTree = "<group>"; };
|
||||
33FFFE320965BD110016AC38 /* MessageStream.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = MessageStream.java; sourceTree = "<group>"; };
|
||||
33FFFE330965BD110016AC38 /* Preferences.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Preferences.java; sourceTree = "<group>"; };
|
||||
33FFFE350965BD110016AC38 /* CSymbolTable.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = CSymbolTable.java; sourceTree = "<group>"; };
|
||||
33FFFE360965BD110016AC38 /* CToken.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = CToken.java; sourceTree = "<group>"; };
|
||||
33FFFE370965BD110016AC38 /* expandedWEmitter.g */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = expandedWEmitter.g; sourceTree = "<group>"; };
|
||||
33FFFE380965BD110016AC38 /* expandedWParser.g */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = expandedWParser.g; sourceTree = "<group>"; };
|
||||
33FFFE390965BD110016AC38 /* ExtendedCommonASTWithHiddenTokens.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = ExtendedCommonASTWithHiddenTokens.java; sourceTree = "<group>"; };
|
||||
33FFFE3A0965BD110016AC38 /* LineObject.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = LineObject.java; sourceTree = "<group>"; };
|
||||
33FFFE3B0965BD110016AC38 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
|
||||
33FFFE3C0965BD110016AC38 /* PdePreprocessor.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = PdePreprocessor.java; sourceTree = "<group>"; };
|
||||
33FFFE3D0965BD110016AC38 /* PreprocessorInfoChannel.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = PreprocessorInfoChannel.java; sourceTree = "<group>"; };
|
||||
33FFFE3E0965BD110016AC38 /* StdCLexer.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = StdCLexer.java; sourceTree = "<group>"; };
|
||||
33FFFE3F0965BD110016AC38 /* StdCParser.g */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = StdCParser.g; sourceTree = "<group>"; };
|
||||
33FFFE400965BD110016AC38 /* StdCParser.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = StdCParser.java; sourceTree = "<group>"; };
|
||||
33FFFE410965BD110016AC38 /* STDCTokenTypes.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = STDCTokenTypes.java; sourceTree = "<group>"; };
|
||||
33FFFE420965BD110016AC38 /* STDCTokenTypes.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = STDCTokenTypes.txt; sourceTree = "<group>"; };
|
||||
33FFFE430965BD110016AC38 /* TNode.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = TNode.java; sourceTree = "<group>"; };
|
||||
33FFFE440965BD110016AC38 /* TNodeFactory.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = TNodeFactory.java; sourceTree = "<group>"; };
|
||||
33FFFE450965BD110016AC38 /* WEmitter.g */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = WEmitter.g; sourceTree = "<group>"; };
|
||||
33FFFE460965BD110016AC38 /* WEmitter.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = WEmitter.java; sourceTree = "<group>"; };
|
||||
33FFFE470965BD110016AC38 /* WEmitterTokenTypes.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = WEmitterTokenTypes.java; sourceTree = "<group>"; };
|
||||
33FFFE480965BD110016AC38 /* WEmitterTokenTypes.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = WEmitterTokenTypes.txt; sourceTree = "<group>"; };
|
||||
33FFFE490965BD110016AC38 /* whitespace_test.pde */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = whitespace_test.pde; sourceTree = "<group>"; };
|
||||
33FFFE4A0965BD110016AC38 /* WLexer.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = WLexer.java; sourceTree = "<group>"; };
|
||||
33FFFE4B0965BD110016AC38 /* WLexerTokenTypes.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = WLexerTokenTypes.java; sourceTree = "<group>"; };
|
||||
33FFFE4C0965BD110016AC38 /* WLexerTokenTypes.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = WLexerTokenTypes.txt; sourceTree = "<group>"; };
|
||||
33FFFE4D0965BD110016AC38 /* WParser.g */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = WParser.g; sourceTree = "<group>"; };
|
||||
33FFFE4E0965BD110016AC38 /* WParser.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = WParser.java; sourceTree = "<group>"; };
|
||||
33FFFE4F0965BD110016AC38 /* WTokenTypes.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = WTokenTypes.java; sourceTree = "<group>"; };
|
||||
33FFFE500965BD110016AC38 /* WTokenTypes.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = WTokenTypes.txt; sourceTree = "<group>"; };
|
||||
33FFFE510965BD110016AC38 /* WTreeParser.g */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = WTreeParser.g; sourceTree = "<group>"; };
|
||||
33FFFE520965BD110016AC38 /* WTreeParser.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = WTreeParser.java; sourceTree = "<group>"; };
|
||||
33FFFE530965BD110016AC38 /* WTreeParserTokenTypes.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = WTreeParserTokenTypes.java; sourceTree = "<group>"; };
|
||||
33FFFE540965BD110016AC38 /* WTreeParserTokenTypes.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = WTreeParserTokenTypes.txt; sourceTree = "<group>"; };
|
||||
33FFFE550965BD110016AC38 /* PresentMode.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = PresentMode.java; sourceTree = "<group>"; };
|
||||
33FFFE560965BD110016AC38 /* Runner.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Runner.java; sourceTree = "<group>"; };
|
||||
33FFFE570965BD110016AC38 /* RunnerClassLoader.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = RunnerClassLoader.java; sourceTree = "<group>"; };
|
||||
33FFFE580965BD110016AC38 /* RunnerException.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = RunnerException.java; sourceTree = "<group>"; };
|
||||
33FFFE590965BD110016AC38 /* Serial.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Serial.java; sourceTree = "<group>"; };
|
||||
33FFFE5A0965BD110016AC38 /* Sketch.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Sketch.java; sourceTree = "<group>"; };
|
||||
33FFFE5B0965BD110016AC38 /* Sketchbook.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Sketchbook.java; sourceTree = "<group>"; };
|
||||
33FFFE5C0965BD110016AC38 /* SketchCode.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = SketchCode.java; sourceTree = "<group>"; };
|
||||
33FFFE5D0965BD110016AC38 /* SketchHistory.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = SketchHistory.java; sourceTree = "<group>"; };
|
||||
33FFFE5E0965BD110016AC38 /* SwingWorker.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = SwingWorker.java; sourceTree = "<group>"; };
|
||||
33FFFE600965BD110016AC38 /* CTokenMarker.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = CTokenMarker.java; sourceTree = "<group>"; };
|
||||
33FFFE610965BD110016AC38 /* DefaultInputHandler.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = DefaultInputHandler.java; sourceTree = "<group>"; };
|
||||
33FFFE620965BD110016AC38 /* InputHandler.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = InputHandler.java; sourceTree = "<group>"; };
|
||||
33FFFE630965BD110016AC38 /* JEditTextArea.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = JEditTextArea.java; sourceTree = "<group>"; };
|
||||
33FFFE640965BD110016AC38 /* KeywordMap.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = KeywordMap.java; sourceTree = "<group>"; };
|
||||
33FFFE650965BD110016AC38 /* PdeKeywords.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = PdeKeywords.java; sourceTree = "<group>"; };
|
||||
33FFFE660965BD110016AC38 /* PdeTextAreaDefaults.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = PdeTextAreaDefaults.java; sourceTree = "<group>"; };
|
||||
33FFFE670965BD110016AC38 /* readme.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = readme.txt; sourceTree = "<group>"; };
|
||||
33FFFE680965BD110016AC38 /* SyntaxDocument.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = SyntaxDocument.java; sourceTree = "<group>"; };
|
||||
33FFFE690965BD110016AC38 /* SyntaxStyle.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = SyntaxStyle.java; sourceTree = "<group>"; };
|
||||
33FFFE6A0965BD110016AC38 /* SyntaxUtilities.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = SyntaxUtilities.java; sourceTree = "<group>"; };
|
||||
33FFFE6B0965BD110016AC38 /* TextAreaDefaults.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = TextAreaDefaults.java; sourceTree = "<group>"; };
|
||||
33FFFE6C0965BD110016AC38 /* TextAreaPainter.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = TextAreaPainter.java; sourceTree = "<group>"; };
|
||||
33FFFE6D0965BD110016AC38 /* TextUtilities.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = TextUtilities.java; sourceTree = "<group>"; };
|
||||
33FFFE6E0965BD110016AC38 /* Token.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Token.java; sourceTree = "<group>"; };
|
||||
33FFFE6F0965BD110016AC38 /* TokenMarker.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = TokenMarker.java; sourceTree = "<group>"; };
|
||||
33FFFE700965BD110016AC38 /* Target.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Target.java; sourceTree = "<group>"; };
|
||||
33FFFE720965BD110016AC38 /* AutoFormat.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = AutoFormat.java; sourceTree = "<group>"; };
|
||||
33FFFE730965BD110016AC38 /* UpdateCheck.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = UpdateCheck.java; sourceTree = "<group>"; };
|
||||
33FFFE740965BD110016AC38 /* Uploader.java */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.java; path = Uploader.java; sourceTree = "<group>"; };
|
||||
33FFFE770965BD110016AC38 /* ATmegaBOOT.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = ATmegaBOOT.c; sourceTree = "<group>"; };
|
||||
33FFFE790965BD110016AC38 /* ATmegaBOOT.hex */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = ATmegaBOOT.hex; sourceTree = "<group>"; };
|
||||
33FFFE7F0965BD110016AC38 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
|
||||
33FFFE810965BD110016AC38 /* howto.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = howto.txt; sourceTree = "<group>"; };
|
||||
33FFFE830965BD110016AC38 /* .cvsignore */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = .cvsignore; sourceTree = "<group>"; };
|
||||
33FFFE850965BD110016AC38 /* .cvsignore */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = .cvsignore; sourceTree = "<group>"; };
|
||||
33FFFE860965BD110016AC38 /* arduino */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = arduino; sourceTree = "<group>"; };
|
||||
33FFFE880965BD110016AC38 /* burn */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = burn; sourceTree = "<group>"; };
|
||||
33FFFE8A0965BD110016AC38 /* librxtxI2C.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = librxtxI2C.so; sourceTree = "<group>"; };
|
||||
33FFFE8B0965BD110016AC38 /* librxtxParallel.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = librxtxParallel.so; sourceTree = "<group>"; };
|
||||
33FFFE8C0965BD110016AC38 /* librxtxRaw.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = librxtxRaw.so; sourceTree = "<group>"; };
|
||||
33FFFE8D0965BD110016AC38 /* librxtxRS485.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = librxtxRS485.so; sourceTree = "<group>"; };
|
||||
33FFFE8E0965BD110016AC38 /* librxtxSerial.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = librxtxSerial.so; sourceTree = "<group>"; };
|
||||
33FFFE8F0965BD110016AC38 /* dist.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = dist.sh; sourceTree = "<group>"; };
|
||||
33FFFE900965BD110016AC38 /* make.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = make.sh; sourceTree = "<group>"; };
|
||||
33FFFE910965BD110016AC38 /* run.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = run.sh; sourceTree = "<group>"; };
|
||||
33FFFE930965BD110016AC38 /* .cvsignore */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = .cvsignore; sourceTree = "<group>"; };
|
||||
33FFFE940965BD110016AC38 /* Arduino.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = Arduino.xcodeproj; sourceTree = "<group>"; };
|
||||
33FFFEAF0965BD110016AC38 /* burn.command */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = burn.command; sourceTree = "<group>"; };
|
||||
33FFFEB30965BD110016AC38 /* FTDIUSBSerialDriver_v2_0_1.dmg */ = {isa = PBXFileReference; lastKnownFileType = file; path = FTDIUSBSerialDriver_v2_0_1.dmg; sourceTree = "<group>"; };
|
||||
33FFFEB40965BD110016AC38 /* KeyspanUSAdrvr20.dmg */ = {isa = PBXFileReference; lastKnownFileType = file; path = KeyspanUSAdrvr20.dmg; sourceTree = "<group>"; };
|
||||
33FFFEB50965BD110016AC38 /* DS_Store */ = {isa = PBXFileReference; lastKnownFileType = file; path = DS_Store; sourceTree = "<group>"; };
|
||||
33FFFEB60965BD110016AC38 /* jikes */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = jikes; sourceTree = "<group>"; };
|
||||
33FFFEB90965BD110016AC38 /* macosx_setup.command */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = macosx_setup.command; sourceTree = "<group>"; };
|
||||
33FFFEBC0965BD110016AC38 /* tools.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = tools.zip; sourceTree = "<group>"; };
|
||||
33FFFEBD0965BD110016AC38 /* dist.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = dist.sh; sourceTree = "<group>"; };
|
||||
33FFFEBE0965BD110016AC38 /* make.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = make.sh; sourceTree = "<group>"; };
|
||||
33FFFEBF0965BD110016AC38 /* mkdmg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = mkdmg; sourceTree = "<group>"; };
|
||||
33FFFEC00965BD110016AC38 /* run.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = run.sh; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
33AF61670965C4C600B514A9 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
33FF01DA0965BD160016AC38 /* shared */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF01DB0965BD160016AC38 /* dist */,
|
||||
33FF01DD0965BD160016AC38 /* lib */,
|
||||
33FF02890965BD160016AC38 /* reference */,
|
||||
33FF028B0965BD160016AC38 /* run.bat */,
|
||||
33FF028C0965BD160016AC38 /* sketchbook */,
|
||||
);
|
||||
path = shared;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF01DB0965BD160016AC38 /* dist */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF01DC0965BD160016AC38 /* examples.zip */,
|
||||
);
|
||||
path = dist;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF01DD0965BD160016AC38 /* lib */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33AF620A0965D67800B514A9 /* antlr.jar */,
|
||||
33AF620B0965D67900B514A9 /* applet.html */,
|
||||
33AF620C0965D67900B514A9 /* mrj.jar */,
|
||||
33AF620D0965D67900B514A9 /* oro.jar */,
|
||||
33AF620E0965D67A00B514A9 /* registry.jar */,
|
||||
33AF620F0965D67A00B514A9 /* RXTXcomm.jar */,
|
||||
33FF07370965C2B10016AC38 /* avrlib */,
|
||||
33FF01DE0965BD160016AC38 /* about.jpg */,
|
||||
33FF02770965BD160016AC38 /* buttons.gif */,
|
||||
33FF02780965BD160016AC38 /* icon.gif */,
|
||||
33FF02790965BD160016AC38 /* keywords.txt */,
|
||||
33FF027A0965BD160016AC38 /* loading.gif */,
|
||||
33FF027D0965BD160016AC38 /* preferences.txt */,
|
||||
33FF027F0965BD160016AC38 /* resize.gif */,
|
||||
33FF02810965BD160016AC38 /* tab-sel-left.gif */,
|
||||
33FF02820965BD160016AC38 /* tab-sel-menu.gif */,
|
||||
33FF02830965BD160016AC38 /* tab-sel-mid.gif */,
|
||||
33FF02840965BD160016AC38 /* tab-sel-right.gif */,
|
||||
33FF02850965BD160016AC38 /* tab-unsel-left.gif */,
|
||||
33FF02860965BD160016AC38 /* tab-unsel-menu.gif */,
|
||||
33FF02870965BD160016AC38 /* tab-unsel-mid.gif */,
|
||||
33FF02880965BD160016AC38 /* tab-unsel-right.gif */,
|
||||
);
|
||||
path = lib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF02890965BD160016AC38 /* reference */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF028A0965BD160016AC38 /* images */,
|
||||
);
|
||||
path = reference;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF028A0965BD160016AC38 /* images */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = images;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF028C0965BD160016AC38 /* sketchbook */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF028D0965BD160016AC38 /* default */,
|
||||
33FF028E0965BD160016AC38 /* examples */,
|
||||
);
|
||||
path = sketchbook;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF028D0965BD160016AC38 /* default */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = default;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF028E0965BD160016AC38 /* examples */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = examples;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF028F0965BD160016AC38 /* windows */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF02900965BD160016AC38 /* .cvsignore */,
|
||||
33FF02910965BD160016AC38 /* dist */,
|
||||
33FF02A40965BD170016AC38 /* dist.sh */,
|
||||
33FF02A50965BD170016AC38 /* jre.zip */,
|
||||
33FF02A60965BD170016AC38 /* launcher */,
|
||||
33FF02AE0965BD170016AC38 /* make.sh */,
|
||||
33FF02AF0965BD170016AC38 /* run.sh */,
|
||||
33FF02B00965BD170016AC38 /* srun.sh */,
|
||||
);
|
||||
path = windows;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF02910965BD160016AC38 /* dist */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF02920965BD160016AC38 /* avr_tools.zip */,
|
||||
33FF02930965BD160016AC38 /* bootloader */,
|
||||
33FF02950965BD160016AC38 /* core */,
|
||||
33FF02980965BD160016AC38 /* drivers */,
|
||||
33FF029B0965BD160016AC38 /* ICE_JNIRegistry.dll */,
|
||||
33FF029C0965BD160016AC38 /* jikes.exe */,
|
||||
33FF029D0965BD160016AC38 /* lib */,
|
||||
33FF02A00965BD170016AC38 /* run-expert.bat */,
|
||||
33FF02A10965BD170016AC38 /* run.bat */,
|
||||
33FF02A20965BD170016AC38 /* rxtxSerial.dll */,
|
||||
33FF02A30965BD170016AC38 /* serial */,
|
||||
);
|
||||
path = dist;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF02930965BD160016AC38 /* bootloader */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF02940965BD160016AC38 /* burn.bat */,
|
||||
);
|
||||
path = bootloader;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF02950965BD160016AC38 /* core */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF02960965BD160016AC38 /* makefile.w2k */,
|
||||
33FF02970965BD160016AC38 /* makefile.win */,
|
||||
);
|
||||
path = core;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF02980965BD160016AC38 /* drivers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF02990965BD160016AC38 /* FTDI USB Drivers.zip */,
|
||||
33FF029A0965BD160016AC38 /* KeyspanUSA19wWinV31.exe */,
|
||||
);
|
||||
path = drivers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF029D0965BD160016AC38 /* lib */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF029E0965BD170016AC38 /* makefile.w2k */,
|
||||
33FF029F0965BD170016AC38 /* makefile.win */,
|
||||
);
|
||||
path = lib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF02A30965BD170016AC38 /* serial */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = serial;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF02A60965BD170016AC38 /* launcher */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FF02A70965BD170016AC38 /* .cvsignore */,
|
||||
33FF02A80965BD170016AC38 /* application.ico */,
|
||||
33FF02A90965BD170016AC38 /* document.ico */,
|
||||
33FF02AA0965BD170016AC38 /* launcher.cpp */,
|
||||
33FF02AB0965BD170016AC38 /* launcher.rc */,
|
||||
33FF02AC0965BD170016AC38 /* Makefile */,
|
||||
33FF02AD0965BD170016AC38 /* res */,
|
||||
);
|
||||
path = launcher;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FF02AD0965BD170016AC38 /* res */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = res;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFD3D0965B1E40016AC38 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33CF03B009662CA800F2C9A9 /* arduino.icns */,
|
||||
33FF07D50965C3560016AC38 /* targets */,
|
||||
33FFFE220965BD100016AC38 /* app */,
|
||||
33FFFE750965BD110016AC38 /* bootloader */,
|
||||
33FFFE800965BD110016AC38 /* build */,
|
||||
33FF02B60965BD170016AC38 /* license.txt */,
|
||||
33FF02B70965BD170016AC38 /* readme.txt */,
|
||||
33FF02DC0965BD170016AC38 /* todo.txt */,
|
||||
33DD8FB6096AC8DA0013AF8F /* Arduino.app */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFE220965BD100016AC38 /* app */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE240965BD100016AC38 /* Base.java */,
|
||||
33FFFE260965BD100016AC38 /* Compiler.java */,
|
||||
33FFFE270965BD100016AC38 /* Editor.java */,
|
||||
33FFFE280965BD100016AC38 /* EditorButtons.java */,
|
||||
33FFFE290965BD110016AC38 /* EditorConsole.java */,
|
||||
33FFFE2A0965BD110016AC38 /* EditorHeader.java */,
|
||||
33FFFE2B0965BD110016AC38 /* EditorLineStatus.java */,
|
||||
33FFFE2C0965BD110016AC38 /* EditorListener.java */,
|
||||
33FFFE2D0965BD110016AC38 /* EditorStatus.java */,
|
||||
33FFFE2E0965BD110016AC38 /* FindReplace.java */,
|
||||
33FFFE2F0965BD110016AC38 /* language */,
|
||||
33FFFE300965BD110016AC38 /* MessageConsumer.java */,
|
||||
33FFFE310965BD110016AC38 /* MessageSiphon.java */,
|
||||
33FFFE320965BD110016AC38 /* MessageStream.java */,
|
||||
33FFFE330965BD110016AC38 /* Preferences.java */,
|
||||
33FFFE340965BD110016AC38 /* preproc */,
|
||||
33FFFE550965BD110016AC38 /* PresentMode.java */,
|
||||
33FFFE560965BD110016AC38 /* Runner.java */,
|
||||
33FFFE570965BD110016AC38 /* RunnerClassLoader.java */,
|
||||
33FFFE580965BD110016AC38 /* RunnerException.java */,
|
||||
33FFFE590965BD110016AC38 /* Serial.java */,
|
||||
33FFFE5A0965BD110016AC38 /* Sketch.java */,
|
||||
33FFFE5B0965BD110016AC38 /* Sketchbook.java */,
|
||||
33FFFE5C0965BD110016AC38 /* SketchCode.java */,
|
||||
33FFFE5D0965BD110016AC38 /* SketchHistory.java */,
|
||||
33FFFE5E0965BD110016AC38 /* SwingWorker.java */,
|
||||
33FFFE5F0965BD110016AC38 /* syntax */,
|
||||
33FFFE700965BD110016AC38 /* Target.java */,
|
||||
33FFFE710965BD110016AC38 /* tools */,
|
||||
33FFFE730965BD110016AC38 /* UpdateCheck.java */,
|
||||
33FFFE740965BD110016AC38 /* Uploader.java */,
|
||||
);
|
||||
name = app;
|
||||
path = ../../app;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
33FFFE2F0965BD110016AC38 /* language */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = language;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFE340965BD110016AC38 /* preproc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE350965BD110016AC38 /* CSymbolTable.java */,
|
||||
33FFFE360965BD110016AC38 /* CToken.java */,
|
||||
33FFFE370965BD110016AC38 /* expandedWEmitter.g */,
|
||||
33FFFE380965BD110016AC38 /* expandedWParser.g */,
|
||||
33FFFE390965BD110016AC38 /* ExtendedCommonASTWithHiddenTokens.java */,
|
||||
33FFFE3A0965BD110016AC38 /* LineObject.java */,
|
||||
33FFFE3B0965BD110016AC38 /* Makefile */,
|
||||
33FFFE3C0965BD110016AC38 /* PdePreprocessor.java */,
|
||||
33FFFE3D0965BD110016AC38 /* PreprocessorInfoChannel.java */,
|
||||
33FFFE3E0965BD110016AC38 /* StdCLexer.java */,
|
||||
33FFFE3F0965BD110016AC38 /* StdCParser.g */,
|
||||
33FFFE400965BD110016AC38 /* StdCParser.java */,
|
||||
33FFFE410965BD110016AC38 /* STDCTokenTypes.java */,
|
||||
33FFFE420965BD110016AC38 /* STDCTokenTypes.txt */,
|
||||
33FFFE430965BD110016AC38 /* TNode.java */,
|
||||
33FFFE440965BD110016AC38 /* TNodeFactory.java */,
|
||||
33FFFE450965BD110016AC38 /* WEmitter.g */,
|
||||
33FFFE460965BD110016AC38 /* WEmitter.java */,
|
||||
33FFFE470965BD110016AC38 /* WEmitterTokenTypes.java */,
|
||||
33FFFE480965BD110016AC38 /* WEmitterTokenTypes.txt */,
|
||||
33FFFE490965BD110016AC38 /* whitespace_test.pde */,
|
||||
33FFFE4A0965BD110016AC38 /* WLexer.java */,
|
||||
33FFFE4B0965BD110016AC38 /* WLexerTokenTypes.java */,
|
||||
33FFFE4C0965BD110016AC38 /* WLexerTokenTypes.txt */,
|
||||
33FFFE4D0965BD110016AC38 /* WParser.g */,
|
||||
33FFFE4E0965BD110016AC38 /* WParser.java */,
|
||||
33FFFE4F0965BD110016AC38 /* WTokenTypes.java */,
|
||||
33FFFE500965BD110016AC38 /* WTokenTypes.txt */,
|
||||
33FFFE510965BD110016AC38 /* WTreeParser.g */,
|
||||
33FFFE520965BD110016AC38 /* WTreeParser.java */,
|
||||
33FFFE530965BD110016AC38 /* WTreeParserTokenTypes.java */,
|
||||
33FFFE540965BD110016AC38 /* WTreeParserTokenTypes.txt */,
|
||||
);
|
||||
path = preproc;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFE5F0965BD110016AC38 /* syntax */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE600965BD110016AC38 /* CTokenMarker.java */,
|
||||
33FFFE610965BD110016AC38 /* DefaultInputHandler.java */,
|
||||
33FFFE620965BD110016AC38 /* InputHandler.java */,
|
||||
33FFFE630965BD110016AC38 /* JEditTextArea.java */,
|
||||
33FFFE640965BD110016AC38 /* KeywordMap.java */,
|
||||
33FFFE650965BD110016AC38 /* PdeKeywords.java */,
|
||||
33FFFE660965BD110016AC38 /* PdeTextAreaDefaults.java */,
|
||||
33FFFE670965BD110016AC38 /* readme.txt */,
|
||||
33FFFE680965BD110016AC38 /* SyntaxDocument.java */,
|
||||
33FFFE690965BD110016AC38 /* SyntaxStyle.java */,
|
||||
33FFFE6A0965BD110016AC38 /* SyntaxUtilities.java */,
|
||||
33FFFE6B0965BD110016AC38 /* TextAreaDefaults.java */,
|
||||
33FFFE6C0965BD110016AC38 /* TextAreaPainter.java */,
|
||||
33FFFE6D0965BD110016AC38 /* TextUtilities.java */,
|
||||
33FFFE6E0965BD110016AC38 /* Token.java */,
|
||||
33FFFE6F0965BD110016AC38 /* TokenMarker.java */,
|
||||
);
|
||||
path = syntax;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFE710965BD110016AC38 /* tools */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE720965BD110016AC38 /* AutoFormat.java */,
|
||||
);
|
||||
path = tools;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFE750965BD110016AC38 /* bootloader */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE770965BD110016AC38 /* ATmegaBOOT.c */,
|
||||
33FFFE790965BD110016AC38 /* ATmegaBOOT.hex */,
|
||||
33FFFE7F0965BD110016AC38 /* Makefile */,
|
||||
);
|
||||
name = bootloader;
|
||||
path = ../../bootloader;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
33FFFE800965BD110016AC38 /* build */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE810965BD110016AC38 /* howto.txt */,
|
||||
33FFFE820965BD110016AC38 /* linux */,
|
||||
33FFFE920965BD110016AC38 /* macosx */,
|
||||
33FF01DA0965BD160016AC38 /* shared */,
|
||||
33FF028F0965BD160016AC38 /* windows */,
|
||||
);
|
||||
name = build;
|
||||
path = ..;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
33FFFE820965BD110016AC38 /* linux */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE830965BD110016AC38 /* .cvsignore */,
|
||||
33FFFE840965BD110016AC38 /* dist */,
|
||||
33FFFE8F0965BD110016AC38 /* dist.sh */,
|
||||
33FFFE900965BD110016AC38 /* make.sh */,
|
||||
33FFFE910965BD110016AC38 /* run.sh */,
|
||||
);
|
||||
path = linux;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFE840965BD110016AC38 /* dist */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE850965BD110016AC38 /* .cvsignore */,
|
||||
33FFFE860965BD110016AC38 /* arduino */,
|
||||
33FFFE870965BD110016AC38 /* bootloader */,
|
||||
33FFFE890965BD110016AC38 /* lib */,
|
||||
);
|
||||
path = dist;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFE870965BD110016AC38 /* bootloader */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE880965BD110016AC38 /* burn */,
|
||||
);
|
||||
path = bootloader;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFE890965BD110016AC38 /* lib */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE8A0965BD110016AC38 /* librxtxI2C.so */,
|
||||
33FFFE8B0965BD110016AC38 /* librxtxParallel.so */,
|
||||
33FFFE8C0965BD110016AC38 /* librxtxRaw.so */,
|
||||
33FFFE8D0965BD110016AC38 /* librxtxRS485.so */,
|
||||
33FFFE8E0965BD110016AC38 /* librxtxSerial.so */,
|
||||
);
|
||||
path = lib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFE920965BD110016AC38 /* macosx */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFE930965BD110016AC38 /* .cvsignore */,
|
||||
33FFFE940965BD110016AC38 /* Arduino.xcodeproj */,
|
||||
33FFFEAC0965BD110016AC38 /* dist */,
|
||||
33FFFEBD0965BD110016AC38 /* dist.sh */,
|
||||
33FFFEBE0965BD110016AC38 /* make.sh */,
|
||||
33FFFEBF0965BD110016AC38 /* mkdmg */,
|
||||
33FFFEC00965BD110016AC38 /* run.sh */,
|
||||
);
|
||||
path = macosx;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFE950965BD110016AC38 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFEAC0965BD110016AC38 /* dist */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
330B21530968180400345666 /* librxtxSerial.jnilib */,
|
||||
33FFFEAE0965BD110016AC38 /* bootloader */,
|
||||
33FFFEB20965BD110016AC38 /* drivers */,
|
||||
33FFFEB50965BD110016AC38 /* DS_Store */,
|
||||
33FFFEB60965BD110016AC38 /* jikes */,
|
||||
33FFFEB90965BD110016AC38 /* macosx_setup.command */,
|
||||
33FFFEBA0965BD110016AC38 /* serial */,
|
||||
33FFFEBC0965BD110016AC38 /* tools.zip */,
|
||||
);
|
||||
path = dist;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFEAE0965BD110016AC38 /* bootloader */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFEAF0965BD110016AC38 /* burn.command */,
|
||||
);
|
||||
path = bootloader;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFEB20965BD110016AC38 /* drivers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33FFFEB30965BD110016AC38 /* FTDIUSBSerialDriver_v2_0_1.dmg */,
|
||||
33FFFEB40965BD110016AC38 /* KeyspanUSAdrvr20.dmg */,
|
||||
);
|
||||
path = drivers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33FFFEBA0965BD110016AC38 /* serial */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = serial;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXJavaArchiveBuildPhase section */
|
||||
33AF61660965C4C600B514A9 /* JavaArchive */ = {
|
||||
isa = PBXJavaArchiveBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXJavaArchiveBuildPhase section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
33FFFD3F0965B1E40016AC38 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 33FFFD400965B1E40016AC38 /* Build configuration list for PBXProject "Arduino" */;
|
||||
buildSettings = {
|
||||
};
|
||||
buildStyles = (
|
||||
33AF609C0965C4B700B514A9 /* Development */,
|
||||
33AF609D0965C4B700B514A9 /* Deployment */,
|
||||
);
|
||||
hasScannedForEncodings = 0;
|
||||
mainGroup = 33FFFD3D0965B1E40016AC38;
|
||||
productRefGroup = 33FFFD3D0965B1E40016AC38;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = 33FFFE950965BD110016AC38 /* Products */;
|
||||
ProjectRef = 33FFFE940965BD110016AC38 /* Arduino.xcodeproj */;
|
||||
},
|
||||
);
|
||||
targets = (
|
||||
33FFFE1C0965BBEF0016AC38 /* Dist */,
|
||||
33AF61680965C4C600B514A9 /* App */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
33AF61650965C4C600B514A9 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
33CF03B209662CB700F2C9A9 /* arduino.icns in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
33FF07170965BFFE0016AC38 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "unzip -od $BUILT_PRODUCTS_DIR/examples ../shared/dist/examples.zip\nunzip -od $BUILT_PRODUCTS_DIR dist/tools.zip";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
33AF61640965C4C600B514A9 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
33AF61760965C54B00B514A9 /* PreprocessorInfoChannel.java in Sources */,
|
||||
33AF61770965C54B00B514A9 /* EditorListener.java in Sources */,
|
||||
33AF61780965C54B00B514A9 /* LineObject.java in Sources */,
|
||||
33AF61790965C54B00B514A9 /* Serial.java in Sources */,
|
||||
33AF617A0965C54B00B514A9 /* TextUtilities.java in Sources */,
|
||||
33AF617B0965C54B00B514A9 /* EditorConsole.java in Sources */,
|
||||
33AF617C0965C54B00B514A9 /* TokenMarker.java in Sources */,
|
||||
33AF617D0965C54B00B514A9 /* MessageSiphon.java in Sources */,
|
||||
33AF617E0965C54B00B514A9 /* FindReplace.java in Sources */,
|
||||
33AF617F0965C54B00B514A9 /* SketchCode.java in Sources */,
|
||||
33AF61800965C54B00B514A9 /* EditorLineStatus.java in Sources */,
|
||||
33AF61810965C54B00B514A9 /* EditorHeader.java in Sources */,
|
||||
33AF61820965C54B00B514A9 /* EditorButtons.java in Sources */,
|
||||
33AF61830965C54B00B514A9 /* SyntaxStyle.java in Sources */,
|
||||
33AF61840965C54B00B514A9 /* Uploader.java in Sources */,
|
||||
33AF61850965C54B00B514A9 /* RunnerException.java in Sources */,
|
||||
33AF61860965C54B00B514A9 /* WParser.java in Sources */,
|
||||
33AF61870965C54B00B514A9 /* TextAreaPainter.java in Sources */,
|
||||
33AF61880965C54B00B514A9 /* Sketchbook.java in Sources */,
|
||||
33AF61890965C54B00B514A9 /* EditorStatus.java in Sources */,
|
||||
33AF618A0965C54B00B514A9 /* WTokenTypes.java in Sources */,
|
||||
33AF618B0965C54B00B514A9 /* TextAreaDefaults.java in Sources */,
|
||||
33AF618C0965C54B00B514A9 /* PdePreprocessor.java in Sources */,
|
||||
33AF618D0965C54B00B514A9 /* CSymbolTable.java in Sources */,
|
||||
33AF618E0965C54B00B514A9 /* SketchHistory.java in Sources */,
|
||||
33AF618F0965C54B00B514A9 /* RunnerClassLoader.java in Sources */,
|
||||
33AF61900965C54B00B514A9 /* MessageStream.java in Sources */,
|
||||
33AF61910965C54B00B514A9 /* SyntaxUtilities.java in Sources */,
|
||||
33AF61930965C54B00B514A9 /* PresentMode.java in Sources */,
|
||||
33AF61940965C54B00B514A9 /* STDCTokenTypes.java in Sources */,
|
||||
33AF61950965C54B00B514A9 /* CTokenMarker.java in Sources */,
|
||||
33AF61960965C54B00B514A9 /* CToken.java in Sources */,
|
||||
33AF61970965C54B00B514A9 /* WTreeParserTokenTypes.java in Sources */,
|
||||
33AF61990965C54B00B514A9 /* Runner.java in Sources */,
|
||||
33AF619A0965C54B00B514A9 /* TNode.java in Sources */,
|
||||
33AF619B0965C54B00B514A9 /* KeywordMap.java in Sources */,
|
||||
33AF619C0965C54B00B514A9 /* ExtendedCommonASTWithHiddenTokens.java in Sources */,
|
||||
33AF619D0965C54B00B514A9 /* Sketch.java in Sources */,
|
||||
33AF619E0965C54B00B514A9 /* WEmitterTokenTypes.java in Sources */,
|
||||
33AF619F0965C54B00B514A9 /* TNodeFactory.java in Sources */,
|
||||
33AF61A00965C54B00B514A9 /* Target.java in Sources */,
|
||||
33AF61A10965C54B00B514A9 /* UpdateCheck.java in Sources */,
|
||||
33AF61A20965C54B00B514A9 /* InputHandler.java in Sources */,
|
||||
33AF61A30965C54B00B514A9 /* MessageConsumer.java in Sources */,
|
||||
33AF61A40965C54B00B514A9 /* WLexer.java in Sources */,
|
||||
33AF61A50965C54B00B514A9 /* Compiler.java in Sources */,
|
||||
33AF61A60965C54B00B514A9 /* AutoFormat.java in Sources */,
|
||||
33AF61A70965C54B00B514A9 /* StdCLexer.java in Sources */,
|
||||
33AF61A80965C54B00B514A9 /* StdCParser.java in Sources */,
|
||||
33AF61A90965C54B00B514A9 /* PdeKeywords.java in Sources */,
|
||||
33AF61AA0965C54B00B514A9 /* Editor.java in Sources */,
|
||||
33AF61AB0965C54B00B514A9 /* WEmitter.java in Sources */,
|
||||
33AF61AC0965C54B00B514A9 /* SwingWorker.java in Sources */,
|
||||
33AF61AD0965C54B00B514A9 /* DefaultInputHandler.java in Sources */,
|
||||
33AF61AE0965C54B00B514A9 /* SyntaxDocument.java in Sources */,
|
||||
33AF61AF0965C54B00B514A9 /* WLexerTokenTypes.java in Sources */,
|
||||
33AF61B00965C54B00B514A9 /* Token.java in Sources */,
|
||||
33AF61B10965C54B00B514A9 /* Preferences.java in Sources */,
|
||||
33AF61B20965C54B00B514A9 /* PdeTextAreaDefaults.java in Sources */,
|
||||
33AF61B30965C54B00B514A9 /* WTreeParser.java in Sources */,
|
||||
33AF61B40965C54B00B514A9 /* JEditTextArea.java in Sources */,
|
||||
33AF61B50965C54B00B514A9 /* Base.java in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
33AF61710965C51E00B514A9 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 33FFFE1C0965BBEF0016AC38 /* Dist */;
|
||||
targetProxy = 33AF61700965C51E00B514A9 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
33AF616C0965C4CB00B514A9 /* work */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
FRAMEWORK_SEARCH_PATHS = "";
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
JAVA_CLASS_SEARCH_PATHS = "../shared/lib/registry.jar ../shared/lib/antlr.jar ../shared/lib/mrj.jar ../shared/lib/RXTXcomm.jar ../shared/lib/oro.jar";
|
||||
JAVA_ONLY = YES;
|
||||
JAVA_SOURCE_SUBDIR = .;
|
||||
OPTIMIZATION_CFLAGS = "-O0";
|
||||
OTHER_CFLAGS = "";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_REZFLAGS = "";
|
||||
PRODUCT_NAME = Arduino;
|
||||
SECTORDER_FLAGS = "";
|
||||
WARNING_CFLAGS = (
|
||||
"-Wmost",
|
||||
"-Wno-four-char-constants",
|
||||
"-Wno-unknown-pragmas",
|
||||
);
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = work;
|
||||
};
|
||||
33FFFD410965B1E40016AC38 /* work */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
};
|
||||
name = work;
|
||||
};
|
||||
33FFFE200965BC300016AC38 /* work */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
|
||||
OPTIMIZATION_CFLAGS = "-O0";
|
||||
OTHER_CFLAGS = "";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_REZFLAGS = "";
|
||||
PRODUCT_NAME = Arduino;
|
||||
SECTORDER_FLAGS = "";
|
||||
WARNING_CFLAGS = (
|
||||
"-Wmost",
|
||||
"-Wno-four-char-constants",
|
||||
"-Wno-unknown-pragmas",
|
||||
);
|
||||
};
|
||||
name = work;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
33AF616B0965C4CB00B514A9 /* Build configuration list for PBXApplicationTarget "App" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
33AF616C0965C4CB00B514A9 /* work */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
33FFFD400965B1E40016AC38 /* Build configuration list for PBXProject "Arduino" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
33FFFD410965B1E40016AC38 /* work */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
33FFFE1F0965BC300016AC38 /* Build configuration list for PBXAggregateTarget "Dist" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
33FFFE200965BC300016AC38 /* work */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 33FFFD3F0965B1E40016AC38 /* Project object */;
|
||||
}
|
@ -1,77 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleAllowMixedLocalizations</key>
|
||||
<string>true</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>arduino</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>arduino.icns</string>
|
||||
<key>CFBundleTypeMIMETypes</key>
|
||||
<array>
|
||||
<string>text/plain</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Arduino Source File</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<array>
|
||||
<string>TEXT</string>
|
||||
</array>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>JavaApplicationStub</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>arduino.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>de.berlios.arduino</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Arduino</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>Pde1</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.3</string>
|
||||
<key>Java</key>
|
||||
<dict>
|
||||
<key>ClassPath</key>
|
||||
<string>$JAVAROOT/pde.jar:lib/core.jar:$JAVAROOT/antlr.jar:$JAVAROOT/oro.jar:$JAVAROOT/registry.jar:lib/build:$JAVAROOT/RXTXcomm.jar</string>
|
||||
<key>JVMVersion</key>
|
||||
<string>1.4+</string>
|
||||
<key>MainClass</key>
|
||||
<string>processing.app.Base</string>
|
||||
<key>Properties</key>
|
||||
<dict>
|
||||
<key>apple.awt.Antialiasing</key>
|
||||
<string>true</string>
|
||||
<key>apple.awt.TextAntialiasing</key>
|
||||
<string>true</string>
|
||||
<key>apple.awt.showGrowBox</key>
|
||||
<string>true</string>
|
||||
<key>apple.awt.use-file-dialog-packages</key>
|
||||
<string>false</string>
|
||||
<key>apple.laf.useScreenMenuBar</key>
|
||||
<string>true</string>
|
||||
<key>com.apple.hwaccel</key>
|
||||
<string>true</string>
|
||||
<key>com.apple.smallTabs</key>
|
||||
<string>true</string>
|
||||
</dict>
|
||||
<key>VMOptions</key>
|
||||
<string>-Xms128M -Xmx256M</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
Binary file not shown.
@ -1 +0,0 @@
|
||||
APPLsnip
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
419
build/macosx/dist/core/Makefile
vendored
419
build/macosx/dist/core/Makefile
vendored
@ -1,419 +0,0 @@
|
||||
# Hey Emacs, this is a -*- makefile -*-
|
||||
#
|
||||
# WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al.
|
||||
# Released to the Public Domain
|
||||
# Please read the make user manual!
|
||||
#
|
||||
# Additional material for this makefile was submitted by:
|
||||
# Tim Henigan
|
||||
# Peter Fleury
|
||||
# Reiner Patommel
|
||||
# Sander Pool
|
||||
# Frederik Rouleau
|
||||
# Markus Pfaff
|
||||
#
|
||||
# On command line:
|
||||
#
|
||||
# make all = Make software.
|
||||
#
|
||||
# make clean = Clean out built project files.
|
||||
#
|
||||
# make coff = Convert ELF to AVR COFF (for use with AVR Studio 3.x or VMLAB).
|
||||
#
|
||||
# make extcoff = Convert ELF to AVR Extended COFF (for use with AVR Studio
|
||||
# 4.07 or greater).
|
||||
#
|
||||
# make program = Download the hex file to the device, using avrdude. Please
|
||||
# customize the avrdude settings below first!
|
||||
#
|
||||
# make filename.s = Just compile filename.c into the assembler code only
|
||||
#
|
||||
# To rebuild project do "make clean" then "make all".
|
||||
#
|
||||
|
||||
|
||||
# MCU name
|
||||
MCU = atmega8
|
||||
|
||||
# Output format. (can be srec, ihex, binary)
|
||||
FORMAT = ihex
|
||||
|
||||
# Target file name (without extension).
|
||||
TARGET = prog
|
||||
|
||||
|
||||
# List C source files here. (C dependencies are automatically generated.)
|
||||
#SRC = pins_arduino.c wiring.c ../avrlib/uart.c ../avrlib/buffer.c ../avrlib/timer.c ../avrlib/a2d.c $(TARGET).c
|
||||
SRC = pins_arduino.c wiring.c ../avrlib/uart.c ../avrlib/buffer.c ../avrlib/timer.c $(TARGET).c
|
||||
|
||||
# List Assembler source files here.
|
||||
# Make them always end in a capital .S. Files ending in a lowercase .s
|
||||
# will not be considered source files but generated files (assembler
|
||||
# output from the compiler), and will be deleted upon "make clean"!
|
||||
# Even though the DOS/Win* filesystem matches both .s and .S the same,
|
||||
# it will preserve the spelling of the filenames, and gcc itself does
|
||||
# care about how the name is spelled on its command-line.
|
||||
ASRC =
|
||||
|
||||
|
||||
|
||||
# Optimization level, can be [0, 1, 2, 3, s].
|
||||
# 0 = turn off optimization. s = optimize for size.
|
||||
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
|
||||
OPT = s
|
||||
|
||||
|
||||
# List any extra directories to look for include files here.
|
||||
# Each directory must be seperated by a space.
|
||||
EXTRAINCDIRS = ../avrlib
|
||||
|
||||
|
||||
# Compiler flag to set the C Standard level.
|
||||
# c89 - "ANSI" C
|
||||
# gnu89 - c89 plus GCC extensions
|
||||
# c99 - ISO C99 standard (not yet fully implemented)
|
||||
# gnu99 - c99 plus GCC extensions
|
||||
CSTANDARD = -std=gnu99
|
||||
|
||||
# Place -D or -U options here
|
||||
CDEFS = -D F_CPU=16000000L
|
||||
|
||||
# Place -I options here
|
||||
CINCS =
|
||||
|
||||
|
||||
# Compiler flags.
|
||||
# -g: generate debugging information
|
||||
# -O*: optimization level
|
||||
# -f...: tuning, see GCC manual and avr-libc documentation
|
||||
# -Wall...: warning level
|
||||
# -Wa,...: tell GCC to pass this to the assembler.
|
||||
# -adhlns...: create assembler listing
|
||||
CFLAGS = -g
|
||||
CFLAGS += $(CDEFS) $(CINCS)
|
||||
CFLAGS += -O$(OPT)
|
||||
CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
|
||||
CFLAGS += -Wall -Wstrict-prototypes
|
||||
CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
|
||||
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
|
||||
CFLAGS += $(CSTANDARD)
|
||||
|
||||
|
||||
|
||||
# Assembler flags.
|
||||
# -Wa,...: tell GCC to pass this to the assembler.
|
||||
# -ahlms: create listing
|
||||
# -gstabs: have the assembler create line number information; note that
|
||||
# for use in COFF files, additional information about filenames
|
||||
# and function names needs to be present in the assembler source
|
||||
# files -- see avr-libc docs [FIXME: not yet described there]
|
||||
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
|
||||
|
||||
|
||||
|
||||
#Additional libraries.
|
||||
|
||||
# Minimalistic printf version
|
||||
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
|
||||
|
||||
# Floating point printf version (requires MATH_LIB = -lm below)
|
||||
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
|
||||
|
||||
PRINTF_LIB =
|
||||
|
||||
# Minimalistic scanf version
|
||||
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
|
||||
|
||||
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
|
||||
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
|
||||
|
||||
SCANF_LIB =
|
||||
|
||||
MATH_LIB = -lm
|
||||
|
||||
# External memory options
|
||||
|
||||
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
|
||||
# used for variables (.data/.bss) and heap (malloc()).
|
||||
#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
|
||||
|
||||
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
|
||||
# only used for heap (malloc()).
|
||||
#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
|
||||
|
||||
EXTMEMOPTS =
|
||||
|
||||
# Linker flags.
|
||||
# -Wl,...: tell GCC to pass this to linker.
|
||||
# -Map: create map file
|
||||
# --cref: add cross reference to map file
|
||||
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
|
||||
LDFLAGS += $(EXTMEMOPTS)
|
||||
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
|
||||
|
||||
|
||||
|
||||
|
||||
# Programming support using avrdude. Settings and variables.
|
||||
|
||||
# Programming hardware: alf avr910 avrisp bascom bsd
|
||||
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
|
||||
#
|
||||
# Type: avrdude -c ?
|
||||
# to get a full listing.
|
||||
#
|
||||
AVRDUDE_PROGRAMMER = stk500
|
||||
|
||||
# com1 = serial port. Use lpt1 to connect to parallel port.
|
||||
AVRDUDE_PORT = com1 # programmer connected to serial device
|
||||
|
||||
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
|
||||
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
|
||||
|
||||
|
||||
# Uncomment the following if you want avrdude's erase cycle counter.
|
||||
# Note that this counter needs to be initialized first using -Yn,
|
||||
# see avrdude manual.
|
||||
#AVRDUDE_ERASE_COUNTER = -y
|
||||
|
||||
# Uncomment the following if you do /not/ wish a verification to be
|
||||
# performed after programming the device.
|
||||
#AVRDUDE_NO_VERIFY = -V
|
||||
|
||||
# Increase verbosity level. Please use this when submitting bug
|
||||
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
|
||||
# to submit bug reports.
|
||||
#AVRDUDE_VERBOSE = -v -v
|
||||
|
||||
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
|
||||
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
|
||||
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
|
||||
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
|
||||
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Define directories, if needed.
|
||||
DIRAVR = ../../tools/avr
|
||||
DIRAVRBIN = $(DIRAVR)/bin
|
||||
|
||||
# Define programs and commands.
|
||||
SHELL = sh
|
||||
CC = ${DIRAVRBIN}/avr-gcc
|
||||
OBJCOPY = ${DIRAVRBIN}/avr-objcopy
|
||||
OBJDUMP = ${DIRAVRBIN}/avr-objdump
|
||||
SIZE = ${DIRAVRBIN}/avr-size
|
||||
NM = ${DIRAVRBIN}/avr-nm
|
||||
AVRDUDE = avrdude
|
||||
REMOVE = rm -f
|
||||
COPY = cp
|
||||
|
||||
|
||||
|
||||
|
||||
# Define Messages
|
||||
# English
|
||||
MSG_ERRORS_NONE = Errors: none
|
||||
MSG_BEGIN = -------- begin --------
|
||||
MSG_END = -------- end --------
|
||||
MSG_SIZE_BEFORE = Size before:
|
||||
MSG_SIZE_AFTER = Size after:
|
||||
MSG_COFF = Converting to AVR COFF:
|
||||
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
|
||||
MSG_FLASH = Creating load file for Flash:
|
||||
MSG_EEPROM = Creating load file for EEPROM:
|
||||
MSG_EXTENDED_LISTING = Creating Extended Listing:
|
||||
MSG_SYMBOL_TABLE = Creating Symbol Table:
|
||||
MSG_LINKING = Linking:
|
||||
MSG_COMPILING = Compiling:
|
||||
MSG_ASSEMBLING = Assembling:
|
||||
MSG_CLEANING = Cleaning project:
|
||||
|
||||
|
||||
|
||||
|
||||
# Define all object files.
|
||||
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
|
||||
|
||||
# Define all listing files.
|
||||
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
|
||||
|
||||
|
||||
# Compiler flags to generate dependency files.
|
||||
GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,dep/$(@F).d
|
||||
|
||||
|
||||
# Combine all necessary flags and optional flags.
|
||||
# Add target processor to flags.
|
||||
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
|
||||
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Default target.
|
||||
all: begin gccversion sizebefore build sizeafter finished end
|
||||
|
||||
build: elf hex eep lss sym
|
||||
|
||||
elf: $(TARGET).elf
|
||||
hex: $(TARGET).hex
|
||||
eep: $(TARGET).eep
|
||||
lss: $(TARGET).lss
|
||||
sym: $(TARGET).sym
|
||||
|
||||
|
||||
|
||||
# Eye candy.
|
||||
# AVR Studio 3.x does not check make's exit code but relies on
|
||||
# the following magic strings to be generated by the compile job.
|
||||
begin:
|
||||
@echo
|
||||
@echo $(MSG_BEGIN)
|
||||
|
||||
finished:
|
||||
@echo $(MSG_ERRORS_NONE)
|
||||
|
||||
end:
|
||||
@echo $(MSG_END)
|
||||
@echo
|
||||
|
||||
|
||||
# Display size of file.
|
||||
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
|
||||
ELFSIZE = $(SIZE) -A $(TARGET).elf
|
||||
sizebefore:
|
||||
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi
|
||||
|
||||
sizeafter:
|
||||
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi
|
||||
|
||||
|
||||
|
||||
# Display compiler version information.
|
||||
gccversion :
|
||||
@$(CC) --version
|
||||
|
||||
|
||||
|
||||
# Program the device.
|
||||
program: $(TARGET).hex $(TARGET).eep
|
||||
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
|
||||
|
||||
|
||||
|
||||
|
||||
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
|
||||
COFFCONVERT=$(OBJCOPY) --debugging \
|
||||
--change-section-address .data-0x800000 \
|
||||
--change-section-address .bss-0x800000 \
|
||||
--change-section-address .noinit-0x800000 \
|
||||
--change-section-address .eeprom-0x810000
|
||||
|
||||
|
||||
coff: $(TARGET).elf
|
||||
@echo
|
||||
@echo $(MSG_COFF) $(TARGET).cof
|
||||
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
|
||||
|
||||
|
||||
extcoff: $(TARGET).elf
|
||||
@echo
|
||||
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
|
||||
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
|
||||
|
||||
|
||||
|
||||
# Create final output files (.hex, .eep) from ELF output file.
|
||||
%.hex: %.elf
|
||||
@echo
|
||||
@echo $(MSG_FLASH) $@
|
||||
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
|
||||
|
||||
%.eep: %.elf
|
||||
@echo
|
||||
@echo $(MSG_EEPROM) $@
|
||||
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
|
||||
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
|
||||
|
||||
# Create extended listing file from ELF output file.
|
||||
%.lss: %.elf
|
||||
@echo
|
||||
@echo $(MSG_EXTENDED_LISTING) $@
|
||||
$(OBJDUMP) -h -S $< > $@
|
||||
|
||||
# Create a symbol table from ELF output file.
|
||||
%.sym: %.elf
|
||||
@echo
|
||||
@echo $(MSG_SYMBOL_TABLE) $@
|
||||
$(NM) -n $< > $@
|
||||
|
||||
|
||||
|
||||
# Link: create ELF output file from object files.
|
||||
.SECONDARY : $(TARGET).elf
|
||||
.PRECIOUS : $(OBJ)
|
||||
%.elf: $(OBJ)
|
||||
@echo
|
||||
@echo $(MSG_LINKING) $@
|
||||
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)
|
||||
|
||||
|
||||
# Compile: create object files from C source files.
|
||||
%.o : %.c
|
||||
@echo
|
||||
@echo $(MSG_COMPILING) $<
|
||||
$(CC) -c $(ALL_CFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Compile: create assembler files from C source files.
|
||||
%.s : %.c
|
||||
$(CC) -S $(ALL_CFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Assemble: create object files from assembler source files.
|
||||
%.o : %.S
|
||||
@echo
|
||||
@echo $(MSG_ASSEMBLING) $<
|
||||
$(CC) -c $(ALL_ASFLAGS) $< -o $@
|
||||
|
||||
|
||||
|
||||
# Target: clean project.
|
||||
clean: begin clean_list finished end
|
||||
|
||||
clean_list :
|
||||
@echo
|
||||
@echo $(MSG_CLEANING)
|
||||
$(REMOVE) $(TARGET).hex
|
||||
$(REMOVE) $(TARGET).eep
|
||||
$(REMOVE) $(TARGET).obj
|
||||
$(REMOVE) $(TARGET).cof
|
||||
$(REMOVE) $(TARGET).elf
|
||||
$(REMOVE) $(TARGET).map
|
||||
$(REMOVE) $(TARGET).obj
|
||||
$(REMOVE) $(TARGET).a90
|
||||
$(REMOVE) $(TARGET).sym
|
||||
$(REMOVE) $(TARGET).lnk
|
||||
$(REMOVE) $(TARGET).lss
|
||||
$(REMOVE) $(OBJ)
|
||||
$(REMOVE) $(LST)
|
||||
$(REMOVE) $(SRC:.c=.s)
|
||||
$(REMOVE) $(SRC:.c=.d)
|
||||
$(REMOVE) dep/*
|
||||
|
||||
|
||||
|
||||
# Include the dependency files.
|
||||
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
|
||||
|
||||
|
||||
# Listing of phony targets.
|
||||
.PHONY : all begin finish end sizebefore sizeafter gccversion \
|
||||
build elf hex eep lss sym coff extcoff \
|
||||
clean clean_list program
|
||||
|
||||
|
||||
|
38
build/macosx/dist/lib/Makefile
vendored
38
build/macosx/dist/lib/Makefile
vendored
@ -1,38 +0,0 @@
|
||||
# Arduino Makefile (for Mac OS X)
|
||||
# Nick Zambetti and David A. Mellis
|
||||
# $Id: makefile.osx,v 1.6 2005/05/23 17:19:56 mellis Exp $
|
||||
|
||||
# By default, this makefile uses the serial device specified by
|
||||
# Wiring (either in the Tools | Serial Port menu or the Wiring
|
||||
# preferences file in the sketchbook directory) and passed as
|
||||
# an argument to make. To override this value, uncomment the
|
||||
# following line and change the value to the desired device.
|
||||
# SERIAL=/dev/tty.usbserial-1B1
|
||||
|
||||
# The Wiring Lite IDE runs the "compile" rule when you click the play button.
|
||||
compile:
|
||||
rm -rf tmp
|
||||
mkdir tmp
|
||||
cat ../core/wiringlite.inc > tmp/prog.c
|
||||
cat build/*.c >> tmp/prog.c
|
||||
cp ../core/* tmp/
|
||||
../tools/gnumake -s -C tmp
|
||||
|
||||
# The IDE runs the "program" rule when you hit the export button.
|
||||
# The string after the colon determines the method used to
|
||||
# program the microcontroller: program-using-bootloader or
|
||||
# program-with-isp.
|
||||
program: program-using-bootloader
|
||||
|
||||
# This rule is for uploading code using a bootloader already on
|
||||
# the microcontroller. It should run at the baud rate specified
|
||||
# in the bootloader's code, current 9600 baud.
|
||||
program-using-bootloader:
|
||||
../../tools/avr/bin/uisp -dprog=stk500 -dspeed=9600 -dserial=${SERIAL} -dpart=ATmega8 if=tmp/prog.hex --upload
|
||||
|
||||
# This rule is for uploading code using an in-system programmer,
|
||||
# e.g. the one sold by Atmel. In this case, you want to erase the
|
||||
# microcontroller, upload the code, and then verify it.
|
||||
# Atmel's isp follows the stk500 protocol and works at 115200 baud.
|
||||
program-with-isp:
|
||||
../../tools/avr/bin/uisp -dprog=stk500 -dspeed=115200 -dserial=${SERIAL} -dpart=ATmega8 if=tmp/prog.hex --erase --upload --verify
|
@ -25,7 +25,7 @@ else
|
||||
mkdir -p work/lib/build
|
||||
mkdir -p work/examples
|
||||
|
||||
cp ../../lib/librxtxSerial.jnilib work/
|
||||
cp dist/librxtxSerial.jnilib work/
|
||||
cp -pR dist/drivers work/
|
||||
|
||||
# to have a copy of this guy around for messing with
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.7 KiB |
2
build/windows/dist/lib/makefile.w2k
vendored
2
build/windows/dist/lib/makefile.w2k
vendored
@ -1,6 +1,6 @@
|
||||
# Arduino Makefile (for Windows 2000)
|
||||
# Nick Zambetti and David A. Mellis
|
||||
# $Id: makefile.w2k,v 1.1 2005/05/23 17:19:56 mellis Exp $
|
||||
# $Id$
|
||||
|
||||
# Windows 2000 seems to need backslashes in certain commands
|
||||
# (e.g. bin\rm in the compile rule below) where Windows XP
|
||||
|
2
build/windows/dist/lib/makefile.win
vendored
2
build/windows/dist/lib/makefile.win
vendored
@ -1,6 +1,6 @@
|
||||
# Arduino Makefile (for Windows XP)
|
||||
# Nick Zambetti and David A. Mellis
|
||||
# $Id: makefile.win,v 1.9 2005/05/23 18:21:46 mellis Exp $
|
||||
# $Id$
|
||||
|
||||
# By default, this makefile uses the serial device specified by
|
||||
# Wiring (either in the Tools | Serial Port menu or the Wiring
|
||||
|
@ -1 +0,0 @@
|
||||
serial.jar
|
Binary file not shown.
16
readme.txt
16
readme.txt
@ -4,7 +4,8 @@ language.
|
||||
|
||||
Arduino is an open source project, owned by nobody and supported by many.
|
||||
|
||||
For more information, see the website at: http://arduino.berlios.de/
|
||||
For more information, see the website at: http://arduino.berlios.de/ or the
|
||||
forums at arduino.berlios.de/cgi-bin/yabb/YaBB.cgi
|
||||
|
||||
The Team is composed of Massimo Banzi, David Cuartielles, Tom Igoe,
|
||||
David Mellis and Nicholas Zambetti.
|
||||
@ -15,6 +16,19 @@ taking care of the production.
|
||||
Yaniv Steiner and Giorgio Olivero have been supporting the project and are
|
||||
working at using it with the Instant Soup platform.
|
||||
|
||||
Arduino uses the GNU avr-gcc toolchain, uisp, avr-libc, avrlib, and code
|
||||
from Processing and Wiring.
|
||||
|
||||
UPDATES
|
||||
|
||||
0004
|
||||
Serial monitor added (click the toolbar button to turn it on or off). Baud
|
||||
rate is controlled by the serial.debug_rate field in preferences.txt, defaults
|
||||
to 9600.
|
||||
Serial port menu now automatically refreshes when opened.
|
||||
Created Xcode project for building Arduino on the Mac (doesn't yet regenerate
|
||||
the grammar files or package the distribution); active target should be "App".
|
||||
|
||||
0003
|
||||
millis() now updates every millisecond instead of every second.
|
||||
Keyspan and FTDI USB drivers included with Mac and Windows distributions.
|
||||
|
@ -19,7 +19,7 @@
|
||||
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
Boston, MA 02111-1307 USA
|
||||
|
||||
$Id: pins_arduino.c,v 1.4 2005/05/24 17:47:41 mellis Exp $
|
||||
$Id$
|
||||
*/
|
||||
|
||||
#include <avr/io.h>
|
||||
|
@ -19,7 +19,7 @@
|
||||
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
Boston, MA 02111-1307 USA
|
||||
|
||||
$Id: pins_atmega8.c,v 1.4 2005/05/24 17:47:41 mellis Exp $
|
||||
$Id$
|
||||
*/
|
||||
|
||||
#include <avr/io.h>
|
||||
|
Loading…
x
Reference in New Issue
Block a user