Skip to content
Create a gist now

Instantly share code, notes, and snippets.

@monkstone /.rp5rc
Last active May 16, 2016

YAML configuration file for ruby-processing
#RP5_HOME: "" # windoes users should set this
PROCESSING_ROOT: "/usr/share/processing" # Works for ArchLinux
#PROCESSING_ROOT: "/home/tux/processing-2.2.1" # Other linux distros with user tux
#PROCESSING_ROOT: "/Applications/Processing.app/Contents/Java" # Path for Mac
#PROCESSING_ROOT: "C:\Java\processing-2.2.1" # if you follow PhiLhos suggestion for windoes
import java.io.File;
Button enter, nojruby;
String processingRoot = "enter your processing root here"; // edit this line in the sketch
String done = "Done";
String OS = System.getProperty("os.name").toLowerCase();
String home, suggestion, separator, root;
PFont font;
float rectX, rectX2, rectY; // Position of buttons
float rectHeight = 30; // height of rect
float rectWidth = 90; // width of rect
int rectColor, rectColor2;
int rectHighlight, rectHighlight2;
int currentColor;
int selectedColor;
boolean acceptOver = false;
boolean noJruby = false;
boolean selected = false;
boolean no_jruby = false;
// The JSON object
JSONObject json;
void setup() {
size(600, 200);
home = System.getProperty("user.home");
File f = new File(home);
json = new JSONObject();
root = f.getParent();
separator = System.getProperty("file.separator");
font = createFont("Helvetica", 18);
if (OS.contains("mac")) {
suggestion = "/Applications/Processing.app/Contents/Resources/Java";
} else {
suggestion = home + separator + "processing-2.2.1";
}
rectColor = color(140);
rectColor2 = color(140);
rectHighlight = color(100);
rectHighlight2 = color(100);
selectedColor = color(0);
rectX = rectWidth + 20;
rectX2 = rectWidth + 150;
rectY = height * 0.8 - rectHeight / 4;
enter = new Button(rectX2, rectY, rectWidth, rectHeight, "enter");
nojruby = new Button(rectX, rectY, rectWidth, rectHeight, "nojruby");
}
void draw() {
background(200);
fill(0, 0, 200);
text("Suggestion:", 35, 28);
text(suggestion, 35, 56);
textFont(font, 18);
fill(255, 0, 0);
// this adds a blinking cursor after your text, at the expense of redrawing everything every frame
text(processingRoot + (frameCount / 10 % 2 == 0 ? "_" : ""), 35, 100);
fill(0, 0, 200);
text("Select nojruby to use jruby-complete by default", 35, 140);
update(mouseX, mouseY);
//background(200);
if (acceptOver) {
enter.draw(rectHighlight);
nojruby.draw(rectHighlight2);
} else {
enter.draw(rectColor);
nojruby.draw(rectColor2);
}
}
void writeRoot() {
rectColor = selectedColor;
rectHighlight = selectedColor;
json.setString("PROCESSING_ROOT", processingRoot);
json.setBoolean("JRUBY", !no_jruby);
json.setInt("X_OFF", floor(displayWidth * 0.1));
json.setInt("Y_OFF", floor(displayHeight * 0.1));
// to explictly set sketchbook path un-comment line below
// replacing 'location' = [File][Preferences][Sketchbook Location:]
// json.setString("sketchbook_path", "location");
saveJSONObject(json, home + separator + ".rp5rc");
processingRoot = done;
}
void keyReleased() {
if (key != CODED) {
switch (key) {
case BACKSPACE:
processingRoot = processingRoot.substring(0, max(0, processingRoot.length() - 1));
break;
case ENTER: // save the processing root to the config file
case RETURN:
writeRoot();
break;
case ESC:
case DELETE:
break;
default:
processingRoot += key;
}
}
}
void update(float x, float y) {
acceptOver = enter.overRect();
noJruby = nojruby.overRect();
}
void mouseClicked() {
update(mouseX, mouseY);
if (acceptOver) {
rectColor = selectedColor;
rectHighlight = selectedColor;
writeRoot();
}
if (noJruby) {
rectColor2 = selectedColor;
rectHighlight2 = selectedColor;
no_jruby = true;
}
}
class Button {
float x, y, w, h;
String text;
Button(float x, float y, float w, float h, String text) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
this.text = text;
}
void draw(int col) {
fill(col);
rect(x, y, w, h, 20, 20, 20, 20);
fill(255);
text(text, x + 8, y + 20);
}
boolean overRect() {
return (mouseX >= x && mouseX <= x + w
&& mouseY >= y && mouseY <= y + h);
}
}
@monkstone
Owner

SetProcessingRoot.pde generates .rp5rc for your system, using an installed processing ide which you need!!!

@jkisor
jkisor commented Feb 10, 2014

Correction: The Mac PROCESSING_ROOT is '/Applications/Processing.app/Contents/Java'

@monkstone
Owner

Changed after seeing @jkisor note was /Applications/Processing.app/Contents/Resources/Java

@monkstone
Owner

Updated to latest version of processing-2.2, if I forget to do this you will know what to do?

@monkstone
Owner

Updated for ruby-processing-2.6.2, also make use of processing JSONObject (JSON is a subset of yaml after-all). Added commented out ability to set sketchbook. Corrected JRUBY logic false/true.

@JimmStout

Hi! The .rp5rc file that was generated for me (Mac) didn't work initially! The line:

"JRUBY": false,

had to be changed to

"JRUBY": "false",

Seems to be no problem now!

@jzanutto

PROCESSING_ROOT suggestion is still incorrect. It should be "/Applications/Processing.app/Contents/Java"

@sabsowitz

What is the file path for the .rp5rc file?
I ran configRP5 and entered the processing root, but I still am receiving NameError: PApplet not found in packages processing.core; last error: cannot load Java class processing.core.PApplet error. I'm not sure what to do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.