Skip to content

Instantly share code, notes, and snippets.

@monkstone monkstone/.rp5rc

Last active Jul 24, 2017
Embed
What would you like to do?
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

This comment has been minimized.

Copy link
Owner Author

monkstone commented Nov 27, 2013

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

@jkisor

This comment has been minimized.

Copy link

jkisor commented Feb 10, 2014

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

@monkstone

This comment has been minimized.

Copy link
Owner Author

monkstone commented Mar 19, 2014

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

@monkstone

This comment has been minimized.

Copy link
Owner Author

monkstone commented May 19, 2014

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

@monkstone

This comment has been minimized.

Copy link
Owner Author

monkstone commented Jul 26, 2014

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

This comment has been minimized.

Copy link

JimmStout commented Jan 11, 2015

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

This comment has been minimized.

Copy link

jzanutto commented Jul 15, 2015

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

@sabsowitz

This comment has been minimized.

Copy link

sabsowitz commented May 16, 2016

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
You can’t perform that action at this time.