Skip to content

Instantly share code, notes, and snippets.

@monkstone
Last active July 24, 2017 02:13
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save monkstone/7438749 to your computer and use it in GitHub Desktop.
Save monkstone/7438749 to your computer and use it in GitHub Desktop.
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
Copy link
Author

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

@jkisor
Copy link

jkisor commented Feb 10, 2014

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

@monkstone
Copy link
Author

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

@monkstone
Copy link
Author

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

@monkstone
Copy link
Author

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
Copy link

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
Copy link

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

@prometheus1987
Copy link

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