summaryrefslogtreecommitdiffstats
path: root/Project/ControlEditor.cpp
diff options
context:
space:
mode:
authorThales1330 <thaleslima.ufu@gmail.com>2017-01-27 19:57:18 -0200
committerThales1330 <thaleslima.ufu@gmail.com>2017-01-27 19:57:18 -0200
commit10bb7105946bc0a892a9daf42ec5181ad9994fcf (patch)
tree5b27234c7b0c9ababde2a1dcca2d95c5149770cc /Project/ControlEditor.cpp
parent15df77aa461ecea7344cce5e736ebee9fb943a9b (diff)
downloadPSP.git-10bb7105946bc0a892a9daf42ec5181ad9994fcf.tar.gz
PSP.git-10bb7105946bc0a892a9daf42ec5181ad9994fcf.tar.xz
PSP.git-10bb7105946bc0a892a9daf42ec5181ad9994fcf.zip
several control elements methods implemented
Node position buggy
Diffstat (limited to 'Project/ControlEditor.cpp')
-rw-r--r--Project/ControlEditor.cpp46
1 files changed, 35 insertions, 11 deletions
diff --git a/Project/ControlEditor.cpp b/Project/ControlEditor.cpp
index 03cbfdf..80c0813 100644
--- a/Project/ControlEditor.cpp
+++ b/Project/ControlEditor.cpp
@@ -273,18 +273,30 @@ void ControlEditor::OnLeftClickDown(wxMouseEvent& event)
m_mode = MODE_EDIT;
} else {
for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {
- Element* element = *it;
-
- // Set movement initial position (not necessarily will be moved).
- element->StartMove(m_camera->ScreenToWorld(clickPoint));
-
- // Click in an element.
- if(element->Contains(m_camera->ScreenToWorld(clickPoint))) {
- if(!foundElement) {
- element->SetSelected();
+ ControlElement* element = *it;
+ bool foundNode = false;
+ auto nodeList = element->GetNodeList();
+ for(auto itN = nodeList.begin(), itNEnd = nodeList.end(); itN != itNEnd; ++itN) {
+ Node node = *itN;
+ if(node.Contains(m_camera->ScreenToWorld(clickPoint))) {
+ wxLogMessage("Node click!");
+ foundNode = true;
foundElement = true;
}
- m_mode = MODE_MOVE_ELEMENT;
+ }
+
+ if(!foundNode) {
+ // Set movement initial position (not necessarily will be moved).
+ element->StartMove(m_camera->ScreenToWorld(clickPoint));
+
+ // Click in an element.
+ if(element->Contains(m_camera->ScreenToWorld(clickPoint))) {
+ if(!foundElement) {
+ element->SetSelected();
+ foundElement = true;
+ }
+ m_mode = MODE_MOVE_ELEMENT;
+ }
}
}
}
@@ -368,7 +380,7 @@ void ControlEditor::OnMouseMotion(wxMouseEvent& event)
switch(m_mode) {
case MODE_INSERT: {
Element* newElement = *(m_elementList.end() - 1); // Get the last element in the list.
- newElement->SetPosition(m_camera->ScreenToWorld(clickPoint));
+ newElement->Move(m_camera->ScreenToWorld(clickPoint));
redraw = true;
} break;
case MODE_DRAG:
@@ -424,3 +436,15 @@ void ControlEditor::OnScroll(wxMouseEvent& event)
Redraw();
}
+void ControlEditor::OnIdle(wxIdleEvent& event)
+{
+ // Solve wxGLString bug.
+ if(m_firstDraw) {
+ TransferFunction* tf = new TransferFunction();
+ m_elementList.push_back(tf);
+ Redraw();
+ m_elementList.pop_back();
+ delete tf;
+ m_firstDraw = false;
+ }
+}