initial
This commit is contained in:
124
build/application.linux64/source/ui.pde
Normal file
124
build/application.linux64/source/ui.pde
Normal file
@@ -0,0 +1,124 @@
|
||||
/**
|
||||
* Keys only get caught for changing a nodes title.
|
||||
* Previous title is remembered in savedTitle and restored when hitting Escape
|
||||
*/
|
||||
String savedTitle;
|
||||
void keyPressed() {
|
||||
if (key == ESC) {
|
||||
key = 0;
|
||||
}
|
||||
if (i_selectedNode != -1) {
|
||||
if (keyCode == BACKSPACE) {
|
||||
if (nodes[i_selectedNode].title.length() > 0) {
|
||||
nodes[i_selectedNode].title = nodes[i_selectedNode].title.substring(0, nodes[i_selectedNode].title.length()-1);
|
||||
nodes[i_selectedNode].refreshSize();
|
||||
}
|
||||
} else if (keyCode == DELETE) {
|
||||
deleteSelectedNode();
|
||||
} else if (keyCode == ESC) {
|
||||
nodes[i_selectedNode].title = savedTitle;
|
||||
nodes[i_selectedNode].refreshSize();
|
||||
deselect();
|
||||
} else if (keyCode == RETURN || keyCode == ENTER) {
|
||||
deselect();
|
||||
} else if (keyCode != SHIFT && keyCode != RETURN && keyCode != ENTER && keyCode != CONTROL) {
|
||||
nodes[i_selectedNode].title = nodes[i_selectedNode].title + key;
|
||||
nodes[i_selectedNode].refreshSize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void mousePressed() {
|
||||
if (mouseButton == LEFT) {
|
||||
/**
|
||||
* Either press a button...
|
||||
*/
|
||||
boolean buttonClicked = false;
|
||||
for (int i = 0; i < buttons.length; i++) {
|
||||
if (buttons[i].hover()) {
|
||||
buttons[i].click();
|
||||
//Not able to break out of here without using a flag
|
||||
buttonClicked = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!buttonClicked) {
|
||||
for (int i = 0; i < nodeCount; i++) {
|
||||
/**
|
||||
* ...or select / drag a node...
|
||||
*/
|
||||
if (nodes[i].hover()) {
|
||||
i_selectedNode = i;
|
||||
savedTitle = nodes[i].title;
|
||||
nodes[i].drag = true;
|
||||
nodes[i].dragMouseStartPoint.x = mouseX;
|
||||
nodes[i].dragMouseStartPoint.y = mouseY;
|
||||
break;
|
||||
}
|
||||
/**
|
||||
* ...or pull a new link out of an inlet or outlet.
|
||||
*/
|
||||
else if (nodes[i].hoverInlet()) {
|
||||
dragLink = true;
|
||||
dragOriginLet = -1;
|
||||
dragOriginId = i;
|
||||
} else if (nodes[i].hoverOutlet()) {
|
||||
dragLink = true;
|
||||
dragOriginLet = 1;
|
||||
dragOriginId = i;
|
||||
}
|
||||
|
||||
//deselecting the shit out of this for reasons I don't remember, no care to improve right now
|
||||
deselect();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create links
|
||||
*/
|
||||
void mouseReleased() {
|
||||
for (int i = 0; i < nodeCount; i++) {
|
||||
nodes[i].drag = false;
|
||||
if (dragLink && dragOriginId != i) {
|
||||
if (nodes[i].hoverInlet() && dragOriginLet == 1) {
|
||||
|
||||
Link(dragOriginId, i);
|
||||
}
|
||||
if (nodes[i].hoverOutlet() && dragOriginLet == -1) {
|
||||
|
||||
Link(i, dragOriginId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset drag&drop states
|
||||
*/
|
||||
dragLink = false;
|
||||
dragOriginLet = 0;
|
||||
dragOriginId = -1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Scaling is tied to textSize. Having the UI on a seperate PGraphics would be better, but it's good enough for now
|
||||
*/
|
||||
int zoomDelta = 3;
|
||||
void mouseWheel(MouseEvent event) {
|
||||
float zoom = event.getAmount();
|
||||
if (zoom < 0) {
|
||||
textSize += zoomDelta;
|
||||
} else if (zoom > 0) {
|
||||
if (textSize - zoomDelta > 0) {
|
||||
textSize -= zoomDelta;
|
||||
}
|
||||
}
|
||||
padding = textSize/3*2;
|
||||
for (int i = 0; i < nodeCount; i++) {
|
||||
nodes[i].refreshSize();
|
||||
nodes[i].setVectors();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user