Arduino: fix build for secondary arch

* remove old recipes
* fix requires for java runtime
This commit is contained in:
Gerasim Troeglazov
2019-07-19 23:30:56 +10:00
parent 8702991ed6
commit 18d5066070
8 changed files with 22 additions and 1682 deletions

View File

@@ -1,100 +0,0 @@
SUMMARY="IDE for the Arduino embedded hardware family"
DESCRIPTION="The open-source Arduino Software (IDE) makes it easy to write code \
and upload it to the board. It runs on Windows, Mac OS X, and Linux. \
The environment is written in Java and based on Processing and other \
open-source software."
HOMEPAGE="http://arduino.cc"
COPYRIGHT="Arduino team"
LICENSE="GNU GPL v2"
REVISION="2"
SOURCE_URI="http://downloads.arduino.cc/arduino-1.0.6-linux32.tgz"
CHECKSUM_SHA256="f059a572231abafb92099a3a404c0a41502c3413668610676c40029384edc658"
SOURCE_DIR="arduino-1.0.6"
PATCHES="arduino_x86-1.0.6.patchset"
ARCHITECTURES="!x86_gcc2 x86 ?x86_64"
SECONDARY_ARCHITECTURES="x86"
PROVIDES="
arduino$secondaryArchSuffix = $portVersion
app:Arduino$secondaryArchSuffix = $portVersion
"
REQUIRES="
haiku$secondaryArchSuffix
avr_binutils$secondaryArchSuffix
avr_gcc$secondaryArchSuffix
avr_libc$secondaryArchSuffix
openjdk$secondaryArchSuffix
rxtx$secondaryArchSuffix
cmd:avrdude$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
"
BUILD_PREREQUIRES="
cmd:gcc$secondaryArchSuffix
cmd:make
"
BUILD()
{
cd haiku
make
}
INSTALL()
{
arduinoDir=$appsDir/Arduino
mkdir -p $arduinoDir
cp -r examples $arduinoDir
cp -r libraries $arduinoDir
cp -r reference $arduinoDir
cp -r lib $arduinoDir
cp -r tools $arduinoDir
rm $arduinoDir/lib/RXTXcomm.jar
rm $arduinoDir/lib/librxtxSerial.so
rm $arduinoDir/lib/librxtxSerial64.so
mkdir -p $arduinoDir/hardware
cp -r hardware/arduino $arduinoDir/hardware
mkdir -p $arduinoDir/hardware/tools
cp hardware/tools/avrdude.conf $arduinoDir/hardware/tools
ln -s /bin/x86/avrdude $arduinoDir/hardware/tools/avrdude
mkdir -p $arduinoDir/hardware/tools/avr
ln -s /bin/x86 $arduinoDir/hardware/tools/avr/bin
mkdir -p $arduinoDir/hardware/tools/avr/bin.gcc
ln -s /bin/x86/avr-cpp $arduinoDir/hardware/tools/avr/bin.gcc/avr-cpp
ln -s /bin/x86/avr-g++ $arduinoDir/hardware/tools/avr/bin.gcc/avr-g++
ln -s /bin/x86/avr-gcc $arduinoDir/hardware/tools/avr/bin.gcc/avr-gcc
mkdir -p $arduinoDir/hardware/tools/avr/etc
ln -s /system/settings/avrdude.conf $arduinoDir/hardware/tools/avr/etc/avrdude.conf
echo '#!/bin/sh
APPDIR="$(dirname -- "$(readlink -f -- "${0}")" )"
cd "$APPDIR"
for LIB in \
java/lib/rt.jar \
java/lib/tools.jar \
lib/*.jar \
;
do
CLASSPATH="${CLASSPATH}:${LIB}"
done
export CLASSPATH
LD_LIBRARY_PATH=`pwd`/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
export PATH="${APPDIR}/java/bin:${PATH}"
java processing.app.Base "$@"
' > $arduinoDir/arduino.sh
chmod +x $arduinoDir/arduino.sh
cp "haiku/Arduino IDE" $arduinoDir
cp revisions.txt $arduinoDir
addAppDeskbarSymlink "$arduinoDir/Arduino IDE"
}

View File

@@ -6,7 +6,7 @@ used to write and upload computer code to the board."
HOMEPAGE="http://arduino.org"
COPYRIGHT="2016 Arduino S.r.l. - Italy"
LICENSE="GNU GPL v2"
REVISION="3"
REVISION="4"
SOURCE_URI="https://github.com/arduino-cli/arduino-version/releases/download/$portVersion/arduino-$portVersion-linux32.zip"
CHECKSUM_SHA256="c80560935109121c4a8db6b34404bbdeb45e421584a895ca2277babc468f3b6a"
SOURCE_DIR="arduino-$portVersion-linux32"
@@ -42,7 +42,7 @@ REQUIRES="
avr_gcc$secondaryArchSuffix
avr_libc$secondaryArchSuffix
cmd:avrdude
java:runtime >= 8
java:runtime == 8
"
BUILD_REQUIRES="
@@ -77,10 +77,8 @@ BUILD()
fi
gcc -shared \
-I/system/lib/openjdk8/include \
-I/system/lib/x86/openjdk8/include \
-I/system/lib/openjdk8/include/haiku \
-I/system/lib/x86/openjdk8/include/haiku \
-I/system/$relativeLibDir/openjdk8/include \
-I/system/$relativeLibDir/openjdk8/include/haiku \
$sourceDir2/src/cpp/_nix_based/jssc.cpp \
-l$STDLIB \
-o $sourceDir2/build/libs/haiku/libjSSC-2.8_x86_64.so
@@ -129,7 +127,7 @@ INSTALL()
$arduinoDir/hardware/arduino/avr/platform.txt
sed -i "s|^tools.avrdude.cmd.path=.*|tools.avrdude.cmd.path=$binDir/avrdude|g" \
$arduinoDir/hardware/arduino/avr/platform.txt
sed -i "s|^tools.avrdude.config.path=.*|tools.avrdude.config.path=/boot/system/settings/avrdude.conf|g" \
sed -i "s|^tools.avrdude.config.path=.*|tools.avrdude.config.path=/system/settings/avrdude.conf|g" \
$arduinoDir/hardware/arduino/avr/platform.txt
#Patch for SAM tools
#sed -i "s|^compiler.path=.*|compiler.path=$binDir/|g" \
@@ -173,31 +171,28 @@ INSTALL()
cd $sourceDir
#Generate launcher script
echo '#!/bin/sh
APPDIR="$(dirname -- "$(readlink -f -- "${0}")" )"
cd "$APPDIR"
for LIB in \
java/lib/rt.jar \
java/lib/tools.jar \
lib/*.jar \
;
cat > $arduinoDir/arduino.sh << EOF
#!/bin/sh
APPDIR="\$(dirname -- "\$(readlink -f -- "\${0}")" )"
cd "\$APPDIR"
for LIB in java/lib/rt.jar java/lib/tools.jar lib/*.jar ;
do
CLASSPATH="${CLASSPATH}:${LIB}"
CLASSPATH="\${CLASSPATH}:\${LIB}"
done
export CLASSPATH
LD_LIBRARY_PATH=`pwd`/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
LD_LIBRARY_PATH=`pwd`/lib\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
export PATH="/system/lib/openjdk8/bin:${PATH}"
export JAVA_HOME="/system/lib/openjdk8"
Arduino processing.app.Base "$@"
' > $arduinoDir/arduino.sh
export PATH="/system/$relativeLibDir/openjdk8/jre/bin:\${PATH}"
export JAVA_HOME="/system/$relativeLibDir/openjdk8"
Arduino processing.app.Base "\$@"
EOF
chmod +x $arduinoDir/arduino.sh
#Copy binary launcher
cp "haiku/Arduino IDE" $arduinoDir
mkdir -p $libDir/openjdk8/bin
cp /system/lib/openjdk8/bin/java $libDir/openjdk8/bin/Arduino
mkdir -p $libDir/openjdk8/jre/bin
cp /system/$relativeLibDir/openjdk8/jre/bin/java $libDir/openjdk8/jre/bin/Arduino
cp revisions.txt $arduinoDir
@@ -213,9 +208,8 @@ Arduino processing.app.Base "$@"
-e "s|@MINOR@|$MINOR|" \
-e "s|@LONG_INFO@|$LONG_INFO|" \
$portDir/additional-files/arduino.rdef.in > arduino.rdef
addResourcesToBinaries arduino.rdef "$arduinoDir/Arduino IDE"
local APP_SIGNATURE="application/x-vnd.arduino-bin"
sed \
-e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \
@@ -224,7 +218,8 @@ Arduino processing.app.Base "$@"
-e "s|@MINOR@|$MINOR|" \
-e "s|@LONG_INFO@|$LONG_INFO|" \
$portDir/additional-files/arduino-bin.rdef.in > arduino-bin.rdef
addResourcesToBinaries arduino-bin.rdef $libDir/openjdk8/bin/Arduino
addResourcesToBinaries arduino-bin.rdef $libDir/openjdk8/jre/bin/Arduino
mimeset -f $libDir/openjdk8/jre/bin/Arduino
addAppDeskbarSymlink "$arduinoDir/Arduino IDE"
}

View File

@@ -1,197 +0,0 @@
SUMMARY="IDE for the Arduino embedded hardware family"
DESCRIPTION="Arduino is an open-source tool used for building electronics projects.
Arduino consists of a physical programmable circuit board (often referred to as a micro-controller) \
and a development environment, or IDE (Integrated Development Environment) that runs on your computer, \
used to write and upload computer code to the board."
HOMEPAGE="http://arduino.org"
COPYRIGHT="2015 Arduino S.r.l. - Italy"
LICENSE="GNU GPL v2"
REVISION="2"
SOURCE_URI="http://download.arduino.org/IDE/1.7.4/arduino-1.7.4.org-linux32.tar.xz"
CHECKSUM_SHA256="80611ec38c3176785717b39a454842b21d5d18664d8ba8051048a91f45f18762"
SOURCE_DIR="arduino-1.7.4-linux32"
SOURCE_URI_2="git+https://github.com/scream3r/java-simple-serial-connector#f5564869f8a70503c29c0d24609245321ba39b2c"
SOURCE_URI_3="svn+https://github.com/arduino-org/Arduino/trunk/app/src/processing/app"
SOURCE_URI_4="svn+https://github.com/arduino-org/Arduino/trunk/arduino-core/src/processing"
PATCHES="arduino-1.7.x.patchset"
PATCHES_2="jssc_2.8.0.patchset"
PATCHES_3="JFileChooser-1.7.x.patchset"
PATCHES_4="SettingsFolder-1.7.x.patchset"
ARCHITECTURES="!x86_gcc2 x86 ?x86_64"
SECONDARY_ARCHITECTURES="x86"
DISABLE_SOURCE_PACKAGE="yes"
PROVIDES="
arduino$secondaryArchSuffix = $portVersion
app:Arduino$secondaryArchSuffix = $portVersion
"
REQUIRES="
haiku$secondaryArchSuffix
avr_binutils$secondaryArchSuffix
avr_gcc$secondaryArchSuffix
avr_libc$secondaryArchSuffix
openjdk$secondaryArchSuffix
cmd:avrdude$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
openjdk$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:gcc$secondaryArchSuffix
cmd:jar
cmd:java
cmd:java_config
cmd:javac
cmd:make
"
BUILD()
{
cd haiku
make
mkdir -p $sourceDir2/build/jssc
javac -encoding ISO-8859-1 $sourceDir2/src/java/jssc/*.java
cp $sourceDir2/src/java/jssc/*.class $sourceDir2/build/jssc
mkdir -p $sourceDir2/build/libs/haiku
cd $sourceDir2/build/libs/haiku
if [ "$effectiveTargetArchitecture" = "x86_gcc2" ]; then
STDLIB="stdc++.r4"
else
STDLIB="stdc++"
fi
gcc -shared \
-I/boot/system/lib/openjdk/include \
-I/boot/system/lib/x86/openjdk/include \
-I/boot/system/lib/openjdk/include/haiku \
-I/boot/system/lib/x86/openjdk/include/haiku \
$sourceDir2/src/cpp/_nix_based/jssc.cpp \
-l$STDLIB \
-o $sourceDir2/build/libs/haiku/libjSSC-2.8_x86.so
cp -r $sourceDir2/src/java/libs/* $sourceDir2/build/libs
cd $sourceDir2/build
jar cf jssc-2.8.0.jar jssc libs
mkdir -p $sourceDir2/build/processing/app
cp -f $sourceDir2/src/java/jssc/SerialPortList.java $sourceDir2/build/processing/app
sed -i 's|package jssc;|package processing.app;|1' \
$sourceDir2/build/processing/app/SerialPortList.java
sed -i '/import java.util.regex.Pattern;/a import jssc.SerialNativeInterface;' \
$sourceDir2/build/processing/app/SerialPortList.java
javac -encoding ISO-8859-1 -cp ./jssc-2.8.0.jar:$sourceDir/lib/arduino-core.jar \
$sourceDir2/build/processing/app/SerialPortList.java
rm $sourceDir2/build/processing/app/SerialPortList.java
cd $sourceDir
javac -encoding ISO-8859-1 -cp java/lib/rt.jar:java/lib/tools.jar:./lib/pde.jar:./lib/arduino-core.jar \
$sourceDir3/Base.java $sourceDir3/Sketch.java
mkdir -p $sourceDir3/processing/app
cp -f $sourceDir3/*.class $sourceDir3/processing/app
javac -encoding ISO-8859-1 \
-cp java/lib/rt.jar:java/lib/tools.jar:./lib/pde.jar:./lib/arduino-core.jar:./lib/jna.jar \
$sourceDir4/app/Platform.java
mkdir -p $sourceDir4/processing/app
cp -f $sourceDir4/app/*.class $sourceDir4/processing/app
}
INSTALL()
{
arduinoDir=$appsDir/Arduino
mkdir -p $arduinoDir
cp -r examples $arduinoDir
cp -r libraries $arduinoDir
cp -r reference $arduinoDir
cp -r lib $arduinoDir
cp -r tools $arduinoDir
mkdir -p $arduinoDir/hardware/arduino
cp -r hardware/arduino/avr $arduinoDir/hardware/arduino
#Patch for AVR tools
sed -i "s|^compiler.path=.*|compiler.path=$binDir/|g" \
$arduinoDir/hardware/arduino/avr/platform.txt
sed -i "s|^tools.avrdude.cmd.path=.*|tools.avrdude.cmd.path=$binDir/avrdude|g" \
$arduinoDir/hardware/arduino/avr/platform.txt
sed -i "s|^tools.avrdude.config.path=.*|tools.avrdude.config.path=/boot/system/settings/avrdude.conf|g" \
$arduinoDir/hardware/arduino/avr/platform.txt
#Patch for SAM tools
#sed -i "s|^compiler.path=.*|compiler.path=$binDir/|g" \
# $arduinoDir/hardware/arduino/sam/platform.txt
#Patch for SAMD tools
#sed -i "s|^compiler.path=.*|compiler.path=$binDir/|g" \
# $arduinoDir/hardware/arduino/samd/platform.txt
#Disable check for update
sed -i 's|^update.check.*|update.check = false|g' $arduinoDir/lib/preferences.txt
#Set default serial port
sed -i 's|^serial.port=.*|serial.port=/dev/ports/usb0|g' $arduinoDir/lib/preferences.txt
#Add command for opening
echo "browser = /bin/open" >> $arduinoDir/lib/preferences.txt
echo "launcher = /bin/open" >> $arduinoDir/lib/preferences.txt
#Add fake libastylej.so library
rm $arduinoDir/lib/libastylej.so
ln -s $libDir/libroot.so $arduinoDir/lib/libastylej.so
cp -f $sourceDir2/build/jssc-2.8.0.jar $arduinoDir/lib
#Add patched SerialList class into arduino-core.jar
cd $sourceDir2/build
jar -uf $arduinoDir/lib/arduino-core.jar \
processing/app/SerialPortList.class \
processing/app/SerialPortList$1.class
#Add patch for JFileChooser using
cd $sourceDir3
jar -uf $arduinoDir/lib/pde.jar \
processing/app/*.class
#Add patch for settings directory
cd $sourceDir4
jar -uf $arduinoDir/lib/arduino-core.jar \
processing/app/*.class
cd $sourceDir
#Generate launcher script
echo '#!/bin/sh
APPDIR="$(dirname -- "$(readlink -f -- "${0}")" )"
cd "$APPDIR"
for LIB in \
java/lib/rt.jar \
java/lib/tools.jar \
lib/*.jar \
;
do
CLASSPATH="${CLASSPATH}:${LIB}"
done
export CLASSPATH
LD_LIBRARY_PATH=`pwd`/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
export PATH="${APPDIR}/java/bin:${PATH}"
java processing.app.Base "$@"
' > $arduinoDir/arduino.sh
chmod +x $arduinoDir/arduino.sh
#Copy binary launcher
cp "haiku/Arduino IDE" $arduinoDir
cp revisions.txt $arduinoDir
addAppDeskbarSymlink "$arduinoDir/Arduino IDE"
}

View File

@@ -1,205 +0,0 @@
SUMMARY="IDE for the Arduino embedded hardware family"
DESCRIPTION="Arduino is an open-source tool used for building electronics projects.
Arduino consists of a physical programmable circuit board (often referred to as a micro-controller) \
and a development environment, or IDE (Integrated Development Environment) that runs on your computer, \
used to write and upload computer code to the board."
HOMEPAGE="http://arduino.org"
COPYRIGHT="2015 Arduino S.r.l. - Italy"
LICENSE="GNU GPL v2"
REVISION="1"
SOURCE_URI="http://download.arduino.org/IDE/1.7.7/arduino-1.7.7.org-linux32.tar.xz"
CHECKSUM_SHA256="1640363e847f97ad640f248fc635d324b73219ec8a93147967d1dcda07db1d3c"
SOURCE_DIR="arduino-1.7.7-linux32"
SOURCE_URI_2="https://github.com/scream3r/java-simple-serial-connector/archive/f5564869f8a70503c29c0d24609245321ba39b2c.tar.gz"
CHECKSUM_SHA256_2="3d874fbf2afa60f6c21db7da6d89cc584f42e6ff01b63238bf235776699379e6"
SOURCE_DIR_2="java-simple-serial-connector-f5564869f8a70503c29c0d24609245321ba39b2c"
SOURCE_URI_3="https://github.com/arduino-org/Arduino/archive/67152784328dd589ad34c9aeae54158a2b92a89d.tar.gz"
CHECKSUM_SHA256_3="b1010b340ee274a3cc0e3768b12098fb002a1100777d72b114f1a068df428102"
SOURCE_DIR_3="Arduino-67152784328dd589ad34c9aeae54158a2b92a89d/app/src/processing/app"
SOURCE_URI_4="https://github.com/arduino-org/Arduino/archive/67152784328dd589ad34c9aeae54158a2b92a89d.tar.gz"
CHECKSUM_SHA256_4="b1010b340ee274a3cc0e3768b12098fb002a1100777d72b114f1a068df428102"
SOURCE_DIR_4="Arduino-67152784328dd589ad34c9aeae54158a2b92a89d/arduino-core/src/processing"
PATCHES="arduino-1.7.x.patchset"
PATCHES_2="jssc_2.8.0.patchset"
PATCHES_3="JFileChooser-1.7.x.patchset"
PATCHES_4="SettingsFolder-1.7.x.patchset"
ARCHITECTURES="!x86_gcc2 x86 ?x86_64"
SECONDARY_ARCHITECTURES="x86"
DISABLE_SOURCE_PACKAGE="yes"
PROVIDES="
arduino$secondaryArchSuffix = $portVersion
app:Arduino$secondaryArchSuffix = $portVersion
"
REQUIRES="
haiku$secondaryArchSuffix
avr_binutils$secondaryArchSuffix
avr_gcc$secondaryArchSuffix
avr_libc$secondaryArchSuffix
openjdk$secondaryArchSuffix
cmd:avrdude$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
openjdk$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:gcc$secondaryArchSuffix
cmd:jar
cmd:java
cmd:java_config
cmd:javac
cmd:make
"
BUILD()
{
cd haiku
make
mkdir -p $sourceDir2/build/jssc
javac -encoding ISO-8859-1 $sourceDir2/src/java/jssc/*.java
cp $sourceDir2/src/java/jssc/*.class $sourceDir2/build/jssc
mkdir -p $sourceDir2/build/libs/haiku
cd $sourceDir2/build/libs/haiku
if [ "$effectiveTargetArchitecture" = "x86_gcc2" ]; then
STDLIB="stdc++.r4"
else
STDLIB="stdc++"
fi
gcc -shared \
-I/boot/system/lib/openjdk/include \
-I/boot/system/lib/x86/openjdk/include \
-I/boot/system/lib/openjdk/include/haiku \
-I/boot/system/lib/x86/openjdk/include/haiku \
$sourceDir2/src/cpp/_nix_based/jssc.cpp \
-l$STDLIB \
-o $sourceDir2/build/libs/haiku/libjSSC-2.8_x86.so
cp -r $sourceDir2/src/java/libs/* $sourceDir2/build/libs
cd $sourceDir2/build
jar cf jssc-2.8.0.jar jssc libs
mkdir -p $sourceDir2/build/processing/app
cp -f $sourceDir2/src/java/jssc/SerialPortList.java $sourceDir2/build/processing/app
sed -i 's|package jssc;|package processing.app;|1' \
$sourceDir2/build/processing/app/SerialPortList.java
sed -i '/import java.util.regex.Pattern;/a import jssc.SerialNativeInterface;' \
$sourceDir2/build/processing/app/SerialPortList.java
javac -encoding ISO-8859-1 -cp ./jssc-2.8.0.jar:$sourceDir/lib/arduino-core.jar \
$sourceDir2/build/processing/app/SerialPortList.java
rm $sourceDir2/build/processing/app/SerialPortList.java
cd $sourceDir
javac -encoding ISO-8859-1 -cp java/lib/rt.jar:java/lib/tools.jar:./lib/pde.jar:./lib/arduino-core.jar \
$sourceDir3/Base.java $sourceDir3/Sketch.java
mkdir -p $sourceDir3/processing/app
cp -f $sourceDir3/*.class $sourceDir3/processing/app
javac -encoding ISO-8859-1 \
-cp java/lib/rt.jar:java/lib/tools.jar:./lib/pde.jar:./lib/arduino-core.jar:./lib/jna.jar \
$sourceDir4/app/Platform.java
mkdir -p $sourceDir4/processing/app
cp -f $sourceDir4/app/*.class $sourceDir4/processing/app
}
INSTALL()
{
arduinoDir=$appsDir/Arduino
mkdir -p $arduinoDir
cp -r examples $arduinoDir
cp -r libraries $arduinoDir
cp -r reference $arduinoDir
cp -r lib $arduinoDir
cp -r tools $arduinoDir
mkdir -p $arduinoDir/hardware/arduino
cp -r hardware/arduino/avr $arduinoDir/hardware/arduino
#Patch for AVR tools
sed -i "s|^compiler.path=.*|compiler.path=$binDir/|g" \
$arduinoDir/hardware/arduino/avr/platform.txt
sed -i "s|^tools.avrdude.cmd.path=.*|tools.avrdude.cmd.path=$binDir/avrdude|g" \
$arduinoDir/hardware/arduino/avr/platform.txt
sed -i "s|^tools.avrdude.config.path=.*|tools.avrdude.config.path=/boot/system/settings/avrdude.conf|g" \
$arduinoDir/hardware/arduino/avr/platform.txt
#Patch for SAM tools
#sed -i "s|^compiler.path=.*|compiler.path=$binDir/|g" \
# $arduinoDir/hardware/arduino/sam/platform.txt
#Patch for SAMD tools
#sed -i "s|^compiler.path=.*|compiler.path=$binDir/|g" \
# $arduinoDir/hardware/arduino/samd/platform.txt
#Disable check for update
sed -i 's|^update.check.*|update.check = false|g' \
$arduinoDir/lib/preferences.txt
#Set default serial port
sed -i 's|^serial.port=.*|serial.port=/dev/ports/usb0|g' \
$arduinoDir/lib/preferences.txt
#Add command for opening
echo "browser = /bin/open" >> $arduinoDir/lib/preferences.txt
echo "launcher = /bin/open" >> $arduinoDir/lib/preferences.txt
#Add fake libastylej.so library
rm $arduinoDir/lib/libastylej.so
ln -s $libDir/libroot.so $arduinoDir/lib/libastylej.so
cp -f $sourceDir2/build/jssc-2.8.0.jar $arduinoDir/lib
#Add patched SerialList class into arduino-core.jar
cd $sourceDir2/build
jar -uf $arduinoDir/lib/arduino-core.jar \
processing/app/SerialPortList.class \
processing/app/SerialPortList$1.class
#Add patch for JFileChooser using
cd $sourceDir3
jar -uf $arduinoDir/lib/pde.jar \
processing/app/*.class
#Add patch for settings directory
cd $sourceDir4
jar -uf $arduinoDir/lib/arduino-core.jar \
processing/app/*.class
cd $sourceDir
#Generate launcher script
echo '#!/bin/sh
APPDIR="$(dirname -- "$(readlink -f -- "${0}")" )"
cd "$APPDIR"
for LIB in \
java/lib/rt.jar \
java/lib/tools.jar \
lib/*.jar \
;
do
CLASSPATH="${CLASSPATH}:${LIB}"
done
export CLASSPATH
LD_LIBRARY_PATH=`pwd`/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
export PATH="${APPDIR}/java/bin:${PATH}"
java processing.app.Base "$@"
' > $arduinoDir/arduino.sh
chmod +x $arduinoDir/arduino.sh
#Copy binary launcher
cp "haiku/Arduino IDE" $arduinoDir
cp revisions.txt $arduinoDir
addAppDeskbarSymlink "$arduinoDir/Arduino IDE"
}

View File

@@ -1,88 +0,0 @@
From d9128679f6b93378adbd23d7ce20c57468ab147c Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Thu, 11 Jun 2015 18:25:51 +1000
Subject: Use JFileChooser instead of FileDialog for open files
diff --git a/Base.java b/Base.java
index 76ba797..1e930d7 100644
--- a/Base.java
+++ b/Base.java
@@ -656,30 +656,21 @@ public class Base {
*/
public void handleOpenPrompt() throws Exception {
// get the frontmost window frame for placing file dialog
- FileDialog fd = new FileDialog(activeEditor, _("Open an Arduino sketch..."), FileDialog.LOAD);
- File lastFolder = new File(Preferences.get("last.folder", getSketchbookFolder().getAbsolutePath()));
- if (lastFolder.exists() && lastFolder.isFile()) {
- lastFolder = lastFolder.getParentFile();
- }
- fd.setDirectory(lastFolder.getAbsolutePath());
-
- // Only show .pde files as eligible bachelors
- fd.setFilenameFilter(new FilenameFilter() {
- public boolean accept(File dir, String name) {
- return name.toLowerCase().endsWith(".ino")
- || name.toLowerCase().endsWith(".pde");
- }
- });
+ JFileChooser fd = new JFileChooser(Preferences.get("last.folder", Base.getSketchbookFolder().getAbsolutePath()));
+ fd.setDialogTitle(_("Open an Arduino sketch..."));
+ fd.setFileSelectionMode(JFileChooser.FILES_ONLY);
+ fd.setFileFilter(new FileNameExtensionFilter(_("Sketches (*.ino, *.pde)"), "ino", "pde"));
- fd.setVisible(true);
+ Dimension preferredSize = fd.getPreferredSize();
+ fd.setPreferredSize(new Dimension(preferredSize.width + 200, preferredSize.height + 200));
- String directory = fd.getDirectory();
- String filename = fd.getFile();
+ int returnVal = fd.showOpenDialog(activeEditor);
- // User canceled selection
- if (filename == null) return;
+ if (returnVal != JFileChooser.APPROVE_OPTION) {
+ return;
+ }
- File inputFile = new File(directory, filename);
+ File inputFile = fd.getSelectedFile();
Preferences.set("last.folder", inputFile.getAbsolutePath());
handleOpen(inputFile);
diff --git a/Sketch.java b/Sketch.java
index ca8d13c..a937988 100644
--- a/Sketch.java
+++ b/Sketch.java
@@ -790,16 +790,22 @@ public class Sketch {
}
// get a dialog, select a file to add to the sketch
- FileDialog fd = new FileDialog(editor, _("Select an image or other data file to copy to your sketch"), FileDialog.LOAD);
- fd.setVisible(true);
+ JFileChooser fd = new JFileChooser(Preferences.get("last.folder", Base.getSketchbookFolder().getAbsolutePath()));
+ fd.setDialogTitle(_("Select an image or other data file to copy to your sketch"));
+ fd.setFileSelectionMode(JFileChooser.FILES_ONLY);
+
+ Dimension preferredSize = fd.getPreferredSize();
+ fd.setPreferredSize(new Dimension(preferredSize.width + 200, preferredSize.height + 200));
+
+ int returnVal = fd.showOpenDialog(editor);
- String directory = fd.getDirectory();
- String filename = fd.getFile();
- if (filename == null) return;
+ if (returnVal != JFileChooser.APPROVE_OPTION) {
+ return;
+ }
// copy the file into the folder. if people would rather
// it move instead of copy, they can do it by hand
- File sourceFile = new File(directory, filename);
+ File sourceFile = fd.getSelectedFile();
// now do the work of adding the file
boolean result = addFile(sourceFile);
--
2.2.2

View File

@@ -1,24 +0,0 @@
From c7895860292ccb31e6b7418520e27c5b95fc3a48 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Thu, 11 Jun 2015 19:54:35 +1000
Subject: Move preferences to haiku settings folder
diff --git a/app/Platform.java b/app/Platform.java
index 3c46c09..9d5e6dc 100644
--- a/app/Platform.java
+++ b/app/Platform.java
@@ -81,8 +81,8 @@ public class Platform {
public File getSettingsFolder() throws Exception {
// otherwise make a .processing directory int the user's home dir
- File home = new File(System.getProperty("user.home"));
- File dataFolder = new File(home, ".arduino15");
+ File settings = new File(System.getProperty("user.home")+"/config/settings/");
+ File dataFolder = new File(settings, "Arduino15");
return dataFolder;
/*
--
2.2.2

View File

@@ -1,423 +0,0 @@
From e675b2348ba66659539ca8e96e3a0f4ac9362b22 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Wed, 10 Jun 2015 23:31:37 +1000
Subject: Add binary launcher
diff --git a/haiku/MainApp.cpp b/haiku/MainApp.cpp
new file mode 100644
index 0000000..4518f05
--- /dev/null
+++ b/haiku/MainApp.cpp
@@ -0,0 +1,197 @@
+#include <Application.h>
+#include <String.h>
+#include <Resources.h>
+#include <Roster.h>
+#include <Mime.h>
+#include <Path.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+#include "MainApp.h"
+#define APPSIGNATURE "application/x-vnd.ArduinoIDE"
+#define TARGET "arduino.sh"
+
+SimpleLauncherApp::SimpleLauncherApp(int argc, char **argv) : BApplication(APPSIGNATURE)
+{
+// InstallMimeType(APPSIGNATURE, "text/x-processing", "Proecssing source code", "pde");
+}
+
+SimpleLauncherApp::~SimpleLauncherApp()
+{
+
+}
+
+
+BPath
+SimpleLauncherApp::MyPath(const char *dir)
+{
+ app_info inf;
+ be_app->GetAppInfo(&inf);
+ BPath bpath = BPath(&(inf.ref));
+ BPath par;
+ bpath.GetParent(&par);
+ par.Append(dir);
+ return(par);
+}
+
+void
+SimpleLauncherApp::RefsReceived(BMessage *pmsg)
+{
+ if (pmsg->HasMessenger("TrackerViewToken")) {
+ pmsg->FindMessenger("TrackerViewToken", &fTrackerMessenger);
+ }
+
+ uint32 type;
+ int32 count;
+ status_t ret = pmsg->GetInfo("refs", &type, &count);
+ if (ret != B_OK || type != B_REF_TYPE)
+ return;
+
+ entry_ref ref;
+ for (int32 i = 0; i < count; i++) {
+ if (pmsg->FindRef("refs", i, &ref) == B_OK)
+ {
+ BPath file=BPath(&ref);
+ char temp[1024];
+ sprintf(temp,"%s//%s \"%s\" &",MyPath("").Path(), TARGET, file.Path());
+ system(temp);
+ Quit();
+ }
+ }
+}
+
+
+void
+SimpleLauncherApp::ArgvReceived(int32 argc, char **argv)
+{
+ BMessage *pmsg = NULL;
+ for (int32 i = 1; i < argc; i++) {
+ entry_ref ref;
+ status_t err = get_ref_for_path(argv[i], &ref);
+ if (err == B_OK) {
+ if (!pmsg) {
+ pmsg = new BMessage;
+ pmsg->what = B_REFS_RECEIVED;
+ }
+ pmsg->AddRef("refs", &ref);
+ }
+ }
+ if (pmsg) {
+ RefsReceived(pmsg);
+ delete pmsg;
+ }
+}
+
+void
+SimpleLauncherApp::ReadyToRun()
+{
+ char temp[1024];
+ sprintf(temp,"%s//%s &",MyPath("").Path(), TARGET);
+ system(temp);
+ Quit();
+}
+
+void
+SimpleLauncherApp::InstallMimeType(const char *app, const char *mimetxt, const char *text, const char *ext)
+{
+ // install mime type of documents
+ BMimeType mime(mimetxt);
+ status_t ret = mime.InitCheck();
+ if (ret != B_OK) {
+ fprintf(stderr, "Could not init native document mime type (%s): %s.\n",
+ mimetxt, strerror(ret));
+ return;
+ }
+
+ ret = mime.Install();
+ if (ret != B_OK && ret != B_FILE_EXISTS) {
+ fprintf(stderr, "Could not install native document mime type (%s): %s.\n",
+ mimetxt, strerror(ret));
+ return;
+ }
+ // set preferred app
+ ret = mime.SetPreferredApp(app);
+ if (ret != B_OK) {
+ fprintf(stderr, "Could not set native document preferred app: %s\n",
+ strerror(ret));
+ }
+
+ // set descriptions
+ ret = mime.SetShortDescription(text);
+ if (ret != B_OK) {
+ fprintf(stderr, "Could not set short description of mime type: %s\n",
+ strerror(ret));
+ }
+ ret = mime.SetLongDescription(text);
+ if (ret != B_OK) {
+ fprintf(stderr, "Could not set long description of mime type: %s\n",
+ strerror(ret));
+ }
+
+ // set extensions
+ BMessage message;
+
+ char extn[128];
+ char *extptr = extn, *ptr;
+
+ for( ptr = (char*)ext; *ptr!=0; ptr++){
+ *extptr=*ptr;
+ if(*(ptr+1)==' ' || *(ptr+1)==0) {
+ *(extptr+1)=0;
+ message.AddString("extensions", extn);
+ extptr = extn;
+ if(*(ptr+1)==' ')
+ ptr++;
+ continue;
+ }
+ extptr++;
+ }
+ ret = mime.SetFileExtensions(&message);
+ if (ret != B_OK) {
+ fprintf(stderr, "Could not set extensions of mime type: %s\n",
+ strerror(ret));
+ }
+
+/* // set sniffer rule
+ char snifferRule[32];
+ ret = mime.SetSnifferRule("0.50 (\"MZ\")");
+ if (ret != B_OK) {
+ BString parseError;
+ BMimeType::CheckSnifferRule(snifferRule, &parseError);
+ fprintf(stderr, "Could not set sniffer rule of mime type: %s\n",
+ parseError.String());
+ }*/
+
+ // set mime icon
+ BResources* resources = be_app->AppResources();
+ // does not need to be freed (belongs to BApplication base)
+ if (resources != NULL) {
+ size_t size;
+ BString iconame("BEOS:");
+ iconame.Append(mimetxt);
+ const void* iconData = resources->LoadResource('VICN', iconame.String(), &size);
+ if (iconData != NULL && size > 0) {
+ if (mime.SetIcon(reinterpret_cast<const uint8*>(iconData), size)
+ != B_OK) {
+ fprintf(stderr, "Could not set vector icon of mime type.\n");
+ }
+ } else {
+ fprintf(stderr, "Could not find icon in app resources "
+ "(data: %p, size: %ld).\n", iconData, size);
+ }
+ } else
+ fprintf(stderr, "Could not find app resources.\n");
+}
+
+
+int main(int argc, char **argv)
+{
+ SimpleLauncherApp application(argc,argv);
+ application.Run();
+ return 0;
+}
+
+
diff --git a/haiku/MainApp.h b/haiku/MainApp.h
new file mode 100644
index 0000000..1199bec
--- /dev/null
+++ b/haiku/MainApp.h
@@ -0,0 +1,24 @@
+#ifndef DOSBOXLAUNCHER_H
+#define DOSBOXLAUNCHER_H
+
+#include <Application.h>
+#include <String.h>
+#include <Resources.h>
+#include <Roster.h>
+#include <Mime.h>
+#include <Path.h>
+
+class SimpleLauncherApp : public BApplication {
+ public:
+ SimpleLauncherApp(int argc, char **argv);
+ ~SimpleLauncherApp();
+ void RefsReceived(BMessage *pmsg);
+ void ArgvReceived(int32 argc, char **argv);
+ virtual void ReadyToRun();
+ void InstallMimeType(const char *app, const char *mimetxt, const char *text, const char *ext);
+ BPath MyPath(const char *dir);
+ BMessenger fTrackerMessenger;
+};
+
+
+#endif
diff --git a/haiku/Makefile b/haiku/Makefile
new file mode 100644
index 0000000..4371da4
--- /dev/null
+++ b/haiku/Makefile
@@ -0,0 +1,17 @@
+CFLAGS=
+LIBS=-lroot -lbe
+CC=g++
+OBJS = MainApp.o
+
+all: Arduino
+
+Arduino: $(OBJS)
+ $(CC) -o "Arduino IDE" $^ $(LIBS)
+ rc resource.rdef
+ xres -o "Arduino IDE" resource.rsrc
+
+.cpp.o:
+ $(CC) $(CFLAGS) -c $^
+
+clean:
+ rm -f "Arduino IDE" $(OBJS)
diff --git a/haiku/resource.rdef b/haiku/resource.rdef
new file mode 100644
index 0000000..b795392
--- /dev/null
+++ b/haiku/resource.rdef
@@ -0,0 +1,152 @@
+resource app_flags B_MULTIPLE_LAUNCH;
+resource app_version {
+ major = 1,
+ middle = 7,
+ minor = 4,
+
+ variety = B_APPV_DEVELOPMENT,
+ internal = 0,
+
+ short_info = "Arduino IDE",
+ long_info = "Arduino IDE"
+};
+
+resource(1, "BEOS:APP_SIG") (#'MIMS') "application/x-vnd.ArduinoIDE";
+
+resource(1, "BEOS:FILE_TYPES") message {
+ "types" = "text/x-arduino",
+ "types" = "text/x-source-code"
+};
+
+resource(3, "BEOS:text/x-processing") #'VICN' array {
+ $"6E6369660705010200060338D2F73CD163BF82B23B84A94B88504870C901BFDE"
+ $"F4BDFFFFFFFFE7EEFB020106023E49240000000000003CAAAA4940004A30007C"
+ $"7588ADFFCEE5FF040192020006023A55A7BAC22B3F0DA23E958646C2EB4870EB"
+ $"00010101FF5296CB0100969CEE03FDFEFE150606AE0BB40BBF4D33C3AEB75CC1"
+ $"72BDEFC606C13EC804CA27BD82C117B920C51BBB40BF06B8073AB6BC0605AE02"
+ $"B57D3EB9B9C3EFB7BB44BBB751BD75C936CA8DC1B0402F0A093B593D5BBFCDC9"
+ $"3D455BC516C5F060465B435D4544510A045A425E3F5A3D574008022E45373C08"
+ $"02364441390802364B463B08023A4E4A3E08032D422E4430450803373839393A"
+ $"3B0009BEC0B3EABEC0B3EAC1D2B3A5C74DB6B5C4FBB4ACC9B9B8C2CB53BF05CB"
+ $"36BBD9CB7CC1E6C89BC704CA77C4D0C6C0C93BC12CCB11C40CCABABD99CB92B7"
+ $"5CC7A4B9DBCA3BB4F7C537B41EBE4FB3C1C1B2B46DBB2AB89EB648B61BB831BA"
+ $"5FB4EABEC0B3EABC89B418BEC0B3EA0208BB38BB6BBD16BB54B94FBB75B73BBE"
+ $"D5B789BCF0B6D0C0E3BA45C388B840C30BBC6C4BBFB9C10DBE99C2D9C0B347C4"
+ $"33C3A7C257C3C650C3AEC837C044C7E9C228C896BE65C5A7BBBAC772BC61C36E"
+ $"BAC9BFB9BE0CC0E9BC19BEBFBC8B0005BB13BCEABB13BCEABCCDBCB6BEE8BF89"
+ $"BE2CBE21BE33C117BAB5C21CBC89C297B918C1CFB8E9BE61B817BFD3B954BD93"
+ $"BB13BCEABA2ABCFEBB13BCEA0204BA36BF21BB0DBF20BA31BF69BA35BFF8BA34"
+ $"BFB0BB11BFFBBCCABFF8BBEEBFF9BCBFBFB5BCBBBF22BCE4BF5BBBE4BF1E0005"
+ $"C3D3BCEAC3D3BCEAC585BCACC6C6C010C72DBE5DC67CC18EC35AC21CC4CCC288"
+ $"C210C1CDC08ABF90C126C0ADC12ABE49C3D3BCEAC250BD06C3D3BCEA020CC382"
+ $"BE49C3C9BE47C37EBE90C37FBF1FC382BED8C338BF23C2A9BF2148BF1FC2A4BF"
+ $"69C2A9BFF7C2A7BFB048BFFBC37FBFFAC337BFF7C38DC043C390C0DDC369C09D"
+ $"C3D2C0E0C457C0DDC415C0E0C45CC092C459BFFAC456C046C4A1BFF6C530BFF8"
+ $"C4E8BFFAC534BFB0C530BF22C532BF69C4E9BF1EC45ABF1FC4A1BF22C456BED8"
+ $"C458BE49C45ABE91C410BE450009BB38BB6BBB38BB6BBD16BB54BFB9BE0CBEBF"
+ $"BC8BC0E9BC19C5A7BBBAC36EBAC9C772BC61C837C044C896BE65C7E9C228C433"
+ $"C3A750C3AEC257C3C6BFB9C10DC0B347BE99C2D9BA45C388BC6C4BB840C30BB7"
+ $"3BBED5B6D0C0E3B789BCF0BB38BB6BB94FBB75BB38BB6B0005BB13BCEABB13BC"
+ $"EABA2ABCFEB8E9BE61B954BD93B817BFD3BAB5C21CB918C1CFBC89C297BEE8BF"
+ $"89BE33C117BE2CBE21BB13BCEABCCDBCB6BB13BCEA0204C3D3BCEAC585BCACC2"
+ $"50BD06C08ABF90C12ABE49C126C0ADC35AC21CC210C1CDC4CCC288C6C6C010C6"
+ $"7CC18EC72DBE5D020CC382BE49C37EBE90C3C9BE47C458BE49C410BE45C45ABE"
+ $"91C45ABF1FC456BED8C4A1BF22C530BF22C4E9BF1EC532BF69C530BFF8C534BF"
+ $"B0C4E8BFFAC459BFFAC4A1BFF6C456C046C457C0DDC45CC092C415C0E0C390C0"
+ $"DDC3D2C0E0C369C09DC37FBFFAC38DC043C337BFF7C2A9BFF748BFFBC2A7BFB0"
+ $"C2A9BF21C2A4BF6948BF1FC37FBF1FC338BF23C382BED80204BA36BF21BA31BF"
+ $"69BB0DBF20BCBBBF22BBE4BF1EBCE4BF5BBCCABFF8BCBFBFB5BBEEBFF9BA35BF"
+ $"F8BB11BFFBBA34BFB0120A03020203000A0001011001178400040A020101000A"
+ $"0001001001178400040A010100000A040304060738201B16FF01178100040A04"
+ $"02060438201B001601178200040A04010538201B16FF01178100040A00010838"
+ $"2B1116FF01178100040A00010938231916FF01178100040A00010838251E16FF"
+ $"01178100040A00010938283116FF01178100040A05020A0B023ED68500000000"
+ $"00003EE7FBC07E244872CD0A05020C0D023ED6850000000000003EE7FBC07E24"
+ $"4872CD0A05020E0F023ED6850000000000003EE7FBC07E244872CD0A06031011"
+ $"12023ED6850000000000003EE7FBC07E244872CD0A060113023ED68500000000"
+ $"00003EE7FBC07E244872CD0A060114023ED6850000000000003EE7FBC07E2448"
+ $"72CD"
+};
+
+resource(4, "BEOS:text/x-arduino") #'VICN' array {
+ $"6E636966070200060338D2F73CD163BF82B23B84A94B88504870C900FFEFA5BD"
+ $"FFFCC0FFFFF8900501020106023E49240000000000003CAAAA4940004A30007C"
+ $"F1B706FFFFFCC0040192020016023A55A6BAC2293F0DA33E958646C2EB47A1D6"
+ $"0001FF9E0301969C03FDFEFE160606AE0BB40BBF4D33C3AEB75CC172BDEFC606"
+ $"C13EC804CA27BD82C117B920C51BBB40BF06B8073AB6BC0605AE02B57D3EB9B9"
+ $"C3EFB7BB44BBB751BD75C936CA8DC1B0402F0A093B593D5BBFCDC93D455BC516"
+ $"C5F060465B435D4544510A045A425E3F5A3D574008022E40BDB53308023142BE"
+ $"34BC0308023444C0E4BB5108023746C0D8BD7508023A48C270BDB508023D4A4C"
+ $"BD820802404CC408BFE50009BEC0B3EABEC0B3EAC1D2B3A4C74DB6B5C4FBB4AB"
+ $"C9B8B8C1CB52BF04CB35BBD9CB7CC1E6C89BC704CA77C4D0C6BFC93AC12BCB11"
+ $"C40BCAB9BD99CB92B75BC7A3B9DBCA3AB4F7C537B41DBE4EB3C0C1B2B46CBB2A"
+ $"B89EB648B61AB830BA5FB4EABEC0B3EABC88B418BEC0B3EA0208BB37BB6ABD16"
+ $"BB53B94EBB75B73BBED5B788BCF0B6CFC0E2BA45C388B840C30ABC6B4BBFB8C1"
+ $"0CBE99C2D8C0B347C433C3A6C257C3C550C3ADC837C043C7E9C227C896BE65C5"
+ $"A6BBB9C771BC60C36EBAC8BFB8BE0CC0E9BC19BEBFBC8B0005BB12BCE9BB12BC"
+ $"E9BCCDBCB6BEE7BF89BE2BBE20BE33C116BAB5C21CBC88C297B918C1CFB8E8BE"
+ $"60B816BFD3B953BD92BB12BCE9BA2ABCFEBB12BCE90204BA36BF21BB0DBF1FBA"
+ $"30BF68BA35BFF7BA34BFB0BB11BFFABCCABFF7BBEDBFF8BCBFBFB4BCBABF22BC"
+ $"E43FBBE4BF1D0005C3D3BCE9C3D3BCE9C585BCABC6C6C00FC72DBE5CC67CC18D"
+ $"C359C21CC4CCC288C20FC1CDC08ABF8FC125C0ACC129BE49C3D3BCE9C250BD05"
+ $"C3D3BCE9020CC382BE49C3C9BE46C37EBE8FC37FBF1EC382BED8C338BF23C2A8"
+ $"BF2148BF1EC2A3BF68C2A8BFF6C2A6BFB048BFFAC37FBFF9C337BFF6C38CC042"
+ $"C38FC0DCC369C09DC3D2C0DFC456C0DCC414C0DFC45BC091C458BFF9C455C045"
+ $"C4A1BFF5C530BFF7C4E8BFF9C534BFB0C530BF22C532BF68C4E9BF1DC459BF1E"
+ $"C4A1BF22C455BED8C457BE49C459BE90C40FBE440009BB37BB6ABB37BB6ABD16"
+ $"BB53BFB8BE0CBEBFBC8BC0E9BC19C5A6BBB9C36EBAC8C771BC60C837C043C896"
+ $"BE65C7E9C227C433C3A650C3ADC257C3C5BFB8C10CC0B347BE99C2D8BA45C388"
+ $"BC6B4BB840C30AB73BBED5B6CFC0E2B788BCF0BB37BB6AB94EBB75BB37BB6A00"
+ $"05BB12BCE9BB12BCE9BA2ABCFEB8E8BE60B953BD92B816BFD3BAB5C21CB918C1"
+ $"CFBC88C297BEE7BF89BE33C116BE2BBE20BB12BCE9BCCDBCB6BB12BCE90204C3"
+ $"D3BCE9C585BCABC250BD05C08ABF8FC129BE49C125C0ACC359C21CC20FC1CDC4"
+ $"CCC288C6C6C00FC67CC18DC72DBE5C020CC382BE49C37EBE8FC3C9BE46C457BE"
+ $"49C40FBE44C459BE90C459BF1EC455BED8C4A1BF22C530BF22C4E9BF1DC532BF"
+ $"68C530BFF7C534BFB0C4E8BFF9C458BFF9C4A1BFF5C455C045C456C0DCC45BC0"
+ $"91C414C0DFC38FC0DCC3D2C0DFC369C09DC37FBFF9C38CC042C337BFF6C2A8BF"
+ $"F648BFFAC2A6BFB0C2A8BF21C2A3BF6848BF1EC37FBF1EC338BF23C382BED802"
+ $"04BA36BF21BA30BF68BB0DBF1FBCBABF22BBE4BF1DBCE43FBCCABFF7BCBFBFB4"
+ $"BBEDBFF8BA35BFF7BB11BFFABA34BFB00E0A03020203000A0101011001178400"
+ $"040A020101000A0101001001178400040A000100000A04040604080A1815FF01"
+ $"178100040A04040604080A18001501178200040A04030907051815FF01178100"
+ $"040A05020B0C023E7F0C0000000000003EA1F9491F1A48D76E0A05020D0E023E"
+ $"7F0C0000000000003EA1F9491F1A48D76E0A05020F10023E7F0C000000000000"
+ $"3EA1F9491F1A48D76E0A0603111213023E7F0C0000000000003EA1F9491F1A48"
+ $"D76E0A060114023E7F0C0000000000003EA1F9491F1A48D76E0A060115023E7F"
+ $"0C0000000000003EA1F9491F1A48D76E"
+};
+
+resource vector_icon array {
+ $"6E636966020301969C03FDFEFE0B0009BEC0B3EABEC0B3EAC1D2B3A5C74DB6B5"
+ $"C4FBB4ACC9B9B8C2CB53BF05CB36BBD9CB7CC1E6C89BC704CA77C4D0C6C0C93B"
+ $"C12CCB11C40CCABABD99CB92B75CC7A4B9DBCA3BB4F7C537B41EBE4FB3C1C1B2"
+ $"B46DBB2AB89EB648B61BB831BA5FB4EABEC0B3EABC89B418BEC0B3EA0208BB38"
+ $"BB6BBD16BB54B94FBB75B73BBED5B789BCF0B6D0C0E3BA45C388B840C30BBC6C"
+ $"4BBFB9C10DBE99C2D9C0B347C433C3A7C257C3C650C3AEC837C044C7E9C228C8"
+ $"96BE65C5A7BBBAC772BC61C36EBAC9BFB9BE0CC0E9BC19BEBFBC8B0005BB13BC"
+ $"EABB13BCEABCCDBCB6BEE8BF89BE2CBE21BE33C117BAB5C21CBC89C297B918C1"
+ $"CFB8E9BE61B817BFD3B954BD93BB13BCEABA2ABCFEBB13BCEA0204BA36BF21BB"
+ $"0DBF20BA31BF69BA35BFF8BA34BFB0BB11BFFBBCCABFF8BBEEBFF9BCBFBFB5BC"
+ $"BBBF22BCE4BF5BBBE4BF1E0005C3D3BCEAC3D3BCEAC585BCACC6C6C010C72DBE"
+ $"5DC67CC18EC35AC21CC4CCC288C210C1CDC08ABF90C126C0ADC12ABE49C3D3BC"
+ $"EAC250BD06C3D3BCEA020CC382BE49C3C9BE47C37EBE90C37FBF1FC382BED8C3"
+ $"38BF23C2A9BF2148BF1FC2A4BF69C2A9BFF7C2A7BFB048BFFBC37FBFFAC337BF"
+ $"F7C38DC043C390C0DDC369C09DC3D2C0E0C457C0DDC415C0E0C45CC092C459BF"
+ $"FAC456C046C4A1BFF6C530BFF8C4E8BFFAC534BFB0C530BF22C532BF69C4E9BF"
+ $"1EC45ABF1FC4A1BF22C456BED8C458BE49C45ABE91C410BE450009BB38BB6BBB"
+ $"38BB6BBD16BB54BFB9BE0CBEBFBC8BC0E9BC19C5A7BBBAC36EBAC9C772BC61C8"
+ $"37C044C896BE65C7E9C228C433C3A750C3AEC257C3C6BFB9C10DC0B347BE99C2"
+ $"D9BA45C388BC6C4BB840C30BB73BBED5B6D0C0E3B789BCF0BB38BB6BB94FBB75"
+ $"BB38BB6B0005BB13BCEABB13BCEABA2ABCFEB8E9BE61B954BD93B817BFD3BAB5"
+ $"C21CB918C1CFBC89C297BEE8BF89BE33C117BE2CBE21BB13BCEABCCDBCB6BB13"
+ $"BCEA0204C3D3BCEAC585BCACC250BD06C08ABF90C12ABE49C126C0ADC35AC21C"
+ $"C210C1CDC4CCC288C6C6C010C67CC18EC72DBE5D020CC382BE49C37EBE90C3C9"
+ $"BE47C458BE49C410BE45C45ABE91C45ABF1FC456BED8C4A1BF22C530BF22C4E9"
+ $"BF1EC532BF69C530BFF8C534BFB0C4E8BFFAC459BFFAC4A1BFF6C456C046C457"
+ $"C0DDC45CC092C415C0E0C390C0DDC3D2C0E0C369C09DC37FBFFAC38DC043C337"
+ $"BFF7C2A9BFF748BFFBC2A7BFB0C2A9BF21C2A4BF6948BF1FC37FBF1FC338BF23"
+ $"C382BED80204BA36BF21BA31BF69BB0DBF20BCBBBF22BBE4BF1EBCE4BF5BBCCA"
+ $"BFF8BCBFBFB5BBEEBFF9BA35BFF8BB11BFFBBA34BFB0060A00020001000A0002"
+ $"0203000A00020405000A0103060708000A010109000A01010A00"
+};
+
--
2.2.2

View File

@@ -1,618 +0,0 @@
From 5e59a7c0e04f09fc8289c551e2a9af949477a77b Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sat, 11 Apr 2015 19:50:14 +1000
Subject: Add haiku icon and change default preferences
diff --git a/lib/arduino_icon.hvif b/lib/arduino_icon.hvif
new file mode 100644
index 0000000000000000000000000000000000000000..dff2432f4d5d10e208316d11f321c68f96067d50
GIT binary patch
literal 8224
zcmeHLZBUfg6@FO+QG}>KP@{1H`A8us0&6i8_Z$)svw&Yo=uD@&B}8|GU1c{0)Ywc-
zjn<?=O%NFk4VbDKqi8Lev^to?h%s#kTBf5@O)OZYF^F-;F~kTxXW6q~Su#7rk1~UI
zxWm5B{e189p8Gua=H)NRou8kRqEPaq+&@UFnyx7RR36|_haPS1{FFc?H+M-s_i-zX
z(Sg4Fl+h0SRVw_3%2ZV5iua9Clx-0M^;hdHE6vIcs^!b9c2GSYQD!Bh%1iiB3C}8+
z3SM)W6_29ark1`85=Hd_T?XOKc_1Em;8g;Y#Y>lD^D_^`iI>WsS}iSDi1c>Ke9Ge~
zb6bC9j2r%Q!ubXKm9cL45yD2<ab01dtsm~oj|Lj(XPm+~kIOmSjvMu5CA8{_lF6@`
zrK~m?j27kIt?Mv8K1>_c_9WJKhC}Nd3m$#?YdG3dgwt=&#}Hj8*6mw^k&|aaMrI){
zAD5>6nYt4WHt6A}XZ=Ci+j>(QjE)XZ{yGg$?cA(wi!fu}p`(zra}|dCYc^KLC1Omf
z5d)jHLi1b$u1mAdOV|>Ift9`5njH(F;Du(;&Y7hh=+N}MMLE?LjvqYMI`7SgpT(|%
z6;R&(JT9({z!&p#@JPxsj5*&9k2bEwbvO2Eb2>FxJ+VX^Yi$7a#5X{Db+=ZgSZp#H
zONuQe&)SxS7DDmkl~5O#n#=?$7ipn<AwG!e4Tbn18d*!(lX$_OrZQLJ1+OFAm3YQE
z|Ch2i;_upV@5J{`dI!FJ@F29^c?9PEt{bAh+YS%jjYaKC{V+Z(1TzjLVR%|R>Qql*
zM@j&$&wUIV@{RzPe}3r_I0!$!=^Wg7Vn3|U(!htWv_SNQ#Sk4Ch1p+rL0Hsu4D*|U
z6Uq|suU{>~qLfM4`FK9AUwi_z2ZC{XQ<J?TCi>Wl7a{(_LD=-;$#B{jjFYq{p=@*#
ze!guCRs>E(S~k48As*A3iZH(Q3Ve8H2F@+o1Evetp?+^OI0>dVw<TA8{kHqa?@4Mp
z6n>ez1j?TL3Z6w}uKWsaBHWc<#yP)D*&Dx&cHBF^S@HEyKD7lfq6e<Me;3M{Yhh7i
zBpx=E!2_GGfRsCU6yR6ST!uB9zJOI5n&FqPOvSP5b+DjC!GM3i4wVPay72W`>uEUK
z{}JrEdKuy^A((j90(ajF$MlSiP+ZjR7{bX5G2jt&6+V)(k6I3e6kb?0WlvHB*HD=&
zDS|H}oPYB!%)2W8=Dd}%H&S-laqpxw{H+SqHCE_7Qw91|6<)784L#{9EGzyPuI{rs
zgKFHnZ^O=wR!D8Ag7fG4;FRtUa4%bhGiuMk{^)O9NH|bl1vip=p*pA@PA^oU?oS`X
zKjQjf)RtqQEwXw9#Rv|FKVD0~-$u1S>B~7dC($3ne>4M+H$~#6o1<}S-ghA7j(`v#
zXy*c~Pr3rn9G;CAZ$E^VkWiemXbg5YPexPTr!HJ5Uu9rV`bSVvmyLOG6Y<lzk@%b4
z;n<QIieJ}sIEMJ4fY6e6@I{46DR71o5aZ}WT~66EAOv4aWv&4s_!oq`1_a}r^JqTa
z0%DmR_Z|>8KZwPUw>scfeJnPXTH#veG(22ug$WtcaLQ~IPOXc@NqO{DFNniEj|Ste
z$;p_L9*mb#l5zi&Dooz3!Gmck^xvz&b9GiYmY$4%S!0Fc4=3aM?{qi=YW&LyIDcIS
zX#O0FXIi_VAV`gGtgu2?>@?&6i))L<S7)lQ=aU&2(-?#&HYTEeQ81>4CF4d6z>LpQ
z@rF)?b?<4gM$-$+RVi3hPm!!i#?6^sE+0W+bu3;?>w@fmM&qHQR`@b>8ghVEj#A_9
zr7C=3W*oN11mNY)1Z*z|#+U`k_{dL!a9iIj?1)$4e?HORroZ>WQ?04U0o*+y8CRe0
z2HlcGJdxMo5zw^qw&WJrBg?{ylM!bkPDPxHI2my^;&jCMNP9=%3n0Eie1`ZA@gd?%
z#HWaF5g#+qAv+uKNaA_K1BoXRk0hQ+Jd}7UnUVX(!Nj{;*pX>*#L|ex5z8Zv#zCwA
zVo=1eh=CD9<0MW@kC-4aMPibqM|Wb}Nf}udM^sZ}Rb*CV*FlDerHG@5rHH4K1QA*h
zUJ+suX6NE_M7ZsQBU4R9{X`8#9YrlgJw;7LT}5q0eMOB$ogLhX#)&40Mu}#LhKZ($
z#);;M28t$%Mv7)Sxfk6QofX{`9Tr^{ofh2|9T!~}ofq8~AK?D&@b|;X?Hd|d@he9Z
zIg-c`MUE_vZ$J(na?p^2ha5zl9Lixv4li<;k;9EU2X1R`wp5mun3XMLB7HH%NmP&i
zY{r#&WJBtj<T{e?=i;~`B`&uOqr6T}zKrq^)#D!69!u}^(>5|c^Yx<K{INCW#5mvl
z<rWm`cwn~B6YRLn8uLv~rfnWsO0lWbRId0{@97_AQ@YpJ*Kb~_Urm&JOLvaGEY@38
zPblF<px1OP8b1pqe3q%9x||rd4Wm?3Q(s1Tms;`NCR4(Rdti$A!c|Tyu1n8#cvgJr
z$~f0$20|(GOgt%^P8j#;uRNeUp~J_y?JRp9I3)$SUAppJ&OrSLWoe-<hwJk^Dh9!~
z+i}|mpe`?Yj-Kt?kUVe~E?)|>kfm74^+xk^rt&hq#b7ep8Y#-ndG;S3|Gtl}q$^;9
zafPCk8I0<+2D9N8hEjv2Qf)5QmzLOCm+33K6}+Uq&y0;G`N-}wGu&c^!;M387%@{z
zG3?83c9^C;l--PXJr<t9cC#2N^R}C%5$<g_Gdt?L?`9hY!QZsw&fSbRFPpIQZpIrd
zzaDS6!-$<7KC<(B`}BFGIPpr#HsFia@LF)a!PsGY;f<Xn!o9Jx%2D5)9m^p2Yj%7P
Vc36Y&v+}*&?ElQl*x|*>{{Vs4$pQcX
literal 0
HcmV?d00001
diff --git a/lib/preferences.txt b/lib/preferences.txt
index f9bac32..dc5c6d5 100644
--- a/lib/preferences.txt
+++ b/lib/preferences.txt
@@ -63,7 +63,7 @@ last.sketch.count=0
# by default, check the processing server for any updates
# (please avoid disabling, this also helps us know basic numbers
# on how many people are using Processing)
-update.check = true
+update.check = false
# on windows, automatically associate .pde files with processing.exe
platform.auto_file_type_associations = true
@@ -93,7 +93,7 @@ editor.font=Monospaced,plain,12
editor.font.macosx = Monaco,plain,10
# anti-aliased text, turned off by default
-editor.antialias=false
+editor.antialias=true
# color to be used for background when 'external editor' enabled
editor.external=false
@@ -105,7 +105,7 @@ editor.caret.blink=true
editor.invalid=false
# show line numbers in editor
-editor.linenumbers = false
+editor.linenumbers = true
# enable ctrl-ins, shift-ins, shift-delete for cut/copy/paste
# on windows and linux, but disable on the mac
@@ -231,10 +231,10 @@ preproc.output_parse_tree = false
preproc.imports.list = java.applet.*,java.awt.Dimension,java.awt.Frame,java.awt.event.MouseEvent,java.awt.event.KeyEvent,java.awt.event.FocusEvent,java.awt.Image,java.io.*,java.net.*,java.text.*,java.util.*,java.util.zip.*,java.util.regex.*
# set the browser to be used on linux
-browser.linux = mozilla
+browser.linux = open
# set to the program to be used for launching apps on linux
-#launcher.linux = xdg-open
+launcher.linux = open
# FULL SCREEN (PRESENT MODE)
run.present.bgcolor = #666666
@@ -262,4 +262,4 @@ serial.debug_rate=9600
# I18 Preferences
# default chosen language (none for none)
-editor.languages.current =
\ No newline at end of file
+editor.languages.current =
--
2.2.2
From 6257c16738ed12e9ce6f94c63840f6df2036bd37 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sat, 11 Apr 2015 21:17:06 +1000
Subject: Set command for launcher and browser
diff --git a/lib/preferences.txt b/lib/preferences.txt
index dc5c6d5..43232ee 100644
--- a/lib/preferences.txt
+++ b/lib/preferences.txt
@@ -230,11 +230,11 @@ preproc.output_parse_tree = false
# Changed after 1.0.9 to a new name, and also includes the specific entries
preproc.imports.list = java.applet.*,java.awt.Dimension,java.awt.Frame,java.awt.event.MouseEvent,java.awt.event.KeyEvent,java.awt.event.FocusEvent,java.awt.Image,java.io.*,java.net.*,java.text.*,java.util.*,java.util.zip.*,java.util.regex.*
-# set the browser to be used on linux
-browser.linux = open
+# set the browser
+browser = /bin/open
-# set to the program to be used for launching apps on linux
-launcher.linux = open
+# set to the program to be used for launching apps
+launcher = /bin/open
# FULL SCREEN (PRESENT MODE)
run.present.bgcolor = #666666
@@ -253,7 +253,7 @@ programmer = arduino:avrispmkii
upload.using = bootloader
upload.verify = true
-serial.port=COM1
+serial.port=/dev/ports/usb0
serial.databits=8
serial.stopbits=1
serial.parity=N
--
2.2.2
From 6f6db32b7c2febb15cde8b3b120145edef1eeab7 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sat, 11 Apr 2015 22:01:23 +1000
Subject: Add Haiku launcher
diff --git a/haiku/MainApp.cpp b/haiku/MainApp.cpp
new file mode 100644
index 0000000..91b77c8
--- /dev/null
+++ b/haiku/MainApp.cpp
@@ -0,0 +1,197 @@
+#include <Application.h>
+#include <String.h>
+#include <Resources.h>
+#include <Roster.h>
+#include <Mime.h>
+#include <Path.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+#include "MainApp.h"
+#define APPSIGNATURE "application/x-vnd.ArduinoIDE"
+#define TARGET "Arduino"
+
+SimpleLauncherApp::SimpleLauncherApp(int argc, char **argv) : BApplication(APPSIGNATURE)
+{
+ InstallMimeType(APPSIGNATURE, "text/x-processing", "Proecssing source code", "pde");
+}
+
+SimpleLauncherApp::~SimpleLauncherApp()
+{
+
+}
+
+
+BPath
+SimpleLauncherApp::MyPath(const char *dir)
+{
+ app_info inf;
+ be_app->GetAppInfo(&inf);
+ BPath bpath = BPath(&(inf.ref));
+ BPath par;
+ bpath.GetParent(&par);
+ par.Append(dir);
+ return(par);
+}
+
+void
+SimpleLauncherApp::RefsReceived(BMessage *pmsg)
+{
+ if (pmsg->HasMessenger("TrackerViewToken")) {
+ pmsg->FindMessenger("TrackerViewToken", &fTrackerMessenger);
+ }
+
+ uint32 type;
+ int32 count;
+ status_t ret = pmsg->GetInfo("refs", &type, &count);
+ if (ret != B_OK || type != B_REF_TYPE)
+ return;
+
+ entry_ref ref;
+ for (int32 i = 0; i < count; i++) {
+ if (pmsg->FindRef("refs", i, &ref) == B_OK)
+ {
+ BPath file=BPath(&ref);
+ char temp[1024];
+ sprintf(temp,"%s//%s \"%s\" &",MyPath("").Path(), TARGET, file.Path());
+ system(temp);
+ Quit();
+ }
+ }
+}
+
+
+void
+SimpleLauncherApp::ArgvReceived(int32 argc, char **argv)
+{
+ BMessage *pmsg = NULL;
+ for (int32 i = 1; i < argc; i++) {
+ entry_ref ref;
+ status_t err = get_ref_for_path(argv[i], &ref);
+ if (err == B_OK) {
+ if (!pmsg) {
+ pmsg = new BMessage;
+ pmsg->what = B_REFS_RECEIVED;
+ }
+ pmsg->AddRef("refs", &ref);
+ }
+ }
+ if (pmsg) {
+ RefsReceived(pmsg);
+ delete pmsg;
+ }
+}
+
+void
+SimpleLauncherApp::ReadyToRun()
+{
+ char temp[1024];
+ sprintf(temp,"%s//%s &",MyPath("").Path(), TARGET);
+ system(temp);
+ Quit();
+}
+
+void
+SimpleLauncherApp::InstallMimeType(const char *app, const char *mimetxt, const char *text, const char *ext)
+{
+ // install mime type of documents
+ BMimeType mime(mimetxt);
+ status_t ret = mime.InitCheck();
+ if (ret != B_OK) {
+ fprintf(stderr, "Could not init native document mime type (%s): %s.\n",
+ mimetxt, strerror(ret));
+ return;
+ }
+
+ ret = mime.Install();
+ if (ret != B_OK && ret != B_FILE_EXISTS) {
+ fprintf(stderr, "Could not install native document mime type (%s): %s.\n",
+ mimetxt, strerror(ret));
+ return;
+ }
+ // set preferred app
+ ret = mime.SetPreferredApp(app);
+ if (ret != B_OK) {
+ fprintf(stderr, "Could not set native document preferred app: %s\n",
+ strerror(ret));
+ }
+
+ // set descriptions
+ ret = mime.SetShortDescription(text);
+ if (ret != B_OK) {
+ fprintf(stderr, "Could not set short description of mime type: %s\n",
+ strerror(ret));
+ }
+ ret = mime.SetLongDescription(text);
+ if (ret != B_OK) {
+ fprintf(stderr, "Could not set long description of mime type: %s\n",
+ strerror(ret));
+ }
+
+ // set extensions
+ BMessage message;
+
+ char extn[128];
+ char *extptr = extn, *ptr;
+
+ for( ptr = (char*)ext; *ptr!=0; ptr++){
+ *extptr=*ptr;
+ if(*(ptr+1)==' ' || *(ptr+1)==0) {
+ *(extptr+1)=0;
+ message.AddString("extensions", extn);
+ extptr = extn;
+ if(*(ptr+1)==' ')
+ ptr++;
+ continue;
+ }
+ extptr++;
+ }
+ ret = mime.SetFileExtensions(&message);
+ if (ret != B_OK) {
+ fprintf(stderr, "Could not set extensions of mime type: %s\n",
+ strerror(ret));
+ }
+
+/* // set sniffer rule
+ char snifferRule[32];
+ ret = mime.SetSnifferRule("0.50 (\"MZ\")");
+ if (ret != B_OK) {
+ BString parseError;
+ BMimeType::CheckSnifferRule(snifferRule, &parseError);
+ fprintf(stderr, "Could not set sniffer rule of mime type: %s\n",
+ parseError.String());
+ }*/
+
+ // set mime icon
+ BResources* resources = be_app->AppResources();
+ // does not need to be freed (belongs to BApplication base)
+ if (resources != NULL) {
+ size_t size;
+ BString iconame("BEOS:");
+ iconame.Append(mimetxt);
+ const void* iconData = resources->LoadResource('VICN', iconame.String(), &size);
+ if (iconData != NULL && size > 0) {
+ if (mime.SetIcon(reinterpret_cast<const uint8*>(iconData), size)
+ != B_OK) {
+ fprintf(stderr, "Could not set vector icon of mime type.\n");
+ }
+ } else {
+ fprintf(stderr, "Could not find icon in app resources "
+ "(data: %p, size: %ld).\n", iconData, size);
+ }
+ } else
+ fprintf(stderr, "Could not find app resources.\n");
+}
+
+
+int main(int argc, char **argv)
+{
+ SimpleLauncherApp application(argc,argv);
+ application.Run();
+ return 0;
+}
+
+
diff --git a/haiku/MainApp.h b/haiku/MainApp.h
new file mode 100644
index 0000000..1199bec
--- /dev/null
+++ b/haiku/MainApp.h
@@ -0,0 +1,24 @@
+#ifndef DOSBOXLAUNCHER_H
+#define DOSBOXLAUNCHER_H
+
+#include <Application.h>
+#include <String.h>
+#include <Resources.h>
+#include <Roster.h>
+#include <Mime.h>
+#include <Path.h>
+
+class SimpleLauncherApp : public BApplication {
+ public:
+ SimpleLauncherApp(int argc, char **argv);
+ ~SimpleLauncherApp();
+ void RefsReceived(BMessage *pmsg);
+ void ArgvReceived(int32 argc, char **argv);
+ virtual void ReadyToRun();
+ void InstallMimeType(const char *app, const char *mimetxt, const char *text, const char *ext);
+ BPath MyPath(const char *dir);
+ BMessenger fTrackerMessenger;
+};
+
+
+#endif
diff --git a/haiku/Makefile b/haiku/Makefile
new file mode 100644
index 0000000..a1aa13e
--- /dev/null
+++ b/haiku/Makefile
@@ -0,0 +1,16 @@
+CFLAGS=
+LIBS=-lroot -lbe -ltranslation
+CC=g++
+OBJS = MainApp.o
+
+all: Arduino
+
+Arduino: $(OBJS)
+ $(CC) -o "Arduino IDE" $^ $(LIBS)
+ xres -o "Arduino IDE" pics.rsrc
+
+.cpp.o:
+ $(CC) $(CFLAGS) -c $^
+
+clean:
+ rm -f "Arduino IDE" $(OBJS)
diff --git a/haiku/pics.rsrc b/haiku/pics.rsrc
new file mode 100644
index 0000000000000000000000000000000000000000..c8c5e364d1c7be9920682046553d598ba639e434
GIT binary patch
literal 14297
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
literal 0
HcmV?d00001
--
2.2.2
From 72b78888548786e271e8d9dca526ffe9f3703eb2 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sat, 11 Apr 2015 22:59:15 +1000
Subject: Fix haiku launcher
diff --git a/haiku/MainApp.cpp b/haiku/MainApp.cpp
index 91b77c8..4518f05 100644
--- a/haiku/MainApp.cpp
+++ b/haiku/MainApp.cpp
@@ -12,11 +12,11 @@
#include "MainApp.h"
#define APPSIGNATURE "application/x-vnd.ArduinoIDE"
-#define TARGET "Arduino"
+#define TARGET "arduino.sh"
SimpleLauncherApp::SimpleLauncherApp(int argc, char **argv) : BApplication(APPSIGNATURE)
{
- InstallMimeType(APPSIGNATURE, "text/x-processing", "Proecssing source code", "pde");
+// InstallMimeType(APPSIGNATURE, "text/x-processing", "Proecssing source code", "pde");
}
SimpleLauncherApp::~SimpleLauncherApp()
diff --git a/haiku/pics.rsrc b/haiku/pics.rsrc
index c8c5e364d1c7be9920682046553d598ba639e434..3eba999c1f54146a23ea059fd33bf77b19223a5e 100644
GIT binary patch
delta 458
zcmcbazde7#0ajNt28O(eNA;Z!u`+;xral9MEQHD624u59*<L{Q3ML5WlOY4cEoKP&
zj41;{C78L{k1>gD;slA!8`yU%Zk}s!h;?$drmx0~G#QB*zA_RSYi3nRwR-`T3P~&g
zid6vlm2F-OEKNrk71qwGn*2ahqkcoZELalcf{Ch&89|aDOGVbtstQnn@Ih*B05zw|
zEe2}@X?_9Zy8-z<b*W%6MxdTwvIu?#P|arB6tEn~JP>~ckPk8!q(4JiTH>2ciXzy6
z2B6@92eJ|dK3f=LfNZEw876scVVtO_A_C%905x5-NnsSo5|sd{-~3Q3m~peQ&VOb`
z*~!KR>bf8ohyyVQ{0D-P%7WBl24NttB(<VMze2Y-zqBYhRW~_5C6!@vyjce;$XJ%i
zYt2<SgMB@HLHb!I|1eWxWScB)uENMZ*}+_mkz;bYxjZB1<aTpej!D_KdVq=;06-Rn
Ang9R*
delta 525
zcmdm<e=~o=0oG_U28ODMNA;a#86coVlYxN+%I*NNS1>_1209E3x0oSpE&~RJeyEz6
zK=vV45NER=V-nlM2@;z(u<ur!tgG*<k-_63G2^Yf#Eiwcg;LkAGB7mQN)!OaRsi{x
z*RC?KD48$@EXggLyhvZ8-r%<fSkf41)WoAgj37yn-7d>=3j>Zo_#ibLKn<z;guog>
znk9hP4ao0_^8$;3^!(b3;LiZcZ<h6h%YpbSfPApIKsLu5H;HdDo{C@tHUKSKk>e*}
z@J5-j2grtaIJa=pD`m!siYg)?{tBR`i!z>!0<Rn-K<YPdG;n2{Xu!Yuo8doZM&rp}
zP1UtQj?e{S5cm%SC6xuK#SB6~UP)?2iGGD{K~a8kYH@L9UixH1Gl|XFnuk~?dzy6!
zf)s;5u&<{tBTzZZWM*?EM%Kw{<|>SAlfBK=+}VMmTntXG{=rtB&i;O2<3T#y-Gjk8
qIDqm35P3IGAJ_Ph$N<-1xGFzq&oGcDI455-Q{k|E|34kbVE_Pt!J_2=
--
2.2.2
From 133604bed863e244a398cad93508a353eee42c0d Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 29 May 2015 19:44:17 +1000
Subject: Add mime for ino file to resource
diff --git a/haiku/pics.rsrc b/haiku/pics.rsrc
index 3eba999c1f54146a23ea059fd33bf77b19223a5e..e95f65a322ab81f33967581118f31c6b66bfb0f7 100644
GIT binary patch
delta 1763
zcmZvcdr(wW9LLYS`(Rm6z<6wqV2};3F&9B_z>pA-^??e5k8mbRaUdH6gUKeQTa3|`
znk-BdlR85rLs~@c!Y+I7-g95e^2o7pQYy-s#tO;?`$G{^w)4AaPBYw@GxvOd=XZYh
zp6};3$9d@J>w(232%*qzc}82HQ#YA~&__1!!6nB@5T4!X2sP_qW-p>%)Z3ba?Y#lM
z_~aye?VInHnQqpVnYzi`alf5HHAN;XiMfalBf7l)9#x)fuWkKgRRVKlVwbvTCY8?q
z{DZnklX>1sd+q+8<~8J)$cEUfM3Xm+1Ttu%PYr&l#>Oj(P5oCM>2An-r$=3bdZ0^*
zhPtqSGVVE3TT@T0THrVd_L3n+-k@NvAsfiSYM+j{LD^zggoAdGO|?xul!@D6f?WGo
z=6uR#4zb@(nbT0_)>~`h6W~Khu$4T1^3=UnQ}GH4A*!z8NZqO<D_=OgzrL#aP-{xM
ziK*UKbs&I7dd=FgnRVap!;KfRj()b;y1lSw82P8qdi?hUzyD6Nj-n|&oo!j6Rz>U1
zowMYiO=i^aw^Q#YIa;cPMv-)8X_s3{T)(I@`-7$e>CcTFR}ketqoLYPY3|R>Me6lE
zL5?82HC66$?iCMvrUzT66L&K?p1xEAos!F^aT)`imM2_icNpl50%6=!Z=f>^r5aD4
zfqrJw7Ehyr&e@_E@UJM47wmt)5XbDF`nLA>DgQXm54&9AXff7~u3^6)Z4iGO`q-x(
zc~$vl5D#aH$)jOP(8z$NeYC|{=Ib2zaU|0*<IQkHGklR<5HC1hW|LfJ`V0G)y3Fq9
z9cppT>M+4aXak$UzT}ByO9qPAdS@2@ozu$Q?7t-Z;?9??t{mCO9o&pvVldw>jSKdT
zN~+u??UKFQ<u8UZgbltaDSoJpukd!U1HM|WT&{KxVHY1POmUC%nBk5g9lL~^g27$n
z`uX4SyL>YL1fMEKy8EPMoK^a8z$9LBP4eZgNPKyq#M1(~?j&vw-n7=8j$_$Hc)8n*
zE8T1Gj5`hYvSIixH-cx_zwjLnV+ZHPaoqLw>~$QCbn<0x3WoP>?mRO%D1`V{@_Ppx
z#1rx!X_@l1WR*h1i^6;Or1+HZxtPdXAX(b(Q8&`TawCZh^9Ax7{7IR?F+`8cYw?p(
zH;ygDF;XY4B-7hc7w#>@cS**qoPlr4$Aw(^q%a{@38&>T;hM5jm{7t6=9*F_*p%IP
zRw)(ol@5H%YsNFmB%bw>V~}~AcQvk5rf{^f2gi{0IHi;yS9b9hWe?x1gz$MN5b!)i
z1kUo9I|lB8<KQ;94kUmA&;URL4lu$D;YOGNI-p5N0#JYqfB`gA2JrBHgbM5jB!C03
z04l%)xKxA$A7Fflbsp72*TGEH;6#SEfXm=KxDM_E5ugE79=Huo6UWtKlOwA~2RpzD
zVhPv;7J*e@A6N$#s<skKRcpa-usU40rg9(*2n*)43JBm3NWhIS19U(WP!gglWC9pK
z&$k=28nhg=74#HoE$BArH0U_!Lg+x~#KlGpO>2;mqNq?R>L}70X^H}gRLN+Kh(gGy
z)#|kdqbb5qMZHCG9!L~HMKyxd1P18-Th!4(!E`ngJbxW!cg$LrFD<-UZPd|=7B3tR
z30)|z*Mu#}eQd!MDtzH^!~$WvCH(-kx@d!Cr<VMYk&JMZo4>6j^Zz%ldL6@+{OrUX
H8~pmeEZROM
delta 355
zcmZpv-k#4H6wJWDAmH!9IgxWatE(9UL*B%r*-VuTo9!5j*d|Wk*}Q@MxVkn_&5Se|
zi5b2!5*ce|RY|pb0Y!u)768R6fc(lfF9w#TBa8}bXH`vJq_0uGp<Wg&DGO9KQFSpR
zNRkQ27Fj>5DnJFo2dTLM)SN1}7_1Sb`2~>g2ITkDrGmv6fqH()BKR3VHJfcyz;Yn-
zK>QUzKFC~<{tRhpiElP3ieLj8fPx1e$VwRaY+;N6vYCMzKwy&B7RHH+Dk30$1yIvP
zn-oTYEKv!N`pp{+Tp1@C@NfQR_>Y-UcJfzKbzP7n#6cQ?;6D(QR2HNbGYA8DC8-r9
g`W3px`K3k4sk+JeDX9#b-&m(Ha!ks;)dNxv02=yrv;Y7A
--
2.2.2